The logic surrounding the return value of ast_spawn_extension
authorMark Michelson <mmichelson@digium.com>
Wed, 1 Oct 2008 21:06:26 +0000 (21:06 +0000)
committerMark Michelson <mmichelson@digium.com>
Wed, 1 Oct 2008 21:06:26 +0000 (21:06 +0000)
within ast_bridge_call was reversed.

This problem was observed when a blind transfer placed from
the callee channel of a test call failed.

While the problem I am solving here is exactly the same
as what was reported in issue #13584, the difference is
that this fix I am applying is trunk-only. Issue #13584
was reported against the 1.4 branch, and my tests
of 1.4's blind transfers appear to work fine.

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

main/features.c

index 36057c0..e65c519 100644 (file)
@@ -2379,7 +2379,7 @@ int ast_bridge_call(struct ast_channel *chan,struct ast_channel *peer,struct ast
                ast_copy_string(chan->exten, "h", sizeof(chan->exten));
                chan->priority = 1;
                ast_channel_unlock(chan);
-               while ((res = ast_spawn_extension(chan, chan->context, chan->exten, chan->priority, chan->cid.cid_num, &found, 1)) == 0) {
+               while (!(res = ast_spawn_extension(chan, chan->context, chan->exten, chan->priority, chan->cid.cid_num, &found, 1)) == 0) {
                        chan->priority++;
                }
                if (found && res)