<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>