files it was built from.
* New 'manager show settings' command showing the current settings loaded from
manager.conf.
+ * Added 'all' keyword to the CLI command "channel request hangup" so that you can send
+ the channel hangup request to all channels.
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 1.6.1 to Asterisk 1.6.2 -------------
case CLI_INIT:
e->command = "channel request hangup";
e->usage =
- "Usage: channel request hangup <channel>\n"
+ "Usage: channel request hangup <channel>|<all>\n"
" Request that a channel be hung up. The hangup takes effect\n"
- " the next time the driver reads or writes from the channel\n";
+ " the next time the driver reads or writes from the channel.\n"
+ " If 'all' is specified instead of a channel name, all channels\n"
+ " will see the hangup request.\n";
return NULL;
case CLI_GENERATE:
return ast_complete_channels(a->line, a->word, a->pos, a->n, e->args);
return CLI_SHOWUSAGE;
}
- if ((c = ast_channel_get_by_name(a->argv[3]))) {
+ if (!strcasecmp(a->argv[3], "all")) {
+ struct ast_channel_iterator *iter = NULL;
+ if (!(iter = ast_channel_iterator_all_new(0))) {
+ return CLI_FAILURE;
+ }
+ for (; iter && (c = ast_channel_iterator_next(iter)); ast_channel_unref(c)) {
+ ast_channel_lock(c);
+ ast_cli(a->fd, "Requested Hangup on channel '%s'\n", c->name);
+ ast_softhangup(c, AST_SOFTHANGUP_EXPLICIT);
+ ast_channel_unlock(c);
+ }
+ ast_channel_iterator_destroy(iter);
+ } else if ((c = ast_channel_get_by_name(a->argv[3]))) {
ast_channel_lock(c);
ast_cli(a->fd, "Requested Hangup on channel '%s'\n", c->name);
ast_softhangup(c, AST_SOFTHANGUP_EXPLICIT);