main/bridge: Destroy features struct on off nominal path during bridge impart
authorMatthew Jordan <mjordan@digium.com>
Tue, 28 Oct 2014 16:41:17 +0000 (16:41 +0000)
committerMatthew Jordan <mjordan@digium.com>
Tue, 28 Oct 2014 16:41:17 +0000 (16:41 +0000)
When a channel is imparted to a bridge, the invocation of the function may
provide an ast_bridge_features struct. Upon passing this to ast_bridge_impart,
the caller must assume that ownership has passed to the function, as in all
paths the function destroys the struct prior to returning (as its purpose is
to configure the behavior of the channel while in the bridge). On one off
nominal path - where the channel already has a PBX thread - the struct was not
being destroyed.

This patch fixes that glitch.

ASTERISK-24437 #close
Reported by: Scott Griepentrog
........

Merged revisions 426431 from http://svn.asterisk.org/svn/asterisk/branches/12
........

Merged revisions 426432 from http://svn.asterisk.org/svn/asterisk/branches/13

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@426433 65c4cc65-6c06-0410-ace0-fbb531ad65f3

main/bridge.c

index ab3bb17..de55662 100644 (file)
@@ -1677,6 +1677,7 @@ int ast_bridge_impart(struct ast_bridge *bridge,
        if (ast_channel_pbx(chan)) {
                ast_log(AST_LOG_WARNING, "Channel %s has a PBX thread and cannot be imparted into bridge %s\n",
                        ast_channel_name(chan), bridge->uniqueid);
        if (ast_channel_pbx(chan)) {
                ast_log(AST_LOG_WARNING, "Channel %s has a PBX thread and cannot be imparted into bridge %s\n",
                        ast_channel_name(chan), bridge->uniqueid);
+               ast_bridge_features_destroy(features);
                return -1;
        }
 
                return -1;
        }