Not having this epoll specific code in wait_for_answer was causing app_queue to infin...
authorMark Michelson <mmichelson@digium.com>
Wed, 5 Sep 2007 21:59:52 +0000 (21:59 +0000)
committerMark Michelson <mmichelson@digium.com>
Wed, 5 Sep 2007 21:59:52 +0000 (21:59 +0000)
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

apps/app_queue.c

index fde4838..6054670 100644 (file)
@@ -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;
 }