Hello!

I have some misunderstanding regarding the processing of SIP ACK on local Kamailio 4xx reply (eg 407 Proxy Authentication Required).
In the picture below you can see that such a message just goes through the proxy and moreover gets into the request_route section.
I expect this SIP ACK to be consumed by the sl module without hitting script logic.

image.png

I put the part below to the very top of the request_route section:

request_route {

if ( is_method("ACK") ) {
        t_check_trans();
        $var(error) = $rc;
        xlog("L_ERR", "[CATCH_ACK] m=$rm cseq=$cs ru=$ru err=$var(error) [$ci]");
}
....

And as a result, I detected in syslog:

May  7 16:15:34 test-edge /usr/sbin/kamailio[11642]: ERROR: <script>: [CATCH_ACK] m=ACK cseq=153 ru=sip:mod_sofia@10.0.7.3:5060 err=-1 [051e7c50-0b10-1239-2996-001dd8b71cb2]

SIP re-INVITE (hold) from Phone:

2020/05/07 16:15:34.629973 176.6.4.6:1024 -> 185.9.7.7:5060
INVITE sip:mod_sofia@10.0.7.3:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.11.111:5060;branch=z9hG4bK00475de2da8eea118ec67caaaddc98fb;rport
Route: <sip:185.9.7.7;r2=on;lr=on;did=f98.f3f4>
Route: <sip:10.0.7.5;r2=on;lr=on;did=f98.f3f4>
Route: <sip:10.0.7.6;lr=on;did=f98.fbe>
From: <sip:312222222222@10.0.7.6>;tag=00dfd3d8da8eea118ec67caaaddc98fb
To: "Denys VOIP" <sip:5008@185.9.7.7>;tag=54Q0XNHgXBUvp
Call-ID: 051e7c50-0b10-1239-2996-001dd8b71cb2
CSeq: 153 INVITE
Contact: <sip:312222222222@192.168.11.111:5060;gr=00DCB21F-BD8E-EA11-8E88-7CAAADDC98FB>
Content-Type: application/sdp
Allow: INVITE, ACK, BYE, CANCEL, INFO, MESSAGE, NOTIFY, OPTIONS, REFER, UPDATE, PRACK
Max-Forwards: 70
Supported: 100rel, replaces, from-change, gruu
User-Agent: SIPPER for PhonerLite
Content-Length:   313

v=0
o=- 3858283927 2 IN IP4 192.168.11.111
s=SIPPER for PhonerLite
c=IN IP4 192.168.11.111
t=0 0
m=audio 5062 RTP/AVP 8 0 9 107 101
a=rtpmap:8 PCMA/8000
a=rtpmap:0 PCMU/8000
a=rtpmap:9 G722/8000
a=rtpmap:107 opus/48000/2
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ssrc:782125221
a=sendonly

SIP 407 from Kamailio:

2020/05/07 16:15:34.632298 185.9.7.7:5060 -> 176.6.4.6:1024
SIP/2.0 407 Proxy Authentication Required
Via: SIP/2.0/UDP 192.168.11.111:5060;branch=z9hG4bK00475de2da8eea118ec67caaaddc98fb;rport=1024;received=176.6.4.6
From: <sip:312222222222@10.0.7.6>;tag=00dfd3d8da8eea118ec67caaaddc98fb
To: "Denys VOIP" <sip:5008@185.9.7.7>;tag=54Q0XNHgXBUvp
Call-ID: 051e7c50-0b10-1239-2996-001dd8b71cb2
CSeq: 153 INVITE
Proxy-Authenticate: Digest realm="185.9.7.7", nonce="XrQaXjfjyrftyrtiyrft7uO"
Server: kamailio (5.2.2 (x86_64/linux))
Content-Length: 0

SIP ACK from Phone:

2020/05/07 16:15:34.672872 176.6.4.6:1024 -> 185.9.7.7:5060
ACK sip:mod_sofia@10.0.7.3:5060 SIP/2.0
Via: SIP/2.0/UDP 192.168.11.111:5060;branch=z9hG4bK00475de2da8eea118ec67caaaddc98fb;rport
Route: <sip:185.9.7.7;r2=on;lr=on;did=f98.f3f4>
Route: <sip:10.0.7.5;r2=on;lr=on;did=f98.f3f4>
Route: <sip:10.0.7.6;lr=on;did=f98.fbe>
From: <sip:312222222222@10.0.7.6>;tag=00dfd3d8da8eea118ec67caaaddc98fb
To: "Denys VOIP" <sip:5008@185.9.7.7>;tag=54Q0XNHgXBUvp
Call-ID: 051e7c50-0b10-1239-2996-001dd8b71cb2
CSeq: 153 ACK
Content-Length: 0

SIP ACK (unwanted) from Kamailio to Core:

2020/05/07 16:15:34.675546 10.0.7.5:5060 -> 10.0.7.6:5060
ACK sip:mod_sofia@10.0.7.3:5060 SIP/2.0
Max-Forwards: 10
Via: SIP/2.0/UDP 10.0.7.5;branch=z9hG4bK0d46.c33c3556c3cffbac49e717352b3575f6.0
Via: SIP/2.0/UDP 192.168.11.111:5060;received=176.6.4.6;branch=z9hG4bK00475de2da8eea118ec67caaaddc98fb;rport=1024
Route: <sip:10.0.7.6;lr=on;did=f98.fbe>
From: <sip:312222222222@10.0.7.6>;tag=00dfd3d8da8eea118ec67caaaddc98fb
To: "Denys VOIP" <sip:5008@185.9.7.7>;tag=54Q0XNHgXBUvp
Call-ID: 051e7c50-0b10-1239-2996-001dd8b71cb2
CSeq: 153 ACK
Content-Length: 0
loose-route: done

IP addresses and call-flow:
Core (10.0.7.6) --> [ Kamailio (10.0.7.5) -> Kamailio (185.9.7.7) ] --> Phone (176.6.4.6)

[root@test-edge kamailio]$ kamailio -v
version: kamailio 5.2.2 (x86_64/linux)
flags: STATS: Off, USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM, SHM_MMAP, PKG_MALLOC, 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_BLACKLIST, HAVE_RESOLV_RES
ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_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: unknown
compiled on 19:29:40 Jun 20 2019 with gcc 4.8.5



--

BR,
Denys Pozniak