[Freeswitch-svn] [commit] r10418 - in freeswitch/trunk: conf/sip_profiles src/mod/endpoints/mod_sofia

FreeSWITCH SVN anthm at freeswitch.org
Sat Nov 15 09:44:28 PST 2008


Author: anthm
Date: Sat Nov 15 12:44:27 2008
New Revision: 10418

Log:
add params to use sip callid as uuid on inbound calls and uuid as sip callid on outbound calls

Modified:
   freeswitch/trunk/conf/sip_profiles/internal.xml
   freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h
   freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c
   freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c

Modified: freeswitch/trunk/conf/sip_profiles/internal.xml
==============================================================================
--- freeswitch/trunk/conf/sip_profiles/internal.xml	(original)
+++ freeswitch/trunk/conf/sip_profiles/internal.xml	Sat Nov 15 12:44:27 2008
@@ -177,6 +177,10 @@
     -->
     <param name="challenge-realm" value="auto_from"/>
     <!--<param name="disable-rtp-auto-adjust" value="true"/>-->
+    <!-- on inbound calls make the uuid of the session equal to the sip call id of that call -->
+    <!--<param name="inbound-use-callid-as-uuid" value="true"/>-->
+    <!-- on outbound calls set the callid to match the uuid of the session -->
+    <!--<param name="outbound-use-uuid-as-callid" value="true"/>-->
   </settings>
 </profile>
 

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.h	Sat Nov 15 12:44:27 2008
@@ -164,7 +164,9 @@
 	PFLAG_FUNNY_STUN = (1 << 26),
 	PFLAG_STUN_ENABLED = (1 << 27),
 	PFLAG_STUN_AUTO_DISABLE = (1 << 28),
-	PFLAG_3PCC_PROXY = (1 << 29)
+	PFLAG_3PCC_PROXY = (1 << 29),
+	PFLAG_CALLID_AS_UUID = (1 << 30),
+	PFLAG_UUID_AS_CALLID = (1 << 31)
 } PFLAGS;
 
 typedef enum {

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c	Sat Nov 15 12:44:27 2008
@@ -1075,6 +1075,18 @@
 						} else {
 							switch_clear_flag(profile, TFLAG_PROXY_MEDIA);
 						}
+					} else if (!strcasecmp(var, "inbound-use-callid-as-uuid")) {
+						if (switch_true(val)) {
+							profile->pflags |= PFLAG_CALLID_AS_UUID;
+						} else {
+							profile->pflags &= ~PFLAG_CALLID_AS_UUID;
+						}
+					} else if (!strcasecmp(var, "outbound-use-uuid-as-callid")) {
+						if (switch_true(val)) {
+							profile->pflags |= PFLAG_UUID_AS_CALLID;
+						} else {
+							profile->pflags &= ~PFLAG_UUID_AS_CALLID;
+						}
 					} else if (!strcasecmp(var, "NDLB-received-in-nat-reg-contact")) {
 						if (switch_true(val)) {
 							profile->pflags |= PFLAG_RECIEVED_IN_NAT_REG_CONTACT;
@@ -1474,6 +1486,18 @@
 						switch_set_flag(profile, TFLAG_LATE_NEGOTIATION);
 					} else if (!strcasecmp(var, "inbound-proxy-media") && switch_true(val)) {
 						switch_set_flag(profile, TFLAG_PROXY_MEDIA);
+					} else if (!strcasecmp(var, "inbound-use-callid-as-uuid")) {
+						if (switch_true(val)) {
+							profile->pflags |= PFLAG_CALLID_AS_UUID;
+						} else {
+							profile->pflags &= ~PFLAG_CALLID_AS_UUID;
+						}
+					} else if (!strcasecmp(var, "outbound-use-uuid-as-callid")) {
+						if (switch_true(val)) {
+							profile->pflags |= PFLAG_UUID_AS_CALLID;
+						} else {
+							profile->pflags &= ~PFLAG_UUID_AS_CALLID;
+						}
 					} else if (!strcasecmp(var, "NDLB-received-in-nat-reg-contact") && switch_true(val)) {
 						profile->pflags |= PFLAG_RECIEVED_IN_NAT_REG_CONTACT;
 					} else if (!strcasecmp(var, "aggressive-nat-detection") && switch_true(val)) {
@@ -3497,7 +3521,15 @@
 		return;
 	}
 
-	if (!sofia_endpoint_interface || !(session = switch_core_session_request(sofia_endpoint_interface, NULL))) {
+	if (sofia_endpoint_interface) {
+		if (tech_pvt->profile->pflags & PFLAG_CALLID_AS_UUID) {
+			session = switch_core_session_request_uuid(sofia_endpoint_interface, NULL, sip->sip_call_id->i_id);
+		} else {
+			session = switch_core_session_request(sofia_endpoint_interface, NULL);
+		}
+	}
+
+	if (!session) {
 		nua_respond(nh, 503, "Maximum Calls In Progress", SIPTAG_RETRY_AFTER_STR("300"), TAG_END());
 		return;
 	}

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c	Sat Nov 15 12:44:27 2008
@@ -1189,7 +1189,9 @@
 		from_str = switch_core_session_sprintf(session, "\"%s\" <%s>", tech_pvt->caller_profile->caller_id_name, use_from_str);
 		
 		if (!(call_id = switch_channel_get_variable(channel, "sip_outgoing_call_id"))) {
-			call_id = switch_core_session_get_uuid(session);
+			if (tech_pvt->profile->pflags & PFLAG_UUID_AS_CALLID) {
+				call_id = switch_core_session_get_uuid(session);
+			}
 		}
 		
 		tech_pvt->nh = nua_handle(tech_pvt->profile->nua, NULL,



More information about the Freeswitch-svn mailing list