Module: kamailio Branch: master Commit: 9c62af6b2fe5e270db5ed79b8d6f2794a9de34cf URL: https://github.com/kamailio/kamailio/commit/9c62af6b2fe5e270db5ed79b8d6f2794...
Author: Daniel-Constantin Mierla miconda@gmail.com Committer: Daniel-Constantin Mierla miconda@gmail.com Date: 2025-03-27T08:40:41+01:00
tcpops: support also sip uri for ki_tcp_get_conid_helper() addr param
---
Modified: src/modules/tcpops/tcpops_mod.c
---
Diff: https://github.com/kamailio/kamailio/commit/9c62af6b2fe5e270db5ed79b8d6f2794... Patch: https://github.com/kamailio/kamailio/commit/9c62af6b2fe5e270db5ed79b8d6f2794...
---
diff --git a/src/modules/tcpops/tcpops_mod.c b/src/modules/tcpops/tcpops_mod.c index a8c9e940d85..cf7abf5f54f 100644 --- a/src/modules/tcpops/tcpops_mod.c +++ b/src/modules/tcpops/tcpops_mod.c @@ -40,6 +40,7 @@ #include "../../core/events.h" #include "../../core/kemi.h" #include "../../core/pass_fd.h" +#include "../../core/parser/parse_uri.h"
#include "tcpops.h"
@@ -556,21 +557,34 @@ static int ki_tcp_get_conid_helper(sip_msg_t *msg, str *saddr, pv_spec_t *pvs)
init_dest_info(&dst);
- u = &uaddr; - u->port_no = 5060; - u->host = *saddr; - /* detect ipv6 */ - p = memchr(saddr->s, ']', saddr->len); - if(p) { - p++; - p = memchr(p, ':', saddr->s + saddr->len - p); + if((saddr->len > 5) + && (strncmp(saddr->s, "sips:", 5) == 0 + || strncmp(saddr->s, "sip:", 4) == 0)) { + if(parse_uri(saddr->s, saddr->len, &uaddr) < 0) { + LM_ERR("failed to parse uri [%.*s]\n", saddr->len, saddr->s); + return -1; + } + u = &uaddr; + if(u->port_no == 0) { + u->port_no = 5060; + } } else { - p = memchr(saddr->s, ':', saddr->len); - } - if(p) { - u->host.len = p - saddr->s; - p++; - u->port_no = str2s(p, saddr->len - (p - saddr->s), NULL); + u = &uaddr; + u->port_no = 5060; + u->host = *saddr; + /* detect ipv6 */ + p = memchr(saddr->s, ']', saddr->len); + if(p) { + p++; + p = memchr(p, ':', saddr->s + saddr->len - p); + } else { + p = memchr(saddr->s, ':', saddr->len); + } + if(p) { + u->host.len = p - saddr->s; + p++; + u->port_no = str2s(p, saddr->len - (p - saddr->s), NULL); + } }
ret = sip_hostport2su(&dst.to, &u->host, u->port_no, &dst.proto);