summaryrefslogtreecommitdiff
path: root/asterisk.c
diff options
context:
space:
mode:
authorMark Spencer <markster@digium.com>2005-01-15 08:53:28 +0000
committerMark Spencer <markster@digium.com>2005-01-15 08:53:28 +0000
commitc7326903842c7e744275af7714a18da80df5715c (patch)
tree1a470ad672608823173b34c40be96ae57af52cd8 /asterisk.c
parente2c9887aeb99f7485eb7865905af79a4ac0f23fc (diff)
Keep dead console from killing asterisk (bu #3331)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@4798 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'asterisk.c')
-rwxr-xr-xasterisk.c23
1 files changed, 16 insertions, 7 deletions
diff --git a/asterisk.c b/asterisk.c
index 59e22cf38..a523b1fea 100755
--- a/asterisk.c
+++ b/asterisk.c
@@ -1587,6 +1587,7 @@ int main(int argc, char *argv[])
int num;
char *buf;
char *runuser=NULL, *rungroup=NULL;
+ struct pollfd silly_macos[1];
/* Remember original args for restart */
if (argc > sizeof(_argv) / sizeof(_argv[0]) - 1) {
@@ -1917,16 +1918,24 @@ int main(int argc, char *argv[])
consolehandler((char *)buf);
} else {
- if (option_remote)
- ast_cli(STDOUT_FILENO, "\nUse EXIT or QUIT to exit the asterisk console\n");
+ if (write(STDOUT_FILENO, "\nUse EXIT or QUIT to exit the asterisk console\n",
+ strlen("\nUse EXIT or QUIT to exit the asterisk console\n")) < 0) {
+ /* Whoa, stdout disappeared from under us... Make /dev/null's */
+ int fd;
+ fd = open("/dev/null", O_RDWR);
+ if (fd > -1) {
+ dup2(fd, STDOUT_FILENO);
+ dup2(fd, STDIN_FILENO);
+ } else
+ ast_log(LOG_WARNING, "Failed to open /dev/null to recover from dead console. Bad things will happen!\n");
+ break;
+ }
}
}
- } else {
- struct pollfd silly_macos[1];
- /* Do nothing */
- for(;;)
- poll(silly_macos,0, -1);
}
+ /* Do nothing */
+ for(;;)
+ poll(silly_macos,0, -1);
return 0;
}