From 5ce91ec68708a88aa37398e3a31ef17bcc30c12c Mon Sep 17 00:00:00 2001 From: Richard Mudgett Date: Wed, 7 May 2014 20:34:58 +0000 Subject: [PATCH] app_confbridge: Fix ref leak in CLI "confbridge kick" command. Fixed ref leak in the CLI "confbridge kick" command when the channel to be kicked was not in the conference. ........ Merged revisions 413451 from http://svn.asterisk.org/svn/asterisk/branches/11 git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/12@413452 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- apps/app_confbridge.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/apps/app_confbridge.c b/apps/app_confbridge.c index 4fcc3da79e..5700fa64de 100644 --- a/apps/app_confbridge.c +++ b/apps/app_confbridge.c @@ -2227,6 +2227,7 @@ static char *complete_confbridge_participant(const char *conference_name, const static char *handle_cli_confbridge_kick(struct ast_cli_entry *e, int cmd, struct ast_cli_args *a) { struct confbridge_conference *conference; + int not_found; switch (cmd) { case CLI_INIT: @@ -2254,11 +2255,12 @@ static char *handle_cli_confbridge_kick(struct ast_cli_entry *e, int cmd, struct ast_cli(a->fd, "No conference bridge named '%s' found!\n", a->argv[2]); return CLI_SUCCESS; } - if (kick_conference_participant(conference, a->argv[3])) { + not_found = kick_conference_participant(conference, a->argv[3]); + ao2_ref(conference, -1); + if (not_found) { ast_cli(a->fd, "No participant named '%s' found!\n", a->argv[3]); return CLI_SUCCESS; } - ao2_ref(conference, -1); ast_cli(a->fd, "Participant '%s' kicked out of conference '%s'\n", a->argv[3], a->argv[2]); return CLI_SUCCESS; } @@ -2892,7 +2894,7 @@ static int action_confbridgekick(struct mansession *s, const struct message *m) const char *conference_name = astman_get_header(m, "Conference"); const char *channel = astman_get_header(m, "Channel"); struct confbridge_conference *conference; - int found = 0; + int found; if (ast_strlen_zero(conference_name)) { astman_send_error(s, m, "No Conference name provided."); -- 2.47.2