chan_sip: Fix reference leak in mwi_event_cb
authorCorey Farrell <git@cfware.com>
Wed, 13 Jul 2016 18:45:07 +0000 (14:45 -0400)
committerCorey Farrell <git@cfware.com>
Wed, 13 Jul 2016 19:10:41 +0000 (14:10 -0500)
Cleanup the peer reference when stasis_subscription_final_message is
true.  Also free peer_name even if peer exists, after reload a new
peer_name will be allocated.

ASTERISK-26193 #close

Change-Id: If7ecd52facdc5c227f701c760841e3f6ca53cc69

channels/chan_sip.c

index 599ecd6..b2522b6 100644 (file)
@@ -17229,10 +17229,8 @@ static void mwi_event_cb(void *userdata, struct stasis_subscription *sub, struct
        struct sip_peer *peer = sip_find_peer(peer_name, NULL, TRUE, FINDALLDEVICES, FALSE, 0);
 
        if (stasis_subscription_final_message(sub, msg)) {
-               if (peer) {
-                       /* configuration reloaded */
-                       return;
-               }
+               /* peer can be non-NULL during reload. */
+               ao2_cleanup(peer);
                ast_free(peer_name);
                return;
        }