Minor patch for improving console response with asterisk -r (bug #183)
authorMark Spencer <markster@digium.com>
Wed, 3 Dec 2003 03:03:15 +0000 (03:03 +0000)
committerMark Spencer <markster@digium.com>
Wed, 3 Dec 2003 03:03:15 +0000 (03:03 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1817 65c4cc65-6c06-0410-ace0-fbb531ad65f3

asterisk.c
cli.c

index 37efe80..0659cb4 100755 (executable)
@@ -167,6 +167,7 @@ static void *netconsole(void *vconsole)
        int res;
        int max;
        fd_set rfds;
+       struct timeval tv;
        
        if (gethostname(hostname, sizeof(hostname)))
                strncpy(hostname, "<Unknown>", sizeof(hostname)-1);
@@ -179,11 +180,17 @@ static void *netconsole(void *vconsole)
                max = con->fd;
                if (con->p[0] > max)
                        max = con->p[0];
-               res = ast_select(max + 1, &rfds, NULL, NULL, NULL);
+               tv.tv_sec = 4;  /* Wait max 4 sec for fds to become active */
+               tv.tv_usec = 0;
+               res = ast_select(max + 1, &rfds, NULL, NULL, &tv);
                if (res < 0) {
                        ast_log(LOG_WARNING, "select returned < 0: %s\n", strerror(errno));
                        continue;
                }
+               if (res == 0) {
+                       ast_log(LOG_WARNING, "Timeout on select.\n");
+                       break;
+               }
                if (FD_ISSET(con->fd, &rfds)) {
                        res = read(con->fd, tmp, sizeof(tmp));
                        if (res < 1) {
@@ -794,7 +801,7 @@ static int ast_el_read_char(EditLine *el, char *cp)
                        if (!option_exec && !lastpos)
                                write(STDOUT_FILENO, "\r", 1);
                        write(STDOUT_FILENO, buf, res);
-                       if ((buf[res-1] == '\n') || (buf[res-2] == '\n')) {
+                       if ((buf[res-1] == '\n') && (buf[res-2] == '\n')) {
                                *cp = CC_REFRESH;
                                return(1);
                        } else {
diff --git a/cli.c b/cli.c
index ae6876f..79aa987 100755 (executable)
--- a/cli.c
+++ b/cli.c
@@ -1009,6 +1009,7 @@ int ast_cli_command(int fd, char *s)
                                        ast_cli(fd, e->usage);
                                        break;
                                }
+                               ast_cli(fd, "\n\n");
                        } else 
                                ast_cli(fd, "No such command '%s' (type 'help' for help)\n", find_best(argv));
                        if (e) {