Description

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:

To my untrained eye this looks like possible memory corruption.

Troubleshooting

Reproduction

  1. Set up a kamailio 5.8.1 using the attached kamailio.cfg
    /usr/sbin/kamailio -E -DD -dd -f "/etc/kamailio/kamailio.cfg"
  2. Send the HEP3 data using heplify
    ./heplify -t pcap -rf "sipcapture-bug.pcap" -hs localhost:9060 -e -eof-exit

Debugging Data

Log Messages

see above

SIP Traffic

see attached sipcapture-bug.pcap

Possible Solutions

Use kamailio 5.4.x or earlier versions.

Additional Information

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");
}

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.Message ID: <kamailio/kamailio/issues/3835@github.com>