merge patch from http://jira.freeswitch.org/browse/SFSIP-11 . Please note, when registering to a UA that requires the from header to match the auth username, you must now use the new setting force-fromuser. See sample configuration file for more details. Thanks Marcel.
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@4970 d0543943-73ff-0310-b7d9-9358b9ac24b2
This commit is contained in:
parent
8a875e8ed3
commit
1ab860da40
|
@ -10,6 +10,8 @@
|
|||
<!--<param name="realm" value="asterlink.com"/>-->
|
||||
<!--/// account password *required* ///-->
|
||||
<!--<param name="password" value="2007"/>-->
|
||||
<!--/// replace the INVITE from user with the auth username ///-->
|
||||
<!--<param name="force-fromuser" value="false"/>-->
|
||||
<!--/// extension for inbound calls: *optional* same as username, if blank ///-->
|
||||
<!--<param name="extension" value="cluecon"/>-->
|
||||
<!--/// proxy host: *optional* same as realm, if blank ///-->
|
||||
|
|
|
@ -890,7 +890,9 @@ static switch_call_cause_t sofia_outgoing_channel(switch_core_session_t *session
|
|||
}
|
||||
|
||||
profile = gateway_ptr->profile;
|
||||
tech_pvt->gateway_from_str = switch_core_session_strdup(nsession, gateway_ptr->register_from);
|
||||
if (gateway_ptr->force_fromuser) {
|
||||
tech_pvt->gateway_from_str = switch_core_session_strdup(nsession, gateway_ptr->register_from);
|
||||
}
|
||||
if (!strchr(dest, '@')) {
|
||||
tech_pvt->dest = switch_core_session_sprintf(nsession, "sip:%s@%s", dest, gateway_ptr->register_proxy + 4);
|
||||
} else {
|
||||
|
@ -1095,3 +1097,4 @@ SWITCH_MOD_DECLARE(switch_status_t) switch_module_shutdown(void)
|
|||
* vim:set softtabstop=4 shiftwidth=4 tabstop=4 expandtab:
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -176,6 +176,7 @@ struct outbound_reg {
|
|||
char *register_realm;
|
||||
char *register_username;
|
||||
char *register_password;
|
||||
switch_bool_t force_fromuser;
|
||||
char *register_from;
|
||||
char *register_contact;
|
||||
char *register_to;
|
||||
|
|
|
@ -680,7 +680,7 @@ switch_status_t config_sofia(int reload)
|
|||
if ((gateway = switch_core_alloc(profile->pool, sizeof(*gateway)))) {
|
||||
char *register_str = "true", *scheme = "Digest",
|
||||
*realm = NULL,
|
||||
*username = NULL, *password = NULL, *extension = NULL, *proxy = NULL, *context = "default", *expire_seconds = "3600";
|
||||
*username = NULL, *password = NULL, *force_fromuser = "false", *extension = NULL, *proxy = NULL, *context = "default", *expire_seconds = "3600";
|
||||
|
||||
gateway->pool = profile->pool;
|
||||
gateway->profile = profile;
|
||||
|
@ -702,6 +702,8 @@ switch_status_t config_sofia(int reload)
|
|||
username = val;
|
||||
} else if (!strcmp(var, "password")) {
|
||||
password = val;
|
||||
} else if (!strcmp(var, "force-fromuser")) {
|
||||
force_fromuser = val;
|
||||
} else if (!strcmp(var, "extension")) {
|
||||
extension = val;
|
||||
} else if (!strcmp(var, "proxy")) {
|
||||
|
@ -745,6 +747,7 @@ switch_status_t config_sofia(int reload)
|
|||
gateway->register_realm = switch_core_strdup(gateway->pool, realm);
|
||||
gateway->register_username = switch_core_strdup(gateway->pool, username);
|
||||
gateway->register_password = switch_core_strdup(gateway->pool, password);
|
||||
gateway->force_fromuser = switch_true(force_fromuser);
|
||||
gateway->register_from = switch_core_sprintf(gateway->pool, "sip:%s@%s", username, realm);
|
||||
gateway->register_contact = switch_core_sprintf(gateway->pool, "sip:%s@%s:%d", extension, profile->sipip, profile->sip_port);
|
||||
|
||||
|
@ -1765,3 +1768,4 @@ void sofia_handle_sip_i_options(int status,
|
|||
|
||||
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue