Index: main/asterisk.c =================================================================== --- main/asterisk.c (revision 118301) +++ main/asterisk.c (working copy) @@ -738,11 +738,18 @@ free(ae); } -static int fdprint(int fd, const char *s) +/* Sending commands from consoles back to the daemon requires a terminating NULL */ +static int fdsend(int fd, const char *s) { return write(fd, s, strlen(s) + 1); } +/* Sending messages from the daemon back to the display requires _excluding_ the terminating NULL */ +static int fdprint(int fd, const char *s) +{ + return write(fd, s, strlen(s)); +} + /*! \brief NULL handler so we can collect the child exit status */ static void null_sig_handler(int signal) { @@ -1782,7 +1789,7 @@ printf(term_quit()); WELCOME_MESSAGE; if (!ast_opt_mute) - fdprint(ast_consock, "logger mute silent"); + fdsend(ast_consock, "logger mute silent"); else printf("log and verbose output currently muted ('logger mute' to unmute)\n"); break; @@ -2094,7 +2101,7 @@ if (ast_opt_remote) { snprintf(buf, sizeof(buf),"_COMMAND NUMMATCHES \"%s\" \"%s\"", lf->buffer, ptr); - fdprint(ast_consock, buf); + fdsend(ast_consock, buf); res = read(ast_consock, buf, sizeof(buf)); buf[res] = '\0'; nummatches = atoi(buf); @@ -2106,7 +2113,7 @@ if (!(mbuf = ast_malloc(maxmbuf))) return (char *)(CC_ERROR); snprintf(buf, sizeof(buf),"_COMMAND MATCHESARRAY \"%s\" \"%s\"", lf->buffer, ptr); - fdprint(ast_consock, buf); + fdsend(ast_consock, buf); res = 0; mbuf[0] = '\0'; while (!strstr(mbuf, AST_CLI_COMPLETE_EOF) && res != -1) { @@ -2291,11 +2298,11 @@ pid = -1; if (!data) { snprintf(tmp, sizeof(tmp), "core set verbose atleast %d", option_verbose); - fdprint(ast_consock, tmp); + fdsend(ast_consock, tmp); snprintf(tmp, sizeof(tmp), "core set debug atleast %d", option_debug); - fdprint(ast_consock, tmp); + fdsend(ast_consock, tmp); if (!ast_opt_mute) - fdprint(ast_consock, "logger mute silent"); + fdsend(ast_consock, "logger mute silent"); else printf("log and verbose output currently muted ('logger mute' to unmute)\n"); }