<html>
<head>
<meta content="text/html; charset=windows-1252"
http-equiv="Content-Type">
</head>
<body bgcolor="#FFFFFF" text="#000000">
The uac from/to replacement relies that parties keep the same
from/to headers content.<br>
<br>
The mechanism to replace A with B is to combine both and get the key
X which is added in the record-route as parameter. Then practically
from A and X results B and from B and X results A.<br>
<br>
Now in this case, the notify comes with something different than was
in SUBSCRIBE, therefore the result is messed up.<br>
<br>
Perhaps a check over the result to see if it is at least a good
value would be useful, but doesn't solve this issue.<br>
<br>
If both sides in this dialog rely on RFC3261 dialog matching
(call-id, from tag and to tag), then practically after the initial
SUBSCRIBE (where is no To tag), then you can replace From/To display
name and uri with anything (e.g., anonymous).<br>
<br>
An improvement could be to know in advance that one side is not
keeping From/To, then practically storing (encrypted/encode) the
intial value only. This requires C coding.<br>
<br>
Cheers,<br>
Daniel<br>
<br>
<div class="moz-cite-prefix">On 30/07/14 23:14, Alex Villacís Lasso
wrote:<br>
</div>
<blockquote cite="mid:53D96020.2040508@palosanto.com" type="cite">I
am currently handling a system that runs kamailio and asterisk in
the same machine. The kamailio instances are being used to emulate
multiple SIP domains, by means of From/To mangling of incoming
packets, which are then routed to Asterisk. The attached
kamailio.cfg does this work.
<br>
<br>
There is an problem when handling SUBSCRIBE requests (as required
for BLF and voicemail indications). My configuration is written so
that these SUBSCRIBE requests are not handled by kamailio, but
instead routed to asterisk. There is a failure to check From/To
headers to see whether NOTIFY packets generated as part of a
subscription can be restored using the information in
Record-Route. The end result is that kamailio ends up sending
packets with garbled tags that are (rightly) rejected by the SIP
endpoint.
<br>
<br>
The following is an example that demonstrates the issue (using
Jitsi as endpoint):
<br>
<br>
After registration, Jitsi sends a SUBSCRIBE request:
<br>
<br>
SUBSCRIBE <a class="moz-txt-link-freetext" href="sip:avillacisIM@pbx.villacis.com">sip:avillacisIM@pbx.villacis.com</a> SIP/2.0
<br>
Call-ID: 87ff107c2665316f4e257b358c54b3d4@0:0:0:0:0:0:0:0
<br>
CSeq: 2 SUBSCRIBE
<br>
From: "avillacisIM"
<a class="moz-txt-link-rfc2396E" href="sip:avillacisIM@pbx.villacis.com"><sip:avillacisIM@pbx.villacis.com></a>;tag=bf427f4a
<br>
To: "avillacisIM" <a class="moz-txt-link-rfc2396E" href="sip:avillacisIM@pbx.villacis.com"><sip:avillacisIM@pbx.villacis.com></a>
<br>
Max-Forwards: 70
<br>
Contact: "avillacisIM"
<a class="moz-txt-link-rfc2396E" href="sip:avillacisIM@192.168.3.2:5060;transport=udp;registering_acc=pbx_villacis_com"><sip:avillacisIM@192.168.3.2:5060;transport=udp;registering_acc=pbx_villacis_com></a><br>
User-Agent: Jitsi2.5.5255Linux
<br>
Event: message-summary
<br>
Accept: application/simple-message-summary
<br>
Expires: 3600
<br>
Via: SIP/2.0/UDP
192.168.3.2:5060;branch=z9hG4bK-343638-bd3ea073eb8920481b32962f3221eb6f
<br>
Proxy-Authorization: Digest
username="avillacisIM",realm="pbx.villacis.com",nonce="U9lZJlPZV/r06Xep/ukc1UzAIO0V3TbS",uri=<a class="moz-txt-link-rfc2396E" href="sip:avillacisIM@pbx.villacis.com">"sip:avillacisIM@pbx.villacis.com"</a>,response="0e18f4913c2693f6154c91f158fb17fe"<br>
Content-Length: 0
<br>
<br>
This packet is mangled by the configuration, and is sent to
asterisk like this:
<br>
<br>
SUBSCRIBE <a class="moz-txt-link-freetext" href="sip:avillacisIM@pbx.villacis.com">sip:avillacisIM@pbx.villacis.com</a> SIP/2.0
<br>
Record-Route:
<a class="moz-txt-link-rfc2396E" href="sip:127.0.0.1;r2=on;lr=on;ftag=bf427f4a;vsf=AAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAABAMTI3LjAuMC4xOjUwODA-;vst=AAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAABAMTI3LjAuMC4xOjUwODA-;nat=yes"><sip:127.0.0.1;r2=on;lr=on;ftag=bf427f4a;vsf=AAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAABAMTI3LjAuMC4xOjUwODA-;vst=AAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAABAMTI3LjAuMC4xOjUwODA-;nat=yes></a><br>
Record-Route:
<a class="moz-txt-link-rfc2396E" href="sip:192.168.2.18;r2=on;lr=on;ftag=bf427f4a;vsf=AAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAABAMTI3LjAuMC4xOjUwODA-;vst=AAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAABAMTI3LjAuMC4xOjUwODA-;nat=yes"><sip:192.168.2.18;r2=on;lr=on;ftag=bf427f4a;vsf=AAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAABAMTI3LjAuMC4xOjUwODA-;vst=AAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAABAMTI3LjAuMC4xOjUwODA-;nat=yes></a><br>
Call-ID: 87ff107c2665316f4e257b358c54b3d4@0:0:0:0:0:0:0:0
<br>
CSeq: 2 SUBSCRIBE
<br>
From: "avillacisIM"
<a class="moz-txt-link-rfc2396E" href="sip:avillacisIM_pbx.villacis.com@127.0.0.1:5080"><sip:avillacisIM_pbx.villacis.com@127.0.0.1:5080></a>;tag=bf427f4a
<br>
To: "avillacisIM"
<a class="moz-txt-link-rfc2396E" href="sip:avillacisIM_pbx.villacis.com@127.0.0.1:5080"><sip:avillacisIM_pbx.villacis.com@127.0.0.1:5080></a>
<br>
Max-Forwards: 69
<br>
Contact: "avillacisIM"
<a class="moz-txt-link-rfc2396E" href="sip:avillacisIM@192.168.3.2:5060;transport=udp;registering_acc=pbx_villacis_com"><sip:avillacisIM@192.168.3.2:5060;transport=udp;registering_acc=pbx_villacis_com></a><br>
User-Agent: Jitsi2.5.5255Linux
<br>
Event: message-summary
<br>
Accept: application/simple-message-summary
<br>
Expires: 3600
<br>
Via: SIP/2.0/UDP
127.0.0.1;branch=z9hG4bKd941.2ab9cf36e41dc48855ae2cbe9a309d0a.0
<br>
Via: SIP/2.0/UDP
192.168.3.2:5060;rport=5060;branch=z9hG4bK-343638-bd3ea073eb8920481b32962f3221eb6f<br>
Content-Length: 0
<br>
<br>
The asterisk response for the SUBSCRIBE:
<br>
<br>
SIP/2.0 200 OK
<br>
Via: SIP/2.0/UDP
127.0.0.1;branch=z9hG4bKd941.2ab9cf36e41dc48855ae2cbe9a309d0a.0;received=127.0.0.1;rport=5060<br>
Via: SIP/2.0/UDP
192.168.3.2:5060;rport=5060;branch=z9hG4bK-343638-bd3ea073eb8920481b32962f3221eb6f<br>
Record-Route:
<a class="moz-txt-link-rfc2396E" href="sip:127.0.0.1;r2=on;lr=on;ftag=bf427f4a;vsf=AAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAABAMTI3LjAuMC4xOjUwODA-;vst=AAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAABAMTI3LjAuMC4xOjUwODA-;nat=yes"><sip:127.0.0.1;r2=on;lr=on;ftag=bf427f4a;vsf=AAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAABAMTI3LjAuMC4xOjUwODA-;vst=AAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAABAMTI3LjAuMC4xOjUwODA-;nat=yes></a><br>
Record-Route:
<a class="moz-txt-link-rfc2396E" href="sip:192.168.2.18;r2=on;lr=on;ftag=bf427f4a;vsf=AAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAABAMTI3LjAuMC4xOjUwODA-;vst=AAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAABAMTI3LjAuMC4xOjUwODA-;nat=yes"><sip:192.168.2.18;r2=on;lr=on;ftag=bf427f4a;vsf=AAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAABAMTI3LjAuMC4xOjUwODA-;vst=AAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAABAMTI3LjAuMC4xOjUwODA-;nat=yes></a><br>
From: "avillacisIM"
<a class="moz-txt-link-rfc2396E" href="sip:avillacisIM_pbx.villacis.com@127.0.0.1:5080"><sip:avillacisIM_pbx.villacis.com@127.0.0.1:5080></a>;tag=bf427f4a
<br>
To: "avillacisIM"
<a class="moz-txt-link-rfc2396E" href="sip:avillacisIM_pbx.villacis.com@127.0.0.1:5080"><sip:avillacisIM_pbx.villacis.com@127.0.0.1:5080></a>;tag=as5562e95e
<br>
Call-ID: 87ff107c2665316f4e257b358c54b3d4@0:0:0:0:0:0:0:0
<br>
CSeq: 2 SUBSCRIBE
<br>
Server: Asterisk PBX 11.11.0
<br>
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE,
NOTIFY, INFO, PUBLISH, MESSAGE
<br>
Supported: replaces, timer
<br>
Expires: 3600
<br>
Contact: <a class="moz-txt-link-rfc2396E" href="sip:avillacisIM@127.0.0.1:5080"><sip:avillacisIM@127.0.0.1:5080></a>;expires=3600
<br>
Content-Length: 0
<br>
<br>
This is in turn transformed back by kamailio, and sent to Jitsi
like this:
<br>
<br>
SIP/2.0 200 OK
<br>
Via: SIP/2.0/UDP
192.168.3.2:5060;rport=5060;branch=z9hG4bK-343638-bd3ea073eb8920481b32962f3221eb6f<br>
Record-Route:
<a class="moz-txt-link-rfc2396E" href="sip:127.0.0.1;r2=on;lr=on;ftag=bf427f4a;vsf=AAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAABAMTI3LjAuMC4xOjUwODA-;vst=AAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAABAMTI3LjAuMC4xOjUwODA-;nat=yes"><sip:127.0.0.1;r2=on;lr=on;ftag=bf427f4a;vsf=AAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAABAMTI3LjAuMC4xOjUwODA-;vst=AAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAABAMTI3LjAuMC4xOjUwODA-;nat=yes></a><br>
Record-Route:
<a class="moz-txt-link-rfc2396E" href="sip:192.168.2.18;r2=on;lr=on;ftag=bf427f4a;vsf=AAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAABAMTI3LjAuMC4xOjUwODA-;vst=AAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAABAMTI3LjAuMC4xOjUwODA-;nat=yes"><sip:192.168.2.18;r2=on;lr=on;ftag=bf427f4a;vsf=AAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAABAMTI3LjAuMC4xOjUwODA-;vst=AAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAABAMTI3LjAuMC4xOjUwODA-;nat=yes></a><br>
From: "avillacisIM"
<a class="moz-txt-link-rfc2396E" href="sip:avillacisIM@pbx.villacis.com"><sip:avillacisIM@pbx.villacis.com></a>;tag=bf427f4a
<br>
To: "avillacisIM"
<a class="moz-txt-link-rfc2396E" href="sip:avillacisIM@pbx.villacis.com"><sip:avillacisIM@pbx.villacis.com></a>;tag=as5562e95e
<br>
Call-ID: 87ff107c2665316f4e257b358c54b3d4@0:0:0:0:0:0:0:0
<br>
CSeq: 2 SUBSCRIBE
<br>
Server: Asterisk PBX 11.11.0
<br>
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE,
NOTIFY, INFO, PUBLISH, MESSAGE
<br>
Supported: replaces, timer
<br>
Expires: 3600
<br>
Contact:
<a class="moz-txt-link-rfc2396E" href="sip:avillacisIM@127.0.0.1:5080;alias=127.0.0.1~5080~1"><sip:avillacisIM@127.0.0.1:5080;alias=127.0.0.1~5080~1></a>;expires=3600<br>
Content-Length: 0
<br>
<br>
Now asterisk wants to send a NOTIFY to the endpoint for the
subscription. The NOTIFY looks like this:
<br>
<br>
NOTIFY
<a class="moz-txt-link-freetext" href="sip:avillacisIM@192.168.3.2:5060;transport=udp;registering_acc=pbx_villacis_com">sip:avillacisIM@192.168.3.2:5060;transport=udp;registering_acc=pbx_villacis_com</a>
SIP/2.0
<br>
Via: SIP/2.0/UDP 127.0.0.1:5080;branch=z9hG4bK658fa5fc;rport
<br>
Max-Forwards: 70
<br>
Route:
<a class="moz-txt-link-rfc2396E" href="sip:127.0.0.1;r2=on;lr=on;ftag=bf427f4a;vsf=AAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAABAMTI3LjAuMC4xOjUwODA-;vst=AAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAABAMTI3LjAuMC4xOjUwODA-;nat=yes"><sip:127.0.0.1;r2=on;lr=on;ftag=bf427f4a;vsf=AAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAABAMTI3LjAuMC4xOjUwODA-;vst=AAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAABAMTI3LjAuMC4xOjUwODA-;nat=yes></a>,<a class="moz-txt-link-rfc2396E" href="sip:192.168.2.18;r2=on;lr=on;ftag=bf427f4a;vsf=AAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAABAMTI3LjAuMC4xOjUwODA-;vst=AAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAABAMTI3LjAuMC4xOjUwODA-;nat=yes"><sip:192.168.2.18;r2=on;lr=on;ftag=bf427f4a;vsf=AAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAABAMTI3LjAuMC4xOjUwODA-;vst=AAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAAAAAAABAMTI3LjAuMC4xOjUwODA-;nat=yes></a><br>
From: "asterisk"
<a class="moz-txt-link-rfc2396E" href="sip:asterisk@127.0.0.1:5080"><sip:asterisk@127.0.0.1:5080></a>;tag=as5562e95e
<br>
To:
<a class="moz-txt-link-rfc2396E" href="sip:avillacisIM@192.168.3.2:5060;transport=udp;registering_acc=pbx_villacis_com"><sip:avillacisIM@192.168.3.2:5060;transport=udp;registering_acc=pbx_villacis_com></a>;tag=bf427f4a<br>
Contact: <a class="moz-txt-link-rfc2396E" href="sip:asterisk@127.0.0.1:5080"><sip:asterisk@127.0.0.1:5080></a>
<br>
Call-ID: 87ff107c2665316f4e257b358c54b3d4@0:0:0:0:0:0:0:0
<br>
CSeq: 102 NOTIFY
<br>
User-Agent: Asterisk PBX 11.11.0
<br>
Event: message-summary
<br>
Content-Type: application/simple-message-summary
<br>
Subscription-State: active
<br>
Content-Length: 89
<br>
<br>
Messages-Waiting: no
<br>
Message-Account: <a class="moz-txt-link-freetext" href="sip:*97@127.0.0.1:5080">sip:*97@127.0.0.1:5080</a>
<br>
Voice-Message: 0/0 (0/0)
<br>
<br>
Here is where the bug appears. The autoprocessing does not
recognize that the From header (From: "asterisk"
<a class="moz-txt-link-rfc2396E" href="sip:asterisk@127.0.0.1:5080"><sip:asterisk@127.0.0.1:5080></a>;tag=as5562e95e) from the above
request has nothing to do with the saved information (vsf
parameter). Instead, it blindly mangles the From header, and does
not even run a sanity check on the result before routing it. The
end result is shown below.
<br>
<br>
NOTIFY
<a class="moz-txt-link-freetext" href="sip:avillacisIM@192.168.3.2:5060;transport=udp;registering_acc=pbx_villacis_com">sip:avillacisIM@192.168.3.2:5060;transport=udp;registering_acc=pbx_villacis_com</a>
SIP/2.0
<br>
Record-Route: <a class="moz-txt-link-rfc2396E" href="sip:192.168.2.18;r2=on;lr=on;ftag=as5562e95e"><sip:192.168.2.18;r2=on;lr=on;ftag=as5562e95e></a>
<br>
Record-Route: <a class="moz-txt-link-rfc2396E" href="sip:127.0.0.1;r2=on;lr=on;ftag=as5562e95e"><sip:127.0.0.1;r2=on;lr=on;ftag=as5562e95e></a>
<br>
Via: SIP/2.0/UDP
192.168.2.18;branch=z9hG4bK8333.8bfe7bc2bd554a8631f0d00d463b28ee.0
<br>
Via: SIP/2.0/UDP 127.0.0.1:5080;branch=z9hG4bK658fa5fc;rport=5080
<br>
Max-Forwards: 69
<br>
From: "asterisk"
<a class="moz-txt-link-rfc2396E" href="sip:asterisk@12(.0.0.1:5080.....@127.0.0.1:5080"><sip:asterisk@12(.0.0.1:5080.....@127.0.0.1:5080></a>;tag=as5562e95e
<br>
To:
<a class="moz-txt-link-rfc2396E" href="sip:avillacisIM@192.168.3.2:5060;transport=udp;registering_acc=pbx_villacis_com"><sip:avillacisIM@192.168.3.2:5060;transport=udp;registering_acc=pbx_villacis_com></a>;tag=bf427f4a<br>
Contact: <a class="moz-txt-link-rfc2396E" href="sip:asterisk@127.0.0.1:5080"><sip:asterisk@127.0.0.1:5080></a>
<br>
Call-ID: 87ff107c2665316f4e257b358c54b3d4@0:0:0:0:0:0:0:0
<br>
CSeq: 102 NOTIFY
<br>
User-Agent: Asterisk PBX 11.11.0
<br>
Event: message-summary
<br>
Content-Type: application/simple-message-summary
<br>
Subscription-State: active
<br>
Content-Length: 89
<br>
<br>
Messages-Waiting: no
<br>
Message-Account: <a class="moz-txt-link-freetext" href="sip:*97@127.0.0.1:5080">sip:*97@127.0.0.1:5080</a>
<br>
Voice-Message: 0/0 (0/0)
<br>
<br>
From examination of the source code, the vsf and vst strings are
base64 encodings of the result of XORing the byte strings of the
old and new tags. For this to work, the headers of future packets
should match. However, here kamailio does not realize that the
header does not match (by the ftag), and also does not check that
the resulting "restored" header is a valid header.
<br>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
<a class="moz-txt-link-abbreviated" href="mailto:sr-users@lists.sip-router.org">sr-users@lists.sip-router.org</a>
<a class="moz-txt-link-freetext" href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users</a>
</pre>
</blockquote>
<br>
<pre class="moz-signature" cols="72">--
Daniel-Constantin Mierla - <a class="moz-txt-link-freetext" href="http://www.asipto.com">http://www.asipto.com</a>
<a class="moz-txt-link-freetext" href="http://twitter.com/#!/miconda">http://twitter.com/#!/miconda</a> - <a class="moz-txt-link-freetext" href="http://www.linkedin.com/in/miconda">http://www.linkedin.com/in/miconda</a></pre>
</body>
</html>