[asterisk-dev] ast_read and frames of type AST_FRAME_NULL?
Bryan Field-Elliot
bryan+asterisk-dev at nextalarm.com
Tue Jun 22 17:58:00 CDT 2010
We have a custom app (for Asterisk 1.6.2.6) which needs to wait for certain events on a SIP channel.
Our code, briefly, looks like the following:
for (;;) {
r = ast_waitfor(chan, 100)
if (r < 0) break;
frame = ast_read(chan);
if (frame->frametype == AST_FRAME_NULL) {
usleep(10);
continue;
}
}
What we are finding is that under normal load, we get hundreds of AST_FRAME_NULL's out of ast_read, and it would be in the hundreds of thousands if not for the usleep() command to yield some cycles to other threads.
My question for the group is -- what are we doing wrong? It seems like lots of CPU cycles are being wasted here, creating and then discarding AST_FRAME_NULL's. Do they serve a hidden purpose? If not, is there something else we can do to have ast_waitfor and ast_read truly only return when they have some interesting data to tell us about?
Thank you,
Bryan
More information about the asterisk-dev
mailing list