[commit] r5713 - in freeswitch/trunk: conf src/mod/endpoints/mod_sofia
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);
participants (1)
-
Freeswitch SVN