Revision
16864
Author
anthm
Date
2010-03-02 11:45:19 -0600 (Tue, 02 Mar 2010)

Log Message

MODAPP-395

Modified Paths

Diff

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c (16863 => 16864)


--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c	2010-03-02 17:16:52 UTC (rev 16863)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c	2010-03-02 17:45:19 UTC (rev 16864)
@@ -5136,7 +5136,7 @@
 							sofia_clear_flag_locked(b_tech_pvt, TFLAG_SIP_HOLD);
 							switch_channel_clear_flag(channel_b, CF_LEG_HOLDING);
 							sofia_clear_flag_locked(tech_pvt, TFLAG_HOLD_LOCK);
-							switch_channel_set_variable(channel_b, "park_timeout", "2");
+							switch_channel_set_variable(channel_b, "park_timeout", "2:attended_transfer");
 							switch_channel_set_state(channel_b, CS_PARK);
 
 						} else {

Modified: freeswitch/trunk/src/switch_ivr.c (16863 => 16864)


--- freeswitch/trunk/src/switch_ivr.c	2010-03-02 17:16:52 UTC (rev 16863)
+++ freeswitch/trunk/src/switch_ivr.c	2010-03-02 17:45:19 UTC (rev 16864)
@@ -689,6 +689,7 @@
 	int timeout = 0;
 	time_t expires = 0;
 	switch_codec_implementation_t read_impl = { 0 };
+	switch_call_cause_t timeout_cause = SWITCH_CAUSE_NORMAL_CLEARING;
 
 
 	if (switch_channel_test_flag(channel, CF_CONTROLLED)) {
@@ -701,6 +702,12 @@
 	}
 
 	if ((to = switch_channel_get_variable(channel, "park_timeout"))) {
+		char *cause_str;
+
+		if ((cause_str = strstr(to, ':'))) {
+			timeout_cause = switch_channel_str2cause(cause_str + 1);
+		}
+		
 		if ((timeout = atoi(to)) < 0) {
 			timeout = 0;
 		} else {
@@ -737,7 +744,7 @@
 			break;
 		} else {
 			if (expires && switch_epoch_time_now(NULL) >= expires) {
-				switch_channel_hangup(channel, SWITCH_CAUSE_NORMAL_CLEARING);
+				switch_channel_hangup(channel, timeout_cause);
 				break;
 			}