All pastes #58876 Raw Edit

Miscellany

public text v1 · immutable
#58876 ·published 2006-05-25 19:33 UTC
rendered paste body
Index: res/res_agi.c
===================================================================
--- res/res_agi.c       (revision 30337)
+++ res/res_agi.c       (working copy)
@@ -1799,6 +1799,7 @@
        /* how many times we'll retry if ast_waitfor_nandfs will return without either
          channel or file descriptor in case select is interrupted by a system call (EINTR) */
        int retry = RETRY;
+       int changone = 0;

        if (!(readf = fdopen(agi->ctrl, "r"))) {
                ast_log(LOG_WARNING, "Unable to fdopen file descriptor\n");
@@ -1811,7 +1812,7 @@
        setup_env(chan, request, agi->fd, (agi->audio > -1));
        for (;;) {
                ms = -1;
-               c = ast_waitfor_nandfds(&chan, dead ? 0 : 1, &agi->ctrl, 1, NULL, &outfd, &ms);
+               c = ast_waitfor_nandfds(&chan, changone ? 0 : 1, &agi->ctrl, 1, NULL, &outfd, &ms);
                if (c) {
                        retry = RETRY;
                        /* Idle the channel until we get a command */
@@ -1819,7 +1820,10 @@
                        if (!f) {
                                ast_log(LOG_DEBUG, "%s hungup\n", chan->name);
                                returnstatus = AGI_RESULT_HANGUP;
-                               break;
+                               if (dead)
+                                       changone = 1;
+                               else
+                                       break;
                        } else {
                                /* If it's voice, write it to the audio pipe */
                                if ((agi->audio > -1) && (f->frametype == AST_FRAME_VOICE)) {