We send HEP3 data to the UDP listener in kamailio. In this HEP3 data, there are SIP requests and replies. We want to route these SIP messages through request_route
and onreply_route
. For this, we use the SipCapture module with the following settings:
modparam("sipcapture", "db_url", DBURL)
modparam("sipcapture", "capture_on", 1)
modparam("sipcapture", "hep_capture_on", 1)
modparam("sipcapture", "insert_retries", 0)
modparam("sipcapture", "insert_retry_timeout", 0)
request_route {
xlog("L_INFO", "Got new request ($ci) $rm: $si => $Ri\n");
}
onreply_route {
xlog("L_INFO", "Got new reply ($ci) $rm: $si => $Ri - Reply Code $rs\n");
}
In the past (version kamailio 5.1.x - 5.4.x), this worked as expected. From the logs:
2(8) INFO: <script>: Got new request (7xkVDrAWegvcZl-ACaUb1HWHwiCYhAJR) INVITE: 217.116.121.230 => 172.20.21.4
3(9) INFO: <script>: Got new reply (7xkVDrAWegvcZl-ACaUb1HWHwiCYhAJR) INVITE: 172.20.21.4 => 217.116.121.230 - Reply Code 407
Starting with kamailio 5.5.x, some pseudo variables are broken. From the logs:
1(7) INFO: <script>: Got new request (7xkVDrAWegvcZl-ACaUb1HWHwiCYhAJR) INVITE: 217.116.121.230 => 217.116.121
2(8) INFO: <script>: Got new reply (7xkVDrAWegvcZl-ACaUb1HWHwiCYhAJR) INVITE: 172.20.21.4 => 172.20.21.4 3(9) INFO: <script>: ...
As you can see, the $Ri
in the request is wrong. It looks like the first three octets of the $si
and the fourth octet is missing entirely.
And for the reply:
$Ri
is the $si
.Reply Code
, the actual reply code.To my untrained eye this looks like possible memory corruption.
/usr/sbin/kamailio -E -DD -dd -f "/etc/kamailio/kamailio.cfg"
./heplify -t pcap -rf "sipcapture-bug.pcap" -hs localhost:9060 -e -eof-exit
see above
see attached sipcapture-bug.pcap
Use kamailio 5.4.x or earlier versions.
When setting nonsip_hook
= 1
, then the $hep(...)
pseudo variables look fine. Unfortunately, we don't know how process the SIP messages after that point.
modparam("sipcapture", "nonsip_hook", 1)
...
event_route[sipcapture:request] {
xlog("L_INFO", "version: $hep(version)\n");
xlog("L_INFO", "src_ipv4: $hep(0x003)\n");
xlog("L_INFO", "dst_ipv4: $hep(0x004)\n");
xlog("L_INFO", "src_proto: $hep(0x007)\n");
xlog("L_INFO", "dst_proto: $hep(0x008)\n");
xlog("L_INFO", "proto: $hep(0x00b)\n");
}
kamailio -v
version: kamailio 5.8.1 (x86_64/linux)
flags: USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MMAP, PKG_MALLOC, MEM_JOIN_FREE, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLOCKLIST, HAVE_RESOLV_RES, TLS_PTHREAD_MUTEX_SHARED
ADAPTIVE_WAIT_LOOPS 1024, MAX_RECV_BUFFER_SIZE 262144, MAX_SEND_BUFFER_SIZE 262144, MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB
poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.
id:
compiled with gcc 12.2.0
Also tested with same error: 5.5.x, 5.6.x, 5.7.x
# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 12 (bookworm)
Release: 12
Codename: bookworm
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you are subscribed to this thread.