From: Mark Michelson Date: Wed, 5 Sep 2007 21:59:52 +0000 (+0000) Subject: Not having this epoll specific code in wait_for_answer was causing app_queue to infin... X-Git-Tag: 1.6.0-beta1~3^2~1518 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=e9548619cf0fb42fba6892f3ac8601c88c37e66f;p=thirdparty%2Fasterisk.git Not having this epoll specific code in wait_for_answer was causing app_queue to infinitely loop. This makes it so it doesn't. Thanks to file for pointing out where the problem was and showing a similar function in app_dial as an example of how to fix it. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@81632 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/apps/app_queue.c b/apps/app_queue.c index fde4838950..6054670a65 100644 --- a/apps/app_queue.c +++ b/apps/app_queue.c @@ -2041,9 +2041,16 @@ static struct callattempt *wait_for_answer(struct queue_ent *qe, struct callatte char on[80] = ""; char membername[80] = ""; long starttime = 0; - long endtime = 0; + long endtime = 0; +#ifdef HAVE_EPOLL + struct callattempt *epollo; +#endif starttime = (long) time(NULL); +#ifdef HAVE_EPOLL + for (epollo = outgoing; epollo; epollo = epollo->q_next) + ast_poll_channel_add(in, epollo->chan); +#endif while (*to && !peer) { int numlines, retry, pos = 1; @@ -2248,6 +2255,11 @@ static struct callattempt *wait_for_answer(struct queue_ent *qe, struct callatte rna(orig, qe, on, membername); } +#ifdef HAVE_EPOLL + for(epollo = outgoing; epollo; epollo = epollo->q_next) + ast_poll_channel_del(in, epollo->chan); +#endif + return peer; }