Revision
15838
Author
anthm
Date
2009-12-07 18:05:40 -0600 (Mon, 07 Dec 2009)

Log Message

MODAPP-376

Modified Paths

Diff

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c (15837 => 15838)


--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c	2009-12-07 22:10:38 UTC (rev 15837)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c	2009-12-08 00:05:40 UTC (rev 15838)
@@ -3291,6 +3291,10 @@
 					ptime = maxptime;
 				}
 
+				if (!ptime) {
+					ptime = 20;
+				}
+
 				for (i = first; i < last && i < tech_pvt->num_codecs; i++) {
 					const switch_codec_implementation_t *imp = tech_pvt->codecs[i];
 					uint32_t codec_rate = imp->samples_per_second;

Modified: freeswitch/trunk/src/switch_ivr_originate.c (15837 => 15838)


--- freeswitch/trunk/src/switch_ivr_originate.c	2009-12-07 22:10:38 UTC (rev 15837)
+++ freeswitch/trunk/src/switch_ivr_originate.c	2009-12-08 00:05:40 UTC (rev 15838)
@@ -1566,6 +1566,7 @@
 	int local_clobber = 0;
 	const char *cancel_key = NULL;
 	const char *holding = NULL;
+	const char *soft_holding = NULL;
 	const char *export_vars = NULL;
 
 
@@ -2638,7 +2639,7 @@
 		  notready:
 
 			if (caller_channel) {
-				const char *soft_holding = switch_channel_get_variable(caller_channel, SWITCH_SOFT_HOLDING_UUID_VARIABLE);
+				soft_holding = switch_channel_get_variable(caller_channel, SWITCH_SOFT_HOLDING_UUID_VARIABLE);
 				holding = switch_channel_get_variable(caller_channel, SWITCH_HOLDING_UUID_VARIABLE);
 				switch_channel_set_variable(caller_channel, SWITCH_HOLDING_UUID_VARIABLE, NULL);
 
@@ -2757,7 +2758,7 @@
 						switch_core_session_rwunlock(peer_session);
 					}
 					force_reason = SWITCH_CAUSE_ATTENDED_TRANSFER;
-				} else {
+				} else if (zstr(soft_holding)) {
 
 					if (peer_channel && switch_channel_ready(peer_channel)) {
 						switch_core_session_t *holding_session;
@@ -2845,9 +2846,12 @@
 				}
 			}
 			
+
+
 			if (oglobals.idx > IDX_NADA) {
-				peer_session = originate_status[oglobals.idx].peer_session;
-				peer_channel = originate_status[oglobals.idx].peer_channel;
+				if ((peer_session = originate_status[oglobals.idx].peer_session)) {
+					peer_channel = switch_core_session_get_channel(originate_status[oglobals.idx].peer_session);
+				}
 			} else {
 				status = SWITCH_STATUS_FALSE;
 				if (caller_channel && peer_channel) {