mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-05 20:20:07 +00:00
Fix an issue with console verbosity when running asterisk -rx to execute a command
and retrieve its output. The issue was that there was no way for the main Asterisk process to know that the remote console was connecting in the -rx mode. The way that James has fixed this is to have all remote consoles muted by default. Then, regular remote consoles automatically execute a CLI command to unmute themselves when they first start up. (closes issue #10847) Reported by: atis Patches: asterisk-consolemute.diff.txt uploaded by jamesgolovich (license 176) git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@85533 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -832,16 +832,18 @@ int ast_safe_system(const char *s)
|
||||
/*!
|
||||
* \brief mute or unmute a console from logging
|
||||
*/
|
||||
void ast_console_toggle_mute(int fd) {
|
||||
void ast_console_toggle_mute(int fd, int silent) {
|
||||
int x;
|
||||
for (x = 0;x < AST_MAX_CONNECTS; x++) {
|
||||
if (fd == consoles[x].fd) {
|
||||
if (consoles[x].mute) {
|
||||
consoles[x].mute = 0;
|
||||
ast_cli(fd, "Console is not muted anymore.\n");
|
||||
if (!silent)
|
||||
ast_cli(fd, "Console is not muted anymore.\n");
|
||||
} else {
|
||||
consoles[x].mute = 1;
|
||||
ast_cli(fd, "Console is muted.\n");
|
||||
if (!silent)
|
||||
ast_cli(fd, "Console is muted.\n");
|
||||
}
|
||||
return;
|
||||
}
|
||||
@@ -1000,7 +1002,7 @@ static void *listener(void *unused)
|
||||
flags = fcntl(consoles[x].p[1], F_GETFL);
|
||||
fcntl(consoles[x].p[1], F_SETFL, flags | O_NONBLOCK);
|
||||
consoles[x].fd = s;
|
||||
consoles[x].mute = ast_opt_mute;
|
||||
consoles[x].mute = 1; /* Default is muted, we will un-mute if necessary */
|
||||
if (ast_pthread_create_background(&consoles[x].t, &attr, netconsole, &consoles[x])) {
|
||||
ast_log(LOG_ERROR, "Unable to spawn thread to handle connection: %s\n", strerror(errno));
|
||||
close(consoles[x].p[0]);
|
||||
@@ -2256,13 +2258,15 @@ static void ast_remotecontrol(char * data)
|
||||
pid = atoi(cpid);
|
||||
else
|
||||
pid = -1;
|
||||
snprintf(tmp, sizeof(tmp), "core set verbose atleast %d", option_verbose);
|
||||
fdprint(ast_consock, tmp);
|
||||
snprintf(tmp, sizeof(tmp), "core set debug atleast %d", option_debug);
|
||||
fdprint(ast_consock, tmp);
|
||||
if (ast_opt_mute) {
|
||||
snprintf(tmp, sizeof(tmp), "log and verbose output currently muted ('logger unmute' to unmute)");
|
||||
if (!data) {
|
||||
snprintf(tmp, sizeof(tmp), "core set verbose atleast %d", option_verbose);
|
||||
fdprint(ast_consock, tmp);
|
||||
snprintf(tmp, sizeof(tmp), "core set debug atleast %d", option_debug);
|
||||
fdprint(ast_consock, tmp);
|
||||
if (!ast_opt_mute)
|
||||
fdprint(ast_consock, "logger mute silent");
|
||||
else
|
||||
printf("log and verbose output currently muted ('logger mute' to unmute)\n");
|
||||
}
|
||||
ast_verbose("Connected to Asterisk %s currently running on %s (pid = %d)\n", version, hostname, pid);
|
||||
remotehostname = hostname;
|
||||
|
Reference in New Issue
Block a user