Fix Not Unreferencing A Spied Channel
authorMichael L. Young <elgueromexicano@gmail.com>
Wed, 8 Aug 2012 22:45:15 +0000 (22:45 +0000)
committerMichael L. Young <elgueromexicano@gmail.com>
Wed, 8 Aug 2012 22:45:15 +0000 (22:45 +0000)
When a channel hangs up while being spied upon and the option to exit the
ChanSpy application when the spied on channel hangs up is set,
ast_autochan_destroy is not being called and therefore a reference to the spied
upon channel is not removed.

The symptom being reported was that when using func_group in the dialplan and
calling "group show channels" at the cli, the spied upon channel was still
being shown while "core show channels" showed that the channel was not up.

This patch calls ast_autochan_destroy when a spied upon channel hangs up and
the option to exit the ChanSpy application is set, removing the reference to
the channel allowing the count for the group that the spied channel was part of
to be decremented.

(closes issue ASTERISK-17515)
Reported by: Arkadiusz Malka
Tested by: Alexandr Gordeev, Michael L. Young
Patches:
    asterisk-17515-destroy-autochan.diff
                                    uploaded by Michael L. Young (license 5026)
........

Merged revisions 370952 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 370954 from http://svn.asterisk.org/svn/asterisk/branches/10

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

apps/app_chanspy.c

index 185cb72..c5adb78 100644 (file)
@@ -1035,6 +1035,7 @@ static int common_exec(struct ast_channel *chan, struct ast_flags *flags,
                                        }
                                }
                        } else if (res == 0 && ast_test_flag(flags, OPTION_EXITONHANGUP)) {
+                               ast_autochan_destroy(autochan);
                                iter = ast_channel_iterator_destroy(iter);
                                goto exit;
                        }