FS-3842 here is the from and contact change but I can't remove the user agent but I added a new param to the gateway config called options_user_agent to set something specific

This commit is contained in:
Anthony Minessale 2012-01-29 17:37:56 -06:00
parent ce4256971b
commit f25c5aaf27
3 changed files with 14 additions and 5 deletions

View File

@ -454,7 +454,9 @@ struct sofia_gateway {
char *auth_username;
char *register_password;
char *register_from;
char *options_uri;
char *options_from_uri;
char *options_to_uri;
char *options_user_agent;
char *register_contact;
char *extension;
char *real_extension;

View File

@ -2329,6 +2329,7 @@ static void parse_gateways(sofia_profile_t *profile, switch_xml_t gateways_tag)
*caller_id_in_from = "false",
*extension = NULL,
*proxy = NULL,
*options_user_agent = NULL,
*context = profile->context,
*expire_seconds = "3600",
*retry_seconds = "30",
@ -2434,6 +2435,8 @@ static void parse_gateways(sofia_profile_t *profile, switch_xml_t gateways_tag)
ping_max = atoi(val);
} else if (!strcmp(var, "ping-min")) {
ping_min = atoi(val);
} else if (!strcmp(var, "ping-user-agent")) {
options_user_agent = val;
} else if (!strcmp(var, "proxy")) {
proxy = val;
} else if (!strcmp(var, "context")) {
@ -2575,6 +2578,7 @@ static void parse_gateways(sofia_profile_t *profile, switch_xml_t gateways_tag)
gateway->auth_username = switch_core_strdup(gateway->pool, auth_username);
gateway->register_password = switch_core_strdup(gateway->pool, password);
gateway->distinct_to = distinct_to;
gateway->options_user_agent = options_user_agent;
if (switch_true(caller_id_in_from)) {
sofia_set_flag(gateway, REG_FLAG_CALLERID);
@ -2612,8 +2616,10 @@ static void parse_gateways(sofia_profile_t *profile, switch_xml_t gateways_tag)
gateway->ping_max = ping_max;
gateway->ping_min = ping_min;
gateway->ping = switch_epoch_time_now(NULL) + ping_freq;
gateway->options_uri = switch_core_sprintf(gateway->pool, "<sip:%s;transport=%s>",
!zstr(from_domain) ? from_domain : proxy, register_transport);
gateway->options_to_uri = switch_core_sprintf(gateway->pool, "<sip:%s;transport=%s>",
!zstr(from_domain) ? from_domain : proxy, register_transport);
gateway->options_from_uri = switch_core_sprintf(gateway->pool, "<sip:%s;transport=%s>",
profile->extrtpip ? profile->extrtpip : profile->sipip, register_transport);
} else {
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "ERROR: invalid ping!\n");
}

View File

@ -354,8 +354,9 @@ void sofia_reg_check_gateway(sofia_profile_t *profile, time_t now)
nua_options(nh,
TAG_IF(gateway_ptr->register_sticky_proxy, NUTAG_PROXY(gateway_ptr->register_sticky_proxy)),
TAG_IF(user_via, SIPTAG_VIA_STR(user_via)),
SIPTAG_TO_STR(gateway_ptr->options_uri), SIPTAG_FROM_STR(profile->url),
SIPTAG_CONTACT_STR(gateway_ptr->register_contact), TAG_END());
SIPTAG_TO_STR(gateway_ptr->options_to_uri), SIPTAG_FROM_STR(gateway_ptr->options_from_uri),
TAG_IF(gateway_ptr->options_user_agent, SIPTAG_USER_AGENT_STR(gateway_ptr->options_user_agent)),
TAG_END());
switch_safe_free(user_via);
user_via = NULL;