]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-3842 here is the from and contact change but I can't remove the user agent but...
authorAnthony Minessale <anthm@freeswitch.org>
Sun, 29 Jan 2012 23:37:56 +0000 (17:37 -0600)
committerAnthony Minessale <anthm@freeswitch.org>
Sun, 29 Jan 2012 23:37:56 +0000 (17:37 -0600)
src/mod/endpoints/mod_sofia/mod_sofia.h
src/mod/endpoints/mod_sofia/sofia.c
src/mod/endpoints/mod_sofia/sofia_reg.c

index 0faa55baa1b3e821fc16cabd63a0be6f0609336f..1860c082908eaa212e2c92fea3dd345e72660073 100644 (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;
index 26a47e49e788fb49d7012f9b6545eb0a12109629..500fc6caceef5ee7d0362427d6216c7598cf069c 100644 (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");
                                }
index a768cd6b90cd11797acb9fc5a40b45505f1c0e07..0a8b5e89e4908701369a6fbc774876721106c6bf 100644 (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;