This fixes a nasty chanspy bug which was causing a channel leak every time a spied on channel made a call.

In addition to the above, it makes certain channel destruction occurs so that applications don't get stuck waiting for datastore destruction while monitored by chanspy.

(closes issue #18742)
Reported by: jkister
Tested by: jkister, jcovert, jrose

Review: http://reviewboard.digium.internal/r/106/



git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.8@311197 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Jonathan Rose
2011-03-17 19:03:34 +00:00
parent 0e86babe2f
commit ef01ba5ff2

View File

@@ -707,6 +707,7 @@ static struct ast_autochan *next_channel(struct ast_channel_iterator *iter,
struct ast_autochan *autochan, struct ast_channel *chan)
{
struct ast_channel *next;
struct ast_autochan *autochan_store;
const size_t pseudo_len = strlen("DAHDI/pseudo");
if (!iter) {
@@ -724,7 +725,10 @@ redo:
goto redo;
}
return ast_autochan_setup(next);
autochan_store = ast_autochan_setup(next);
ast_channel_unref(next);
return autochan_store;
}
static int common_exec(struct ast_channel *chan, struct ast_flags *flags,