Hello!
Given a Diversion header like the following:
Diversion:"Foo Bar"sip:+9876543211@127.0.0.101;user=phone;privacy=off;answered-count=2;re ason=deflection;counter=1;answered,"_ somewhere"sip:+9876543212@127.0.0.101;user=phone;privacy=off;answered-coun t=1;reason=deflection;counter=1;answered
Kamailio 4.4.3 (and probably earlier versions) emit error messages complaining about the comma character. According to RFC 6044 multiple comma-separated diversions in a single Diversion-header is allowed.
Full INVITE as an example:
INVITE sip:+1234567890@127.0.0.100:5060;user=phone;transport=tcp SIP/2.0 Via:SIP/2.0/TCP 127.0.0.101;branch=z9hG4bKBroadWorks.-1od4eg8-127.0.0.100V5060-0-82844591-13 54681939-1477634439005- From:sip:+9876543210@127.0.0.101;user=phone;tag=1354681939-1477634439005- To:sip:+1234567890@127.0.0.100:5060;user=phone Call-ID:BW0800390052810161562691307@127.0.0.101 CSeq:82844591 INVITE Contact:sip:127.0.0.101:5060;transport=tcp P-Asserted-Identity:sip:+9876543210@127.0.0.101;user=phone Privacy:none Diversion:"Foo Bar"sip:+9876543211@127.0.0.101;user=phone;privacy=off;answered-count=2;re ason=deflection;counter=1;answered,"_ somewhere"sip:+9876543212@127.0.0.101;user=phone;privacy=off;answered-coun t=1;reason=deflection;counter=1;answered Supported:100rel Allow:ACK,BYE,CANCEL,INFO,INVITE,OPTIONS,PRACK,REFER,NOTIFY,UPDATE X-BroadWorks-DNC:network-address="sip:+9876543210@127.0.0.101;user=phone" Accept:application/dtmf-relay,application/media_control+xml,application/sdp, application/x-broadworks-call-center+xml,multipart/mixed Max-Forwards:10 Content-Type:application/sdp Content-Disposition:session;handling=required Content-Length:267
v=0 o=BroadWorks 100442303 1 IN IP4 127.0.0.101 s=- c=IN IP4 127.0.0.102 t=0 0 m=audio 29778 RTP/AVP 8 0 18 101 a=rtpmap:8 PCMA/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:18 G729/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-15 a=sendrecv a=maxptime:20
Example log messages:
Oct 28 08:00:39 kam1 /usr/sbin/kamailio[14935]: ERROR: <core> [parser/parse_addr_spec.c:488]: parse_to_param(): ERROR parse_to_param : invalid character ',' in status 21: <<;privacy=off;answered-count=2;reason=deflection;counter=1;answered>> Oct 28 08:00:39 kam1 /usr/sbin/kamailio[14935]: ERROR: <core> [parser/parse_addr_spec.c:254]: parse_to_param(): ERROR: parse_to_param :unexpected char ["] in status 21: <<;privacy=off;answered-count=2;reason=deflection;counter=1;answered,>> . Oct 28 08:00:39 kam1 /usr/sbin/kamailio[14935]: ERROR: <core> [parser/parse_addr_spec.c:906]: parse_addr_spec(): ERROR: parse_to: invalid To - unexpected end of header in state 21 Oct 28 08:00:39 kam1 /usr/sbin/kamailio[14935]: ERROR: <core> [parser/parse_diversion.c:69]: parse_diversion_header(): ERROR:parse_diversion_header: bad diversion header Oct 28 08:00:39 kam1 /usr/sbin/kamailio[14935]: ERROR: <core> [lvalue.c:345]: lval_pvar_assign(): non existing right pvar Oct 28 08:00:39 kam1 /usr/sbin/kamailio[14935]: ERROR: <core> [lvalue.c:405]: lval_assign(): assignment failed at pos: (562,21-562,35)
The code on line 562 is $avp(div_user) = $(di{uri.user});.
Can this be handled in any way by Kamailio without changing the parser?
Best regards, Björn Bylander
Hello,
an workaround for now could be:
$(hdr(Diversion){s.select,0,,}{tobody.user})
Cheers, Daniel
On 28/10/16 11:27, Björn Bylander wrote:
Hello!
Given a Diversion header like the following:
Diversion:"Foo Bar"sip:+9876543211@127.0.0.101;user=phone;privacy=off;answered-count=2;re ason=deflection;counter=1;answered,"_ somewhere"sip:+9876543212@127.0.0.101;user=phone;privacy=off;answered-coun t=1;reason=deflection;counter=1;answered
Kamailio 4.4.3 (and probably earlier versions) emit error messages complaining about the comma character. According to RFC 6044 multiple comma-separated diversions in a single Diversion-header is allowed.
Full INVITE as an example:
INVITE sip:+1234567890@127.0.0.100:5060;user=phone;transport=tcp SIP/2.0 Via:SIP/2.0/TCP 127.0.0.101;branch=z9hG4bKBroadWorks.-1od4eg8-127.0.0.100V5060-0-82844591-13 54681939-1477634439005- From:sip:+9876543210@127.0.0.101;user=phone;tag=1354681939-1477634439005- To:sip:+1234567890@127.0.0.100:5060;user=phone Call-ID:BW0800390052810161562691307@127.0.0.101 CSeq:82844591 INVITE Contact:sip:127.0.0.101:5060;transport=tcp P-Asserted-Identity:sip:+9876543210@127.0.0.101;user=phone Privacy:none Diversion:"Foo Bar"sip:+9876543211@127.0.0.101;user=phone;privacy=off;answered-count=2;re ason=deflection;counter=1;answered,"_ somewhere"sip:+9876543212@127.0.0.101;user=phone;privacy=off;answered-coun t=1;reason=deflection;counter=1;answered Supported:100rel Allow:ACK,BYE,CANCEL,INFO,INVITE,OPTIONS,PRACK,REFER,NOTIFY,UPDATE X-BroadWorks-DNC:network-address="sip:+9876543210@127.0.0.101;user=phone" Accept:application/dtmf-relay,application/media_control+xml,application/sdp, application/x-broadworks-call-center+xml,multipart/mixed Max-Forwards:10 Content-Type:application/sdp Content-Disposition:session;handling=required Content-Length:267
v=0 o=BroadWorks 100442303 1 IN IP4 127.0.0.101 s=- c=IN IP4 127.0.0.102 t=0 0 m=audio 29778 RTP/AVP 8 0 18 101 a=rtpmap:8 PCMA/8000 a=rtpmap:0 PCMU/8000 a=rtpmap:18 G729/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-15 a=sendrecv a=maxptime:20
Example log messages:
Oct 28 08:00:39 kam1 /usr/sbin/kamailio[14935]: ERROR: <core> [parser/parse_addr_spec.c:488]: parse_to_param(): ERROR parse_to_param : invalid character ',' in status 21: <<;privacy=off;answered-count=2;reason=deflection;counter=1;answered>> Oct 28 08:00:39 kam1 /usr/sbin/kamailio[14935]: ERROR: <core> [parser/parse_addr_spec.c:254]: parse_to_param(): ERROR: parse_to_param :unexpected char ["] in status 21: <<;privacy=off;answered-count=2;reason=deflection;counter=1;answered,>> . Oct 28 08:00:39 kam1 /usr/sbin/kamailio[14935]: ERROR: <core> [parser/parse_addr_spec.c:906]: parse_addr_spec(): ERROR: parse_to: invalid To - unexpected end of header in state 21 Oct 28 08:00:39 kam1 /usr/sbin/kamailio[14935]: ERROR: <core> [parser/parse_diversion.c:69]: parse_diversion_header(): ERROR:parse_diversion_header: bad diversion header Oct 28 08:00:39 kam1 /usr/sbin/kamailio[14935]: ERROR: <core> [lvalue.c:345]: lval_pvar_assign(): non existing right pvar Oct 28 08:00:39 kam1 /usr/sbin/kamailio[14935]: ERROR: <core> [lvalue.c:405]: lval_assign(): assignment failed at pos: (562,21-562,35)
The code on line 562 is “$avp(div_user) = $(di{uri.user});”.
Can this be handled in any way by Kamailio without changing the parser?
Best regards, Björn Bylander
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list sr-users@lists.sip-router.org http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users