Merged revisions 72383 via svnmerge from
authorBrett Bryant <bbryant@digium.com>
Wed, 27 Jun 2007 23:30:31 +0000 (23:30 +0000)
committerBrett Bryant <bbryant@digium.com>
Wed, 27 Jun 2007 23:30:31 +0000 (23:30 +0000)
https://origsvn.digium.com/svn/asterisk/branches/1.4

................
r72383 | bbryant | 2007-06-27 18:29:14 -0500 (Wed, 27 Jun 2007) | 11 lines

Merged revisions 72373 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.2

........
r72373 | bbryant | 2007-06-27 18:22:13 -0500 (Wed, 27 Jun 2007) | 3 lines

Reinstating patch. This actually fixes the problem, however I was running a development branch without it and mistakenly thought it wasn't fixed.
Fixes issue #10010, and #9654: 100% CPU usage caused by an asterisk console losing it's controlling terminal.

........

................

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@72384 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/asterisk.c

index 6a826bf..eb5654a 100644 (file)
@@ -2232,6 +2232,9 @@ static void ast_remotecontrol(char * data)
        for (;;) {
                ebuf = (char *)el_gets(el, &num);
 
+               if (!ebuf && write(1, "", 1) < 0)
+                       break;
+
                if (!ast_strlen_zero(ebuf)) {
                        if (ebuf[strlen(ebuf)-1] == '\n')
                                ebuf[strlen(ebuf)-1] = '\0';
@@ -2958,6 +2961,9 @@ int main(int argc, char *argv[])
                for (;;) {
                        buf = (char *)el_gets(el, &num);
 
+                       if (!buf && write(1, "", 1) < 0)
+                               goto lostterm;
+
                        if (buf) {
                                if (buf[strlen(buf)-1] == '\n')
                                        buf[strlen(buf)-1] = '\0';
@@ -2980,5 +2986,6 @@ int main(int argc, char *argv[])
 
        monitor_sig_flags(NULL);
 
+lostterm:
        return 0;
 }