]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-7917 add check for ipv6 in sofia_glue_create_via
authorLuis Azedo <luis@2600hz.com>
Thu, 30 Jul 2015 15:09:56 +0000 (16:09 +0100)
committerLuis Azedo <luis@2600hz.com>
Thu, 30 Jul 2015 15:09:56 +0000 (16:09 +0100)
src/mod/endpoints/mod_sofia/sofia_glue.c

index 0a46691a0ed163abf002c6a4f855309edf68a69f..ec25e3645d70cd2362643821b1e37bdd475b2629 100644 (file)
@@ -455,17 +455,18 @@ char *sofia_glue_create_external_via(switch_core_session_t *session, sofia_profi
 
 char *sofia_glue_create_via(switch_core_session_t *session, const char *ip, switch_port_t port, sofia_transport_t transport)
 {
+       char *ipv6 = strchr(ip, ':');
        if (port && port != 5060) {
                if (session) {
-                       return switch_core_session_sprintf(session, "SIP/2.0/%s %s:%d;rport", sofia_glue_transport2str(transport), ip, port);
+                       return switch_core_session_sprintf(session, "SIP/2.0/%s %s%s%s:%d;rport", sofia_glue_transport2str(transport), ipv6 ? "[" : "", ip, ipv6 ? "]" : "", port);
                } else {
-                       return switch_mprintf("SIP/2.0/%s %s:%d;rport", sofia_glue_transport2str(transport), ip, port);
+                       return switch_mprintf("SIP/2.0/%s %s%s%s:%d;rport", sofia_glue_transport2str(transport), ipv6 ? "[" : "", ip, ipv6 ? "]" : "", port);
                }
        } else {
                if (session) {
-                       return switch_core_session_sprintf(session, "SIP/2.0/%s %s;rport", sofia_glue_transport2str(transport), ip);
+                       return switch_core_session_sprintf(session, "SIP/2.0/%s %s%s%s;rport", sofia_glue_transport2str(transport), ipv6 ? "[" : "", ip, ipv6 ? "]" : "");
                } else {
-                       return switch_mprintf("SIP/2.0/%s %s;rport", sofia_glue_transport2str(transport), ip);
+                       return switch_mprintf("SIP/2.0/%s %s%s%s;rport", sofia_glue_transport2str(transport), ipv6 ? "[" : "", ip, ipv6 ? "]" : "");
                }
        }
 }