<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<HTML>
<HEAD>
  <META HTTP-EQUIV="Content-Type" CONTENT="text/html; CHARSET=UTF-8">
  <META NAME="GENERATOR" CONTENT="GtkHTML/4.6.2">
</HEAD>
<BODY>
Hi,<BR>
<BR>
I found a small bug in the msrp_cmap_lookup() function - fix now in git master.<BR>
<BR>
The final version of my MSRP event-route is:<BR>
<BR>
<BLOCKQUOTE>
<PRE>
event_route[msrp:frame-in] {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msrp_reply_flags(&quot;1&quot;);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((($Rp == MY_WS_PORT || $Rp == MY_WSS_PORT)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; !(proto == WS || proto == WSS)) &amp;&amp; $Rp != MY_MSRP_PORT) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlog(&quot;L_WARN&quot;, &quot;MSRP request received on $Rp\n&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msrp_reply(&quot;403&quot;, &quot;Action-not-allowed&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (msrp_is_reply()) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msrp_relay();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else if($msrp(method)==&quot;AUTH&quot;) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($msrp(nexthops)&gt;0) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msrp_relay();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!www_authenticate(&quot;MY_DOMAIN&quot;, &quot;subscriber&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;$msrp(method)&quot;)) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (auth_get_www_authenticate(&quot;MY_DOMAIN&quot;, &quot;1&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;$var(wauth)&quot;)) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msrp_reply(&quot;401&quot;, &quot;Unauthorized&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;$var(wauth)&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msrp_reply(&quot;500&quot;, &quot;Server Error&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msrp_cmap_save();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else if ($msrp(method)==&quot;SEND&quot; || $msrp(method)==&quot;REPORT&quot;) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ($msrp(nexthops)&gt;1) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ($msrp(method)!=&quot;REPORT&quot;) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msrp_reply(&quot;200&quot;, &quot;OK&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msrp_relay();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (msrp_cmap_lookup()) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ($msrp(method)!=&quot;REPORT&quot;) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msrp_reply(&quot;200&quot;, &quot;OK&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msrp_relay_flags(&quot;1&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msrp_relay();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msrp_reply(&quot;481&quot;, &quot;Session-does-not-exist&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msrp_reply(&quot;501&quot;, &quot;Request-method-not-understood&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
}
</PRE>
</BLOCKQUOTE>
<BR>
Regards,<BR>
<BR>
Peter<BR>
<BR>
On Wed, 2013-02-06 at 10:35 +0000, Peter Dunkley wrote:<BR>
<BLOCKQUOTE TYPE=CITE>
    <BR>
    Hello,<BR>
    <BR>
    I have the following configuration:<BR>
    <BR>
    MSRP Client 1&nbsp; ---&gt; MSRP Relay ---&gt; MSRP Relay ---&gt; MSRP Client 2<BR>
    <BR>
    Note: There is only one MSRP Relay here but as each client AUTHs with the relay it appears twice in the To-Path for MSRP SENDs and REPORTs and the MSRP requests get hair-pinned as they are routed.<BR>
    <BR>
    Each MSRP client AUTHs against the MSRP Relay (authentication steps skipped for clarity):<BR>
    <BLOCKQUOTE>
        <B><U>MSRP Client 1 Authenticates</U></B> 
<PRE>
MSRP embt3epk AUTH
To-Path: msrp://<A HREF="mailto:james@192.168.0.74">james@192.168.0.74</A>
From-Path: msrp://4qc1y0p3.invalid:2855/pdbcph4zb2;ws
Authorization: Digest username=&quot;james&quot;, realm=&quot;example.com&quot;, nonce=&quot;URIsFlESKuoaIDis1UKPL0uU8e+IavWWW3aO/4A=&quot;, uri=&quot;msrp://<A HREF="mailto:james@192.168.0.74">james@192.168.0.74</A>&quot;, response=&quot;8d6e1842dd2791f35772a0d8aa3d0237&quot;, qop=auth, cnonce=&quot;9he680vjcwdv&quot;, nc=00000001
-------embt3epk$

MSRP embt3epk 200 OK
To-Path: msrp://4qc1y0p3.invalid:2855/pdbcph4zb2;ws
From-Path: msrp://<A HREF="mailto:james@192.168.0.74">james@192.168.0.74</A>
Use-Path: msrp://192.168.0.74:2855/msrp-51122ad5-a4c-1;tcp
Expires: 360
-------embt3epk$
</PRE>
    </BLOCKQUOTE>
    <BR>
    <BLOCKQUOTE>
        <B><U>MSRP Client 2 Authenticates</U></B> 
<PRE>
MSRP t1fm54qj AUTH
To-Path: msrp://<A HREF="mailto:peter@192.168.0.74">peter@192.168.0.74</A>
From-Path: msrp://hegodxou.invalid:2855/hc3n26dpvd;ws
Authorization: Digest username=&quot;peter&quot;, realm=&quot;example.com&quot;, nonce=&quot;URIsGVESKu3ejM4oZiRERc40yd1jeCbHW3aRAYA=&quot;, uri=&quot;msrp://<A HREF="mailto:peter@192.168.0.74">peter@192.168.0.74</A>&quot;, response=&quot;f230810364a0ea18afb451299a0be19c&quot;, qop=auth, cnonce=&quot;j5efxrn0mufs&quot;, nc=00000001
-------t1fm54qj$

MSRP t1fm54qj 200 OK
To-Path: msrp://hegodxou.invalid:2855/hc3n26dpvd;ws
From-Path: msrp://<A HREF="mailto:peter@192.168.0.74">peter@192.168.0.74</A>
Use-Path: msrp://192.168.0.74:2855/msrp-51122ad5-a4b-1;tcp
Expires: 360
-------t1fm54qj$
</PRE>
    </BLOCKQUOTE>
    <BR>
    The MSRP module parses these correctly and saves the entry in the connection map: 
    <BLOCKQUOTE>
<PRE>
12(2636) DEBUG: msrp [msrp_parser.c:173]: MSRP FLine: [1] [MSRP] [embt3epk] [AUTH] [2] []
12(2636) DEBUG: msrp [msrp_parser.c:296]: MSRP Header: (0x7f536e9b97f0) [To-Path] [2] [msrp://<A HREF="mailto:james@192.168.0.74">james@192.168.0.74</A>]
12(2636) DEBUG: msrp [msrp_parser.c:296]: MSRP Header: (0x7f536e9b3570) [From-Path] [1] [msrp://4qc1y0p3.invalid:2855/pdbcph4zb2;ws]
12(2636) DEBUG: msrp [msrp_parser.c:296]: MSRP Header: (0x7f536e9b35f0) [Authorization] [9] [Digest username=&quot;james&quot;, realm=&quot;example.com&quot;, nonce=&quot;URIsFlESKuoaIDis1UKPL0uU8e+IavWWW3aO/4A=&quot;, uri=&quot;msrp://<A HREF="mailto:james@192.168.0.74">james@192.168.0.74</A>&quot;, response=&quot;8d6e1842dd2791f35772a0d8aa3d0237&quot;, qop=auth, cnonce=&quot;9he680vjcwdv&quot;, nc=00000001]
12(2636) DEBUG: msrp [msrp_mod.c:459]: executing event_route[msrp:frame-in] (3)
12(2636) DEBUG: msrp [msrp_cmap.c:230]: saving connection info for [msrp://4qc1y0p3.invalid:2855/pdbcph4zb2;ws] [msrp-51122ad5-a4c-1] (174/4060267182)
12(2636) DEBUG: msrp [msrp_cmap.c:232]: frame received from [msrp://192.168.0.158:49662] via [tcp:192.168.0.74:80]

11(2635) DEBUG: msrp [msrp_parser.c:173]: MSRP FLine: [1] [MSRP] [t1fm54qj] [AUTH] [2] []
11(2635) DEBUG: msrp [msrp_parser.c:296]: MSRP Header: (0x7f536e9b3570) [To-Path] [2] [msrp://<A HREF="mailto:peter@192.168.0.74">peter@192.168.0.74</A>]
11(2635) DEBUG: msrp [msrp_parser.c:296]: MSRP Header: (0x7f536e9b35f0) [From-Path] [1] [msrp://hegodxou.invalid:2855/hc3n26dpvd;ws]
11(2635) DEBUG: msrp [msrp_parser.c:296]: MSRP Header: (0x7f536e9b3670) [Authorization] [9] [Digest username=&quot;peter&quot;, realm=&quot;example.com&quot;, nonce=&quot;URIsGVESKu3ejM4oZiRERc40yd1jeCbHW3aRAYA=&quot;, uri=&quot;msrp://<A HREF="mailto:peter@192.168.0.74">peter@192.168.0.74</A>&quot;, response=&quot;f230810364a0ea18afb451299a0be19c&quot;, qop=auth, cnonce=&quot;j5efxrn0mufs&quot;, nc=00000001]
11(2635) DEBUG: msrp [msrp_mod.c:459]: executing event_route[msrp:frame-in] (3)
11(2635) DEBUG: msrp [msrp_cmap.c:230]: saving connection info for [msrp://hegodxou.invalid:2855/hc3n26dpvd;ws] [msrp-51122ad5-a4b-1] (139/4060209803)
11(2635) DEBUG: msrp [msrp_cmap.c:232]: frame received from [msrp://192.168.0.158:49663] via [tcp:192.168.0.74:80]
</PRE>
    </BLOCKQUOTE>
    <BR>
    Then MSRP Client 1 sends an MSRP SEND to MSRP client 2:<BR>
    <BLOCKQUOTE>
        <B><U>SEND from MSRP Client 1 to MSRP Relay</U></B> 
<PRE>
SRP sis9mer0 SEND
To-Path: msrp://192.168.0.74:2855/msrp-51122ad5-a4c-1;tcp msrp://192.168.0.74:2855/msrp-51122ad5-a4b-1;tcp msrp://hegodxou.invalid:2855/hc3n26dpvd;ws
From-Path: msrp://4qc1y0p3.invalid:2855/pdbcph4zb2;ws
Message-ID: 3569133935.vs42vpro
Success-Report: yes
Failure-Report: yes
Byte-Range: 1-0/0
-------sis9mer0$

MSRP sis9mer0 200 OK
To-Path: msrp://4qc1y0p3.invalid:2855/pdbcph4zb2;ws
From-Path: msrp://192.168.0.74:2855/msrp-51122ad5-a4c-1;tcp
Message-ID: 3569133935.vs42vpro
-------sis9mer0$

</PRE>
        <B><U>SEND from MSRP Relay to MSRP Relay</U></B> 
<PRE>
MSRP sis9mer0 SEND
To-Path: msrp://192.168.0.74:2855/msrp-51122ad5-a4b-1;tcp msrp://hegodxou.invalid:2855/hc3n26dpvd;ws
From-Path: msrp://192.168.0.74:2855/msrp-51122ad5-a4c-1;tcp msrp://4qc1y0p3.invalid:2855/pdbcph4zb2;ws
Message-ID: 3569133935.vs42vpro
Success-Report: yes
Failure-Report: yes
Byte-Range: 1-0/0
-------sis9mer0$

MSRP sis9mer0 481 Session-does-not-exist
To-Path: msrp://192.168.0.74:2855/msrp-51122ad5-a4c-1;tcp
From-Path: msrp://192.168.0.74:2855/msrp-51122ad5-a4b-1;tcp
Message-ID: 3569133935.vs42vpro
-------sis9mer0$
</PRE>
    </BLOCKQUOTE>
    <BR>
    It looks like the MSRP module cannot find the entry in the connection map: 
    <BLOCKQUOTE>
<PRE>
12(2636) DEBUG: msrp [msrp_parser.c:173]: MSRP FLine: [1] [MSRP] [sis9mer0] [SEND] [1] []
12(2636) DEBUG: msrp [msrp_parser.c:296]: MSRP Header: (0x7f536e9b97f0) [To-Path] [2] [msrp://192.168.0.74:2855/msrp-51122ad5-a4c-1;tcp msrp://192.168.0.74:2855/msrp-51122ad5-a4b-1;tcp msrp://hegodxou.invalid:2855/hc3n26dpvd;ws]
12(2636) DEBUG: msrp [msrp_parser.c:296]: MSRP Header: (0x7f536e9b3570) [From-Path] [1] [msrp://4qc1y0p3.invalid:2855/pdbcph4zb2;ws]
12(2636) DEBUG: msrp [msrp_parser.c:296]: MSRP Header: (0x7f536e9b35f0) [Message-ID] [4] [3569133935.vs42vpro]
12(2636) DEBUG: msrp [msrp_parser.c:296]: MSRP Header: (0x7f536e9b3670) [Success-Report] [7] [yes]
12(2636) DEBUG: msrp [msrp_parser.c:296]: MSRP Header: (0x7f536e9b36f0) [Failure-Report] [0] [yes]
12(2636) DEBUG: msrp [msrp_parser.c:296]: MSRP Header: (0x7f536e9b9940) [Byte-Range] [5] [1-0/0]
12(2636) DEBUG: msrp [msrp_mod.c:459]: executing event_route[msrp:frame-in] (3)
12(2636) ERROR: &lt;script&gt;: Relaying to next relay hop
12(2636) DEBUG: msrp [msrp_parser.c:536]: MSRP URI: [msrp] [] [192.168.0.74] [2855] [msrp-51122ad5-a4b-1] [tcp] []

10(2634) DEBUG: msrp [msrp_parser.c:173]: MSRP FLine: [1] [MSRP] [sis9mer0] [SEND] [1] []
10(2634) DEBUG: msrp [msrp_parser.c:296]: MSRP Header: (0x7f536e9ac4d0) [To-Path] [2] [msrp://192.168.0.74:2855/msrp-51122ad5-a4b-1;tcp msrp://hegodxou.invalid:2855/hc3n26dpvd;ws]
10(2634) DEBUG: msrp [msrp_parser.c:296]: MSRP Header: (0x7f536e9ac550) [From-Path] [1] [msrp://192.168.0.74:2855/msrp-51122ad5-a4c-1;tcp msrp://4qc1y0p3.invalid:2855/pdbcph4zb2;ws]
10(2634) DEBUG: msrp [msrp_parser.c:296]: MSRP Header: (0x7f536e9ac5d0) [Message-ID] [4] [3569133935.vs42vpro]
10(2634) DEBUG: msrp [msrp_parser.c:296]: MSRP Header: (0x7f536e9b3570) [Success-Report] [7] [yes]
10(2634) DEBUG: msrp [msrp_parser.c:296]: MSRP Header: (0x7f536e9b35f0) [Failure-Report] [0] [yes]
10(2634) DEBUG: msrp [msrp_parser.c:296]: MSRP Header: (0x7f536e9b3670) [Byte-Range] [5] [1-0/0]
10(2634) DEBUG: msrp [msrp_mod.c:459]: executing event_route[msrp:frame-in] (3)
10(2634) ERROR: &lt;script&gt;: Relaying to destination
10(2634) ERROR: &lt;script&gt;: ... Current hop: msrp://192.168.0.74:2855/msrp-51122ad5-a4b-1;tcp, Next hop: msrp://hegodxou.invalid:2855/hc3n26dpvd;ws, Last hop: msrp://hegodxou.invalid:2855/hc3n26dpvd;ws
10(2634) DEBUG: msrp [msrp_parser.c:536]: MSRP URI: [msrp] [] [192.168.0.74] [2855] [msrp-51122ad5-a4b-1] [tcp] []
10(2634) DEBUG: msrp [msrp_cmap.c:346]: searching for session [msrp-51122ad5-a4b-1]
10(2634) ERROR: &lt;script&gt;: ... destination not in map
</PRE>
    </BLOCKQUOTE>
    <BR>
    Here is my MSRP event route:<BR>
    <BR>
    <BLOCKQUOTE>
<PRE>
event_route[msrp:frame-in] {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msrp_reply_flags(&quot;1&quot;);

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ((($Rp == MY_WS_PORT || $Rp == MY_WSS_PORT)
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;&amp; !(proto == WS || proto == WSS)) &amp;&amp; $Rp != MY_MSRP_PORT) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlog(&quot;L_WARN&quot;, &quot;MSRP request received on $Rp\n&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msrp_reply(&quot;403&quot;, &quot;Action-not-allowed&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (msrp_is_reply()) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msrp_relay();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else if($msrp(method)==&quot;AUTH&quot;) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($msrp(nexthops)&gt;0) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msrp_relay();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (!www_authenticate(&quot;MY_DOMAIN&quot;, &quot;subscriber&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;$msrp(method)&quot;)) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (auth_get_www_authenticate(&quot;MY_DOMAIN&quot;, &quot;1&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;$var(wauth)&quot;)) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msrp_reply(&quot;401&quot;, &quot;Unauthorized&quot;,
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &quot;$var(wauth)&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msrp_reply(&quot;500&quot;, &quot;Server Error&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msrp_cmap_save();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else if ($msrp(method)==&quot;SEND&quot; || $msrp(method)==&quot;REPORT&quot;) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ($msrp(nexthops)&gt;1) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ($msrp(method)!=&quot;REPORT&quot;) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msrp_reply(&quot;200&quot;, &quot;OK&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlog(&quot;Relaying to next relay hop\n&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msrp_relay();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; exit;
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlog(&quot;Relaying to destination\n&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlog(&quot;... Current hop: $msrp(crthop), Next hop: $msrp(nexthop), Last hop: $msrp(lasthop)\n&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (msrp_cmap_lookup()) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if ($msrp(method)!=&quot;REPORT&quot;) {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msrp_reply(&quot;200&quot;, &quot;OK&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlog(&quot;... found destination in map\n&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msrp_relay();
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xlog(&quot;... destination not in map\n&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msrp_reply(&quot;481&quot;, &quot;Session-does-not-exist&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } else {
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; msrp_reply(&quot;501&quot;, &quot;Request-method-not-understood&quot;);
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }
}
</PRE>
    </BLOCKQUOTE>
    <BR>
    Regards,<BR>
    <BR>
    Peter<BR>
    <BR>
    <TABLE CELLSPACING="0" CELLPADDING="0" WIDTH="100%">
<TR>
<TD>
<PRE>
_______________________________________________
sr-dev mailing list
<A HREF="mailto:sr-dev@lists.sip-router.org">sr-dev@lists.sip-router.org</A>
<A HREF="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev</A>

</PRE>
</TD>
</TR>
</TABLE>
</BLOCKQUOTE>
<TABLE CELLSPACING="0" CELLPADDING="0" WIDTH="100%">
<TR>
<TD>
<PRE>
-- 
Peter Dunkley
Technical Director
Crocodile RCS Ltd
</PRE>
</TD>
</TR>
</TABLE>
<BR>
</BODY>
</HTML>