From 14670263837dd158f8f4512a474ea7dee3a561b3 Mon Sep 17 00:00:00 2001 From: Henning Westerholt Date: Tue, 2 Aug 2022 08:47:17 +0000 Subject: [PATCH] usrloc: fix sending keepalive messages for IPv6, it was missing the brackets (cherry picked from commit bd40f0d08f5d0f14b301cb492d1082c71be91c50) --- src/modules/usrloc/ul_keepalive.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/modules/usrloc/ul_keepalive.c b/src/modules/usrloc/ul_keepalive.c index a69a76d8b9e..5b1572483b3 100644 --- a/src/modules/usrloc/ul_keepalive.c +++ b/src/modules/usrloc/ul_keepalive.c @@ -61,7 +61,7 @@ Content-Length: 0\r\n\r\n" #define ULKA_CALLID_PREFIX_LEN (sizeof(ULKA_CALLID_PREFIX) - 1) #define ULKA_MSG "%.*s %.*s SIP/2.0\r\n" \ - "Via: SIP/2.0/%.*s %.*s:%.*s;branch=z9hG4bKx.%u.%u.0\r\n" \ + "Via: SIP/2.0/%.*s %s%.*s%s:%.*s;branch=z9hG4bKx.%u.%u.0\r\n" \ "%s%.*s%.*s" \ "From: <%.*s>;tag=%.*s-%x-%lx-%lx-%x.%x\r\n" \ "To: \r\n" \ @@ -101,6 +101,7 @@ int ul_ka_urecord(urecord_t *ur) socket_info_t *ssock; dest_info_t idst; unsigned int bcnt = 0; + unsigned int via_ipv6 = 0; int aortype = 0; int i; struct timeval tv; @@ -195,8 +196,14 @@ int ul_ka_urecord(urecord_t *ur) idst.send_sock = ssock; if(ssock->useinfo.name.len > 0) { + if (ssock->useinfo.address.af == AF_INET6) { + via_ipv6 = 1; + } vaddr = ssock->useinfo.name; } else { + if (ssock->address.af == AF_INET6) { + via_ipv6 = 1; + } vaddr = ssock->address_str; } if(ssock->useinfo.port_no > 0) { @@ -212,7 +219,9 @@ int ul_ka_urecord(urecord_t *ur) ul_ka_method.len, ul_ka_method.s, uc->c.len, uc->c.s, sproto.len, sproto.s, + (via_ipv6==1)?"[":"", vaddr.len, vaddr.s, + (via_ipv6==1)?"]":"", vport.len, vport.s, _ul_ka_counter, bcnt, (uc->path.len>0)?"Route: ":"",