diff options
author | Corey Farrell <git@cfware.com> | 2016-07-13 14:45:07 -0400 |
---|---|---|
committer | Corey Farrell <git@cfware.com> | 2016-07-13 15:07:36 -0400 |
commit | 2be13d62fd35472d30b52d0e6bdc33390b0f17f6 (patch) | |
tree | c3e7fdce1c6ab6fed4f9a3653513545269051341 /channels | |
parent | 8cea01ab1b3e07282487d7efe1888f290cc4280a (diff) |
chan_sip: Fix reference leak in mwi_event_cb
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
Diffstat (limited to 'channels')
-rw-r--r-- | channels/chan_sip.c | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c index c14f8ba07..0336e2a34 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -17186,10 +17186,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; } |