[Asterisk-cvs] asterisk asterisk.c,1.134,1.135

markster at lists.digium.com markster at lists.digium.com
Sat Jan 15 02:49:43 CST 2005


Update of /usr/cvsroot/asterisk
In directory mongoose.digium.com:/tmp/cvs-serv575

Modified Files:
	asterisk.c 
Log Message:
Keep dead console from killing asterisk (bu #3331)


Index: asterisk.c
===================================================================
RCS file: /usr/cvsroot/asterisk/asterisk.c,v
retrieving revision 1.134
retrieving revision 1.135
diff -u -d -r1.134 -r1.135
--- asterisk.c	31 Dec 2004 00:04:41 -0000	1.134
+++ asterisk.c	15 Jan 2005 08:53:28 -0000	1.135
@@ -1587,6 +1587,7 @@
 	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 @@
 
 				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;
 }




More information about the svn-commits mailing list