]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
Fix issue when fs_path is used so we pick the correct media IP in our outbound invit...
authorBrian West <brian@freeswitch.org>
Tue, 30 Nov 2010 23:38:44 +0000 (17:38 -0600)
committerBrian West <brian@freeswitch.org>
Tue, 30 Nov 2010 23:43:13 +0000 (17:43 -0600)
src/mod/endpoints/mod_sofia/mod_sofia.c

index 3bb926adf3cf573a71f56539dacb895a9145d3b9..74c4c0897e99749745ae3f4bbd25f35e99d5f52d 100644 (file)
@@ -3900,7 +3900,26 @@ static switch_call_cause_t sofia_outgoing_channel(switch_core_session_t *session
        switch_channel_set_variable_printf(nchannel, "sip_local_network_addr", "%s", profile->extsipip ? profile->extsipip : profile->sipip);
        switch_channel_set_variable(nchannel, "sip_profile_name", profile_name);
 
-       switch_split_user_domain(switch_core_session_strdup(nsession, tech_pvt->dest), NULL, &tech_pvt->remote_ip);
+       if (switch_stristr("fs_path", tech_pvt->dest)) {
+               char *remote_host = NULL;
+               const char *s;
+               
+               if ((s = switch_stristr("fs_path=", tech_pvt->dest))) {
+                       s += 8;
+               }
+
+               if (s) {
+                       remote_host = switch_core_session_strdup(nsession, s);
+                       switch_url_decode(remote_host);
+               }
+               if (!zstr(remote_host)) {
+                       switch_split_user_domain(remote_host, NULL, &tech_pvt->remote_ip);
+               }
+       } 
+
+       if (zstr(tech_pvt->remote_ip)) {
+               switch_split_user_domain(switch_core_session_strdup(nsession, tech_pvt->dest), NULL, &tech_pvt->remote_ip);
+       }
 
        if (dest_to) {
                if (strchr(dest_to, '@')) {