]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
Merged revisions 370954 via svnmerge from
authorAutomerge script <automerge@asterisk.org>
Wed, 8 Aug 2012 23:23:46 +0000 (23:23 +0000)
committerAutomerge script <automerge@asterisk.org>
Wed, 8 Aug 2012 23:23:46 +0000 (23:23 +0000)
file:///srv/subversion/repos/asterisk/branches/10

................
  r370954 | elguero | 2012-08-08 17:42:05 -0500 (Wed, 08 Aug 2012) | 26 lines

  Fix Not Unreferencing A Spied Channel

  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
................

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/10-digiumphones@370975 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_chanspy.c

index d2c86eeca14345ce65a129e1ed18215f7e01ed23..3085b96b496908a3607051d8a1196042c1bd90d1 100644 (file)
@@ -1023,6 +1023,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;
                        }