]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Fix Debian init script to not use -c.
authorPaul Belanger <paul.belanger@polybeacon.com>
Wed, 9 Jun 2010 17:24:53 +0000 (17:24 +0000)
committerPaul Belanger <paul.belanger@polybeacon.com>
Wed, 9 Jun 2010 17:24:53 +0000 (17:24 +0000)
When using the init script as-is currently, it could cause issues on Debian
such as high CPU usage. This fix has worked for several people so I'm
implementing the change.  We now handle color displays properly.

(closes issue #16784)
Reported by: pabelanger
Patches:
      20100530__issue16784__2.diff.txt uploaded by tilghman (license 14)
Tested by: pabelanger, tilghman

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

contrib/init.d/rc.debian.asterisk
main/term.c

index 1742d50010befed5d8b241f5dc92ee9e5328b65b..93933f9e10dbe2d1739710151a2a6d23f6eda647 100755 (executable)
@@ -51,7 +51,7 @@ if ! [ -d /etc/asterisk ] ; then
         exit 0
 fi
 
-# Use the LSB standar functions for services management
+# Use the LSB standard functions for services management
 . /lib/lsb/init-functions
 
 case "$1" in
@@ -65,19 +65,17 @@ case "$1" in
        fi
 
        log_begin_msg "Starting $DESC: $NAME"
-        if [ $AST_USER ] ; then
-                ASTARGS="-U $AST_USER"
-        fi
-        if [ $AST_GROUP ] ; then
-                ASTARGS="$ASTARGS -G $AST_GROUP"
-        fi
-       # "start-stop-daemon --oknodo" returns 0 even if Asterisk was already running (as LSB expects):
-       if test "x$COLOR" = "xyes" ; then
-               export TERM=linux
-               start-stop-daemon --start --oknodo --background --exec $DAEMON -- $ASTARGS -c
-       else
-               start-stop-daemon --start --oknodo --exec $DAEMON -- $ASTARGS
+       if [ $AST_USER ] ; then
+               ASTARGS="-U $AST_USER"
+       fi
+       if [ $AST_GROUP ] ; then
+               ASTARGS="$ASTARGS -G $AST_GROUP"
        fi
+       if test "x$COLOR" = "xno" ; then
+               ASTARGS="$ASTARGS -n"
+       fi
+       # "start-stop-daemon --oknodo" returns 0 even if Asterisk was already running (as LSB expects):
+       start-stop-daemon --start --oknodo --exec $DAEMON -- $ASTARGS
        log_end_msg $?
        ;;
   stop)
index d051338d873a8c371eb1c981ef41dcd61514e97b..265be1fdb953545cb60796df5301bc0b49101ca5 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * Asterisk -- An open source telephony toolkit.
  *
- * Copyright (C) 1999 - 2005, Digium, Inc.
+ * Copyright (C) 1999 - 2010, Digium, Inc.
  *
  * Mark Spencer <markster@digium.com>
  *
@@ -18,9 +18,9 @@
 
 /*! \file
  *
- * \brief Terminal Routines 
+ * \brief Terminal Routines
  *
- * \author Mark Spencer <markster@digium.com> 
+ * \author Mark Spencer <markster@digium.com>
  */
 
 #include "asterisk.h"
@@ -79,12 +79,21 @@ int ast_term_init(void)
        char buffer[512] = "";
        int termfd = -1, parseokay = 0, i;
 
-       if (!term)
+       if (ast_opt_no_color) {
                return 0;
-       if (!ast_opt_console || ast_opt_no_color || !ast_opt_no_fork)
+       }
+
+       if (!ast_opt_console) {
+               /* If any remote console is not compatible, we'll strip the color codes at that point */
+               vt100compat = 1;
+               goto end;
+       }
+
+       if (!term) {
                return 0;
+       }
 
-       for (i=0 ;; i++) {
+       for (i = 0;; i++) {
                if (termpath[i] == NULL) {
                        break;
                }
@@ -138,6 +147,7 @@ int ast_term_init(void)
                }
        }
 
+end:
        if (vt100compat) {
                /* Make commands show up in nice colors */
                snprintf(prepdata, sizeof(prepdata), "%c[%d;%d;%dm", ESC, ATTR_BRIGHT, COLOR_BROWN, COLOR_BLACK + 10);