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
1.6.0
Mark Michelson 18 years ago
parent 9169ac8ef4
commit e9548619cf

@ -2042,8 +2042,15 @@ static struct callattempt *wait_for_answer(struct queue_ent *qe, struct callatte
char membername[80] = "";
long starttime = 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;
}

Loading…
Cancel
Save