diff --git a/asterisk.c b/asterisk.c index 37efe80292..0659cb4313 100755 --- a/asterisk.c +++ b/asterisk.c @@ -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, "", 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 ae6876fad1..79aa9872eb 100755 --- 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) {