[asterisk-commits] mmichelson: trunk r145606 - /trunk/main/features.c

SVN commits to the Asterisk project asterisk-commits at lists.digium.com
Wed Oct 1 17:23:51 CDT 2008


Author: mmichelson
Date: Wed Oct  1 17:23:50 2008
New Revision: 145606

URL: http://svn.digium.com/view/asterisk?view=rev&rev=145606
Log:
Okay, this should really do it now. While I did manage
to fix blind transfers with my last commit here, I also
caused an unwanted side-effect. That is, only the first
priority of the 'h' extension would be executed when
a blind transfer occurred instead of all priorities.

Essentially, my last commit corrected the return value
of ast_bridge_call. However, the implementation still
was not 100% correct. Now it is.


Modified:
    trunk/main/features.c

Modified: trunk/main/features.c
URL: http://svn.digium.com/view/asterisk/trunk/main/features.c?view=diff&rev=145606&r1=145605&r2=145606
==============================================================================
--- trunk/main/features.c (original)
+++ trunk/main/features.c Wed Oct  1 17:23:50 2008
@@ -2379,14 +2379,15 @@
 		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))) {
+		while ((res = ast_spawn_extension(chan, chan->context, chan->exten, chan->priority, chan->cid.cid_num, &found, 1)) == 0) {
 			chan->priority++;
 		}
-		if (found && res) 
-		{
+		if (found && res) {
 			/* Something bad happened, or a hangup has been requested. */
 			ast_debug(1, "Spawn extension (%s,%s,%d) exited non-zero on '%s'\n", chan->context, chan->exten, chan->priority, chan->name);
 			ast_verb(2, "Spawn extension (%s, %s, %d) exited non-zero on '%s'\n", chan->context, chan->exten, chan->priority, chan->name);
+		} else if (!found && res) {
+			res = 0;
 		}
 		/* swap it back */
 		ast_channel_lock(chan);




More information about the asterisk-commits mailing list