Hi folks,
Since upgrading vom Kamailio 1.5 to 3.1 I have a problem using get_redirects from the uac_redirect module. It seems that there is a problem with parsing the Contact header from the received 302.
This is my script excerpt: if (t_check_status("3[0-9][0-9]")) { get_redirects("*"); if (!t_relay()) { xlog("L_ERR","t_relay failed\n"); } }
Some 302 messages lead (as expected) to INVITEs send to targets in the Contact header, for others t_relay fails.
A working example would be Contact:sip:+49406686100@192.168.0.1:5060;user=phone;q=0.5,sip: +49406686100@192.168.0.2:5060;user=phone;q=0.25
It fails on Contact: sip:+49406686100@192.168.0.1:5060
The following log messages appear when calling get_redirects (and failing t_relay):
kamailio[7372]: DEBUG: uac_redirect [rd_funcs.c:74]: resume branch=0 kamailio[7372]: DEBUG: uac_redirect [rd_funcs.c:81]: checking branch=0 (added=0) kamailio[7372]: DEBUG: uac_redirect [rd_funcs.c:85]: branch=0 is a redirect (added=0) kamailio[7372]: WARNING: <core> [mem/q_malloc.c:366]: qm_malloc(0x82ba320, 32) called from <core>: parser/msg_parser.c: parse_headers(339) kamailio[7372]: WARNING: <core> [mem/q_malloc.c:406]: qm_malloc(0x82ba320, 32) returns address 0x8311d94 frag. 0x8311d7c (size=32) on 1 -th hit kamailio[7372]: DEBUG: uac_redirect [rd_funcs.c:233]: contact hdr not found in sh_rpl
The Contact header that fails obviously has no parameters for the URI and contact itself. As far as I understand the RFC 3261 BNF this is valid. The 302 response is by the way created by kamailio when using the LCR module (like this) if (!load_gws("1")) {... exit;} if (!next_gw()) {... exit; } sl_send_reply("302", "Not here");
Did I miss anything when upgrading or is this a problem with the parser?
Cheers, Stefan