]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
ignore interrupted system calls (bug #3831)
authorRussell Bryant <russell@russellbryant.com>
Fri, 1 Apr 2005 03:13:38 +0000 (03:13 +0000)
committerRussell Bryant <russell@russellbryant.com>
Fri, 1 Apr 2005 03:13:38 +0000 (03:13 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/v1-0@5328 65c4cc65-6c06-0410-ace0-fbb531ad65f3

CHANGES
channel.c
file.c

diff --git a/CHANGES b/CHANGES
index ba8ecd13d4eb64dd7ba0aceb3a2c57fa464b8e43..834ebdd31bdede719a2eb6a82a11d269bacf1534 100755 (executable)
--- a/CHANGES
+++ b/CHANGES
@@ -11,6 +11,9 @@
  -- chan_sip
     -- We no longer send a "to" tag on "100 Trying" messages, as it is inappropriate
        to do so.
+ -- res_agi
+    -- A fix has been added to prevent calls from being hung up when more than one
+       call is executing an AGI script calling the GET DATA command.
  -- asterisk.spec
     -- A line was missing for the autosupport script that caused "make rpm" to fail
  -- general
index d5fe1298877fc40763acf4706f073cfcd24e1dc9..1ddfecf8dd368c5da031788c4a4e513a7fa5b7d0 100755 (executable)
--- a/channel.c
+++ b/channel.c
@@ -1146,6 +1146,8 @@ char ast_waitfordigit_full(struct ast_channel *c, int ms, int audiofd, int cmdfd
        while(ms) {
                rchan = ast_waitfor_nandfds(&c, 1, &cmdfd, (cmdfd > -1) ? 1 : 0, NULL, &outfd, &ms);
                if ((!rchan) && (outfd < 0) && (ms)) { 
+                       if (errno == EINTR)
+                               continue;
                        ast_log(LOG_WARNING, "Wait failed (%s)\n", strerror(errno));
                        return -1;
                } else if (outfd > -1) {
diff --git a/file.c b/file.c
index a1a563c7a8a388d71c549f0f4c781d342bc1ee10..a91edc2c61d37f999ebc6727b4779dd09f51ef81 100755 (executable)
--- a/file.c
+++ b/file.c
@@ -1070,6 +1070,9 @@ char ast_waitstream_full(struct ast_channel *c, char *breakon, int audiofd, int
                        ms = 1000;
                rchan = ast_waitfor_nandfds(&c, 1, &cmdfd, (cmdfd > -1) ? 1 : 0, NULL, &outfd, &ms);
                if (!rchan && (outfd < 0) && (ms)) {
+                       /* Continue */
+                       if (errno == EINTR)
+                               continue;
                        ast_log(LOG_WARNING, "Wait failed (%s)\n", strerror(errno));
                        return -1;
                } else if (outfd > -1) {