Revision
17422
Author
anthm
Date
2010-04-27 14:22:35 -0500 (Tue, 27 Apr 2010)

Log Message

replace don't bridge when parsing replaces header on invite

Modified Paths

Diff

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


--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c	2010-04-27 18:56:37 UTC (rev 17421)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c	2010-04-27 19:22:35 UTC (rev 17422)
@@ -6433,12 +6433,18 @@
 					if (uuid) {
 						switch_core_session_t *c_session = NULL;
 						int do_conf = 0;
+						const char *c_app = NULL;
+						const char *c_data = NULL;
+
 						uuid = switch_core_session_strdup(b_session, uuid);
 
 						if ((c_session = switch_core_session_locate(uuid))) {
 							switch_channel_t *c_channel = switch_core_session_get_channel(c_session);
 							private_object_t *c_tech_pvt = NULL;
 
+							c_app = switch_channel_get_variable(c_channel, SWITCH_CURRENT_APPLICATION_VARIABLE);
+							c_data = switch_channel_get_variable(c_channel, SWITCH_CURRENT_APPLICATION_DATA_VARIABLE);
+
 							if (switch_core_session_check_interface(c_session, sofia_endpoint_interface)) {
 								c_tech_pvt = switch_core_session_get_private(c_session);
 							}
@@ -6461,7 +6467,15 @@
 						if (do_conf) {
 							destination_number = switch_core_session_sprintf(b_session, "answer,conference:%s@sla+flags{mintwo}", uuid);
 						} else {
-							destination_number = switch_core_session_sprintf(b_session, "answer,intercept:%s", uuid);
+							if (one_leg && c_app) {
+								if (c_data) {
+									destination_number = switch_core_session_sprintf(b_session, "answer,%s:%s", c_app, c_data);
+								} else {
+									destination_number = switch_core_session_sprintf(b_session, "answer,%s", c_app);
+								}
+							} else {
+								destination_number = switch_core_session_sprintf(b_session, "answer,intercept:%s", uuid);
+							}
 						}
 
 						dialplan = "inline";