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

Freeswitch SVN anthm at freeswitch.org
Wed Sep 19 11:28:16 EDT 2007


Author: anthm
Date: Wed Sep 19 11:28:16 2007
New Revision: 5713

Modified:
   freeswitch/trunk/conf/directory.xml
   freeswitch/trunk/conf/sofia.conf.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_reg.c

Log:
add register-proxy option to gateways so you can send outbound reg to your local proxy dest for the outside 

Modified: freeswitch/trunk/conf/directory.xml
==============================================================================
--- freeswitch/trunk/conf/directory.xml	(original)
+++ freeswitch/trunk/conf/directory.xml	Wed Sep 19 11:28:16 2007
@@ -19,6 +19,8 @@
       <!--<param name="extension" value="cluecon"/>-->
       <!--/// proxy host: *optional* same as realm, if blank ///-->
       <!--<param name="proxy" value="asterlink.com"/>-->
+      <!--/// send register to this proxy: *optional* same as proxy, if blank ///-->
+      <!--<param name="register-proxy" value="mysbc.com"/>-->
       <!--/// expire in seconds: *optional* 3600, if blank ///-->
       <!--<param name="expire-seconds" value="60"/>-->
       <!--/// do not register ///-->

Modified: freeswitch/trunk/conf/sofia.conf.xml
==============================================================================
--- freeswitch/trunk/conf/sofia.conf.xml	(original)
+++ freeswitch/trunk/conf/sofia.conf.xml	Wed Sep 19 11:28:16 2007
@@ -22,6 +22,8 @@
 	  <!--<param name="extension" value="cluecon"/>-->
 	  <!--/// proxy host: *optional* same as realm, if blank ///-->
 	  <!--<param name="proxy" value="asterlink.com"/>-->
+	  <!--/// send register to this proxy: *optional* same as proxy, if blank ///-->
+	  <!--<param name="register-proxy" value="mysbc.com"/>-->
 	  <!--/// expire in seconds: *optional* 3600, if blank ///-->
 	  <!--<param name="expire-seconds" value="60"/>-->
 	  <!--/// do not register ///-->

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	Wed Sep 19 11:28:16 2007
@@ -196,6 +196,7 @@
 	char *register_proxy;
 	char *register_context;
 	char *expires_str;
+	char *register_url;
 	uint32_t freq;
 	time_t expires;
 	time_t retry;

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	Wed Sep 19 11:28:16 2007
@@ -501,7 +501,8 @@
 				*expire_seconds = "3600",
 				*retry_seconds = "30",
 				*from_domain = "",
-				*to_domain = "";
+				*to_domain = "",
+				*register_proxy = NULL;
 			
 			gateway->pool = profile->pool;
 			gateway->profile = profile;
@@ -539,13 +540,11 @@
 					from_domain = val;
 				} else if (!strcmp(var, "to-domain")) {
 					to_domain = val;
+				} else if (!strcmp(var, "register-proxy")) {
+					register_proxy = val;
 				}
 			}
-
-			if (switch_strlen_zero(to_domain)) {
-				to_domain = proxy;
-			}
-
+			
 			if (switch_strlen_zero(realm)) {
 				realm = name;
 			}
@@ -563,7 +562,7 @@
 			if (switch_strlen_zero(extension)) {
 				extension = username;
 			}
-
+			
 			if (switch_strlen_zero(proxy)) {
 				proxy = realm;
 			}
@@ -576,6 +575,14 @@
 				from_domain = realm;
 			}
 
+			if (switch_strlen_zero(register_proxy)) {
+				register_proxy = proxy;
+			}
+
+			if (switch_strlen_zero(to_domain)) {
+				to_domain = proxy;
+			}
+
 			gateway->retry_seconds = atoi(retry_seconds);
 			if (gateway->retry_seconds < 10) {
 				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "INVALID: retry_seconds correcting the value to 30\n");
@@ -589,6 +596,7 @@
 			if (switch_true(caller_id_in_from)) {
 				switch_set_flag(gateway, REG_FLAG_CALLERID);
 			}
+			gateway->register_url = switch_core_sprintf(gateway->pool, "sip:%s", register_proxy);
 			gateway->register_from = switch_core_sprintf(gateway->pool, "sip:%s@%s", username, from_domain);
 			gateway->register_contact = switch_core_sprintf(gateway->pool, "sip:%s@%s:%d", extension,
 															profile->extsipip ? profile->extsipip : profile->sipip, profile->sip_port);

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_reg.c	Wed Sep 19 11:28:16 2007
@@ -73,6 +73,7 @@
 
 		case REG_STATE_UNREGISTER:
 			nua_unregister(gateway_ptr->nh,
+						   NUTAG_URL(gateway_ptr->register_url),
 						   SIPTAG_FROM_STR(gateway_ptr->register_from),
 						   SIPTAG_CONTACT_STR(gateway_ptr->register_contact),
 						   SIPTAG_EXPIRES_STR(gateway_ptr->expires_str),
@@ -97,6 +98,7 @@
 
 				if (now) {
 					nua_register(gateway_ptr->nh,
+								 NUTAG_URL(gateway_ptr->register_url),
 								 SIPTAG_FROM_STR(gateway_ptr->register_from),
 								 SIPTAG_CONTACT_STR(gateway_ptr->register_contact),
 								 SIPTAG_EXPIRES_STR(gateway_ptr->expires_str),
@@ -105,6 +107,7 @@
 					gateway_ptr->retry = now + gateway_ptr->retry_seconds;
 				} else {
 					nua_unregister(gateway_ptr->nh,
+								   NUTAG_URL(gateway_ptr->register_url),
 								   SIPTAG_FROM_STR(gateway_ptr->register_from),
 								   SIPTAG_CONTACT_STR(gateway_ptr->register_contact),
 								   SIPTAG_EXPIRES_STR(gateway_ptr->expires_str),
@@ -700,7 +703,7 @@
 			goto cancel;
 		}
 	}
-	
+
 	snprintf(authentication, sizeof(authentication), "%s:%s:%s:%s", scheme, realm, gateway->register_username, gateway->register_password);
 
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Authenticating '%s' with '%s'.\n", profile->username, authentication);



More information about the Freeswitch-svn mailing list