I'm using Kamailio 3.1.5 in front of asterisk servers.
Kamailio handles all the SIP registrations. Calls from SIP
phones are forwarded to asterisks and then dialled out to
Kamailio.
root@SBCserver:~#
kamailio -V
version: kamailio
3.1.5 (x86_64/linux) 76fff5
flags: STATS:
Off, USE_IPV6, USE_TCP, USE_TLS, TLS_HOOKS,
USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK,
SHM_MEM, SHM_MMAP, PKG_MALLOC, DBG_QM_MALLOC, 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_LISTEN 16, MAX_URI_SIZE
1024, BUF_SIZE 65535, PKG_SIZE 4MB
poll method
support: poll, epoll_lt, epoll_et, sigio_rt, select.
id: 76fff5
compiled on
08:21:33 Oct 27 2011 with gcc 4.6.1
root@SBCserver:~#
When call is initiated from a softphone and is in ringing
phase, CANCEL just don't work. I've done some initial
debugging and the following piece of code in main route is
failing.
# CANCEL
processing
if
(is_method("CANCEL"))
{
xlog("L_NOTICE","$rm from $fu (IP:$si:$sp) ---CAPTURED
IN MAIN---\n");
if
(t_check_trans()){
t_relay();
xlog("L_NOTICE","$rm from $fu (IP:$si:$sp) ---CHECK
TRANS TRUE---\n");
}
xlog("L_NOTICE","$rm from $fu (IP:$si:$sp) ---CHECK
TRANS FALSE---\n");
exit;
}
The same Call CANCEL scenario works fine for any client
on Public IP !
Hope to get some pointers for the solution.
Sammy.