I added a log line to the top of kamailio.cfg
request_route block to
grab the message buffer of the REFER. I also put a condition around
the sanity_check to skip it for method=REFER …
I got the following output for $mb at the start of request_route for
the REFER packet (I have substituted MYPUBLICIP for my ip address)
2(341) INFO: <script>: --- SCRIPT Got a REFER packet from MYPUBLICIP
to sip:105@MYPUBLICIP:1095;transport=tcp;line=5twzz1pj with message
buffer REFER sip:105@192.168.1.15:1095;transport=tcp;line=5twzz1pj
SIP/2.0
Via: SIP/2.0/UDP
MYPUBLICIP;branch=z9hG4bKcfed.c87adfb2000000000000000000000000.0
To: <sip:105@MYPUBLICIP>;tag=q42s05ts0b
From:
<sip:controller@kamailio.org>;tag=48329130e552128b3c54a5eeb8c86eea-03b0
CSeq: 11 REFER
Call-ID: 1a37a04a3bd8d656-347@MYPUBLICIP
Route: <sip:MYPUBLICIP;r2=on;lr;did=cd7.3482;nat=yes>,
<sip:MYPUBLICIP;transport=tcp;r2=on;lr;did=cd7.3482;nat=yes>
Max-Forwards: 70
Content-Length: 0
User-Agent: kamailio (4.2.0 (x86_64/linux))
Referred-By: sip:controller@kamailio.org
Refer-To: sip:106@MYPUBLICIP
sip:controller@kamailio.org
The last line does not look right to me … why is there a sip uri at
the end of the message buffer with no field name.
later on in the output I see:
Oct 24 10:50:27 KamTesting002 kamailio[402]: DEBUG: tm
[t_lookup.c:1373]: t_newtran(): DEBUG: t_newtran: msg id=2 , global
msg id=1 , T on entrance=0xffffffffffffffff
Oct 24 10:50:27 KamTesting002 kamailio[402]: ERROR: tm
[t_lookup.c:1403]: t_newtran(): ERROR: t_newtran: EoH not parsed
On 24 Oct 2014, at 10:09, Paul Smith <paul.smith(a)claritytele.com
<mailto:paul.smith@claritytele.com>> wrote:
Thank you for the reply Daniel. I have enabled
debug=3 and put in a
few more xlog lines. I can see the REFER coming in on local
interface 127.0.0.1. I am now trying to narrow down the issue in
the kamailio.cfg.
My conclusions so far are:
1) The REFER packet has a problem which causes it to fail sanity_check()
2) sanity_check returns 0=exit rather than -1 = error.
I have 2 snom phones registered to the kamailio server over NAT and
can make calls between them.
The REFER is failing in the REQINIT route block. The script stops
there.
Kamailio.cfg : I started again with default 4.2 and kamailio.cfg as
shipped enabled MYSQL, USRLOCDB, inserted dialog module, replaced
rtpproxy with rtpengine.
#!define WITH_MYSQL
#!define WITH_AUTH
#!define WITH_USRLOCDB
#!define WITH_NAT
amended REQINIT as follows. I see log lines for “going to sanity
check” but neither “Malformed” or “returning” line are reached.
...
if (is_method("REFER")) {xlog("L_INFO","REFER going to
sanity check\n");}
if(!sanity_check("1511", "7")) {
xlog("L_INFO","Malformed SIP message from
$si:$sp\n");
exit;
}
if (is_method("REFER")) {xlog("L_INFO","REFER returning
OK
from sanity check");}
...
Then run from the command line:
kamcmd dlg.bridge_dlg
sip:105@MYPUBLICIP sip:106@MYPUBLICIP sip:MYPUBLICIP:5060
Kamailio Output:
2(32566) DEBUG: <core> [parser/msg_parser.c:623]: parse_msg(): SIP
Request:
2(32566) DEBUG: <core> [parser/msg_parser.c:625]: parse_msg():
method: <REFER>
2(32566) DEBUG: <core> [parser/msg_parser.c:627]: parse_msg():
uri: <sip:105@192.168.1.15:1082;transport=tcp;line=5twzz1pj>
2(32566) DEBUG: <core> [parser/msg_parser.c:629]: parse_msg():
version: <SIP/2.0>
2(32566) DEBUG: <core> [parser/parse_via.c:1284]:
parse_via_param(): Found param type 232, <branch> =
<z9hG4bKf666.1955cd53000000000000000000000000.0>; state=16
2(32566) DEBUG: <core> [parser/parse_via.c:2672]: parse_via(): end
of header reached, state=5
2(32566) DEBUG: <core> [parser/msg_parser.c:513]: parse_headers():
parse_headers: Via found, flags=2
2(32566) DEBUG: <core> [parser/msg_parser.c:515]: parse_headers():
parse_headers: this is the first via
2(32566) DEBUG: <core> [receive.c:154]: receive_msg(): After
parse_msg...
2(32566) DEBUG: <core> [receive.c:197]: receive_msg(): preparing to
run routing scripts...
2(32566) INFO: <script>: --- SCRIPT Got a REFER packet from
MYPUBLICIP to sip:105@192.168.1.15:1082;transport=tcp;line=5twzz1pj --
2(32566) DEBUG: <core> [parser/parse_addr_spec.c:176]:
parse_to_param(): DEBUG: add_param: tag=wg03aczruz
2(32566) DEBUG: <core> [parser/parse_addr_spec.c:898]:
parse_addr_spec(): end of header reached, state=29
2(32566) DEBUG: <core> [parser/msg_parser.c:190]: get_hdr_field():
DEBUG: get_hdr_field: <To> [41]; uri=[sip:105@MYPUBLICIP]
2(32566) DEBUG: <core> [parser/msg_parser.c:192]: get_hdr_field():
DEBUG: to body [<sip:105@MYPUBLICIP>]
2(32566) DEBUG: <core> [parser/msg_parser.c:170]: get_hdr_field():
get_hdr_field: cseq <CSeq>: <11> <REFER>
2(32566) DEBUG: maxfwd [mf_funcs.c:85]: is_maxfwd_present(): value
= 70
2(32566) INFO: <script>: REFER going to sanity check
2(32566) DEBUG: <core> [parser/msg_parser.c:204]: get_hdr_field():
DEBUG: get_hdr_body : content_length=0
2(32566) DEBUG: sanity [mod_sanity.c:255]: w_sanity_check(): sanity
checks result: 0
On 23 Oct 2014, at 15:39, Daniel-Constantin Mierla
<miconda(a)gmail.com <mailto:miconda@gmail.com>> wrote:
Hello,
what should be happen, is the following:
- invite from controller to first parameter (caller of desired call)
- after 200ok comes from 'caller', kamailio sends REFER to it
pointing to the second parameter (callee of desired call) and then
BYE, getting out of the initial call
- after getting the REFER, caller should send a new INVITE to callee
You can run with debug=3 to see what happens. In kamailio config is
nothing special needed, just allow traffic from kamailio to go back
to kamailio.
Cheers,
Daniel
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
sr-users(a)lists.sip-router.org <mailto:sr-users@lists.sip-router.org>
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users