diff options
author | tilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-05-27 18:59:57 +0000 |
---|---|---|
committer | tilghman <tilghman@f38db490-d61c-443f-a65b-d21fe96a405b> | 2008-05-27 18:59:57 +0000 |
commit | 61ec20ce0be3067a5fb66c5dad387eb3a405c9cc (patch) | |
tree | 3c8962b97930ab5e74f8e4fbf75b8171d02cdc81 /main/asterisk.c | |
parent | f17933aee632f1135bc40c56599479f0164ed25b (diff) |
Merged revisions 118466 via svnmerge from
https://origsvn.digium.com/svn/asterisk/trunk
................
r118466 | tilghman | 2008-05-27 13:59:06 -0500 (Tue, 27 May 2008) | 16 lines
Merged revisions 118465 via svnmerge from
https://origsvn.digium.com/svn/asterisk/branches/1.4
........
r118465 | tilghman | 2008-05-27 13:58:09 -0500 (Tue, 27 May 2008) | 8 lines
NULL character should terminate only commands back to the core, not log
messages to the console.
(closes issue #12731)
Reported by: seanbright
Patches:
20080527__bug12731.diff.txt uploaded by Corydon76 (license 14)
Tested by: seanbright
........
................
git-svn-id: http://svn.digium.com/svn/asterisk/branches/1.6.0@118471 f38db490-d61c-443f-a65b-d21fe96a405b
Diffstat (limited to 'main/asterisk.c')
-rw-r--r-- | main/asterisk.c | 21 |
1 files changed, 14 insertions, 7 deletions
diff --git a/main/asterisk.c b/main/asterisk.c index 4355cdf44..1c76558f5 100644 --- a/main/asterisk.c +++ b/main/asterisk.c @@ -800,11 +800,18 @@ void ast_unregister_atexit(void (*func)(void)) 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) { @@ -1924,7 +1931,7 @@ static int ast_el_read_char(EditLine *el, char *cp) printf("%s", 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; @@ -2228,7 +2235,7 @@ static char *cli_complete(EditLine *el, int ch) 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); @@ -2240,7 +2247,7 @@ static char *cli_complete(EditLine *el, int ch) 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) { @@ -2425,11 +2432,11 @@ static void ast_remotecontrol(char * data) 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"); } |