<!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.4.4">
</HEAD>
<BODY>
Hello,<BR>
<BR>
I found an issue with checking the Host: header when you are using a non-default port (that is not 80 or 443) for WebSockets.<BR>
<BR>
I have updated the WebSockets example kamailio.cfg in git master with a fix.<BR>
<BR>
Regards,<BR>
<BR>
Peter<BR>
<BR>
On Fri, 2012-09-14 at 11:55 +0200, Jes&#250;s P&#233;rez Rubio wrote:<BR>
<BLOCKQUOTE TYPE=CITE>
    Hi, I had the same problem and I solve it changing this line on my kamailio.cfg:<BR>
    <BR>
    # DIRTY WORKARROUND :P&nbsp;&nbsp;&nbsp; <BR>
    #if ($hdr(Host) == $null || !is_myself($hdr(Host))) {&nbsp;&nbsp;&nbsp; <BR>
    if ($hdr(Host) == $null) {<BR>
    &nbsp;&nbsp;&nbsp; &nbsp; xlog(&quot;L_WARN&quot;, &quot;Bad host $hdr(Host)\n&quot;);<BR>
    &nbsp;&nbsp;&nbsp; &nbsp; xhttp_reply(&quot;403&quot;, &quot;Forbidden&quot;, &quot;&quot;, &quot;&quot;);<BR>
    &nbsp;&nbsp;&nbsp; &nbsp; exit;<BR>
    }<BR>
    <BR>
    Could anybode confirm me if this solution is correct (and secure) please?<BR>
    <BR>
    Thanks in advance :).<BR>
    <BR>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    2012/8/8 Carlos Ruiz D&#237;az &lt;<A HREF="mailto:carlos.ruizdiaz@gmail.com">carlos.ruizdiaz@gmail.com</A>&gt;<BR>
    <BLOCKQUOTE>
        Thank you for your time&nbsp;Peter.&nbsp;
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        <BR>
        <BR>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        I'll setup a VM with Windows to continue with my tests and I'll come back later with more feedback.
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        <BR>
        <BR>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        Regards.
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        <BR>
        <BR>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        <FONT COLOR="#888888">Carlos.</FONT>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        <BR>
        <BR>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        On Wed, Aug 8, 2012 at 12:22 PM, Peter Dunkley &lt;<A HREF="mailto:peter.dunkley@crocodile-rcs.com">peter.dunkley@crocodile-rcs.com</A>&gt; wrote:<BR>
        <BLOCKQUOTE>
            Hi,<BR>
            <BR>
            I have added some comments in-line below.<BR>
            <BR>
            Regards,<BR>
            <BR>
            Peter
        </BLOCKQUOTE>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        <BLOCKQUOTE>
            <BR>
            &gt; 1. After setting up the proxy ip:port in the call.htm file (of sipml5) to<BR>
            <BR>
        </BLOCKQUOTE>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        <BLOCKQUOTE>
            &gt; *<BR>
            &gt; 127.0.0.1:5060* the client started to work but kamailio script refused to
        </BLOCKQUOTE>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        <BLOCKQUOTE>
            &gt; establish my connection because the following condition was not satisfied:<BR>
            &gt;<BR>
            &gt;<BR>
            <BR>
        </BLOCKQUOTE>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        <BLOCKQUOTE>
            &gt; *if ($Rp != MY_WS_PORT &amp;&amp; $Rp != MY_WSS_PORT) {*<BR>
            &gt; * &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;xlog(&quot;L_WARN&quot;, &quot;HTTP request received on $Rp\n&quot;);*<BR>
            &gt; * &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;xhttp_reply(&quot;403&quot;, &quot;Forbidden&quot;, &quot;&quot;, &quot;&quot;);*<BR>
            &gt; * &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;exit;*<BR>
            &gt; *}*<BR>
            &gt;<BR>
            &gt; *MY_WS_PORT* and *MY_WSS_PORT *are set to 80 and 443 respectively, as the
        </BLOCKQUOTE>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        <BLOCKQUOTE>
            &gt; default config example of websocket module says so.<BR>
            &gt;<BR>
            <BR>
        </BLOCKQUOTE>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        <BLOCKQUOTE>
            &gt; Then, I decided to change the ip:port to *127.0.0.1:80*, always in the
        </BLOCKQUOTE>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        <BLOCKQUOTE>
            &gt; call.htm file and afterwards the condition was satisfied but sipml5 dies<BR>
            &gt; with<BR>
            &gt;<BR>
            &gt; &nbsp;SIP stack start: proxy='<A HREF="http://127.0.0.1:80">127.0.0.1:80</A>', realm='&lt;sip:127.0.0.1&gt;',<BR>
            &gt; impi='2000', impu='&lt;<A HREF="mailto:sip%3A2000@127.0.0.1">sip:2000@127.0.0.1</A>&gt;'<BR>
            <BR>
        </BLOCKQUOTE>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        <BLOCKQUOTE>
            &gt; tsk_utils.js:97&lt;<A HREF="http://127.0.0.1/sipml5/src/tinySAK/src/tsk_utils.js?svn=5">http://127.0.0.1/sipml5/src/tinySAK/src/tsk_utils.js?svn=5</A>&gt;
        </BLOCKQUOTE>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        <BLOCKQUOTE>
            &gt; &nbsp;Connecting to 'ws://<A HREF="http://127.0.0.1:80">127.0.0.1:80</A>'<BR>
            <BR>
        </BLOCKQUOTE>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        <BLOCKQUOTE>
            &gt; tsk_utils.js:97&lt;<A HREF="http://127.0.0.1/sipml5/src/tinySAK/src/tsk_utils.js?svn=5">http://127.0.0.1/sipml5/src/tinySAK/src/tsk_utils.js?svn=5</A>&gt;<BR>
            &gt; &nbsp;Stack starting<BR>
            &gt; tsk_utils.js:97&lt;<A HREF="http://127.0.0.1/sipml5/src/tinySAK/src/tsk_utils.js?svn=5">http://127.0.0.1/sipml5/src/tinySAK/src/tsk_utils.js?svn=5</A>&gt;<BR>
            &gt; &nbsp;Unexpected response code: 200 :1 &lt;<A HREF="http://127.0.0.1/">http://127.0.0.1/</A>&gt;<BR>
            &gt; &nbsp;__tsip_transport_ws_onerror<BR>
            &gt; tsk_utils.js:97&lt;<A HREF="http://127.0.0.1/sipml5/src/tinySAK/src/tsk_utils.js?svn=5">http://127.0.0.1/sipml5/src/tinySAK/src/tsk_utils.js?svn=5</A>&gt;<BR>
            &gt; &nbsp;__tsip_transport_ws_onclose<BR>
            &gt; tsk_utils.js:97&lt;<A HREF="http://127.0.0.1/sipml5/src/tinySAK/src/tsk_utils.js?svn=5">http://127.0.0.1/sipml5/src/tinySAK/src/tsk_utils.js?svn=5</A>&gt;
        </BLOCKQUOTE>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        <BLOCKQUOTE>
            &gt; &nbsp;Failed to connet to the server<BR>
            &gt;<BR>
            &gt; Finally, I ended up commenting the condition block and restored the<BR>
            <BR>
        </BLOCKQUOTE>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        <BLOCKQUOTE>
            &gt; original values of ip:port to *127.0.0.1:5060* .
        </BLOCKQUOTE>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        <BLOCKQUOTE>
            &gt;<BR>
            &gt; Having done that, I tried again and another error was thrown but this<BR>
            &gt; time,<BR>
            <BR>
        </BLOCKQUOTE>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        <BLOCKQUOTE>
            &gt; in the next condition block: * if ($hdr(Host) == $null ||<BR>
            &gt; !is_myself($hdr(Host))) *
        </BLOCKQUOTE>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        <BLOCKQUOTE>
            &gt;<BR>
            &gt; &lt;script&gt;: WebSocket<BR>
            &gt; Aug &nbsp;8 11:30:53 carlosrdcnx-laptop kamailio[16238]: DEBUG: &lt;script&gt;:<BR>
            &gt; Host:<BR>
            &gt; <A HREF="http://127.0.0.1:5060">127.0.0.1:5060</A><BR>
            &gt; Aug &nbsp;8 11:30:53 carlosrdcnx-laptop kamailio[16238]: DEBUG: &lt;script&gt;:<BR>
            &gt; &nbsp;Origin: <A HREF="http://127.0.0.1">http://127.0.0.1</A><BR>
            &gt; Aug &nbsp;8 11:30:53 carlosrdcnx-laptop kamailio[16238]: DEBUG: &lt;core&gt;<BR>
            &gt; [socket_info.c:589]: grep_sock_info - checking if host==us: 14==9 &amp;&amp; [<BR>
            &gt; <A HREF="http://127.0.0.1:5060">127.0.0.1:5060</A>] == [127.0.0.1]<BR>
            &gt; Aug &nbsp;8 11:30:53 carlosrdcnx-laptop kamailio[16238]: DEBUG: &lt;core&gt;<BR>
            &gt; [socket_info.c:589]: grep_sock_info - checking if host==us: 14==9 &amp;&amp; [<BR>
            &gt; <A HREF="http://127.0.0.1:5060">127.0.0.1:5060</A>] == [127.0.0.2]<BR>
            &gt; Aug &nbsp;8 11:30:53 carlosrdcnx-laptop kamailio[16238]: DEBUG: &lt;core&gt;<BR>
            &gt; [socket_info.c:589]: grep_sock_info - checking if host==us: 14==13 &amp;&amp; [<BR>
            &gt; <A HREF="http://127.0.0.1:5060">127.0.0.1:5060</A>] == [192.168.10.95]<BR>
            &gt; Aug &nbsp;8 11:30:53 carlosrdcnx-laptop kamailio[16238]: DEBUG: &lt;core&gt;<BR>
            &gt; [socket_info.c:589]: grep_sock_info - checking if host==us: 14==13 &amp;&amp; [<BR>
            &gt; <A HREF="http://127.0.0.1:5060">127.0.0.1:5060</A>] == [192.168.10.55]<BR>
            &gt; Aug &nbsp;8 11:30:53 carlosrdcnx-laptop kamailio[16238]: DEBUG: &lt;core&gt;<BR>
            &gt; [socket_info.c:589]: grep_sock_info - checking if host==us: 14==9 &amp;&amp; [<BR>
            &gt; <A HREF="http://127.0.0.1:5060">127.0.0.1:5060</A>] == [127.0.0.1]<BR>
            &gt; Aug &nbsp;8 11:30:53 carlosrdcnx-laptop kamailio[16238]: DEBUG: &lt;core&gt;<BR>
            &gt; [socket_info.c:589]: grep_sock_info - checking if host==us: 14==9 &amp;&amp; [<BR>
            &gt; <A HREF="http://127.0.0.1:5060">127.0.0.1:5060</A>] == [127.0.0.2]<BR>
            &gt; Aug &nbsp;8 11:30:53 carlosrdcnx-laptop kamailio[16238]: DEBUG: &lt;core&gt;<BR>
            &gt; [socket_info.c:589]: grep_sock_info - checking if host==us: 14==13 &amp;&amp; [<BR>
            &gt; <A HREF="http://127.0.0.1:5060">127.0.0.1:5060</A>] == [192.168.10.95]<BR>
            &gt; Aug &nbsp;8 11:30:53 carlosrdcnx-laptop kamailio[16238]: DEBUG: &lt;core&gt;<BR>
            &gt; [socket_info.c:589]: grep_sock_info - checking if host==us: 14==13 &amp;&amp; [<BR>
            &gt; <A HREF="http://127.0.0.1:5060">127.0.0.1:5060</A>] == [192.168.10.55]<BR>
            &gt; Aug &nbsp;8 11:30:53 carlosrdcnx-laptop kamailio[16238]: DEBUG: &lt;core&gt;<BR>
            <BR>
        </BLOCKQUOTE>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        <BLOCKQUOTE>
            &gt; [forward.c:462]: *check_self: host != me*
        </BLOCKQUOTE>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        <BLOCKQUOTE>
            &gt; Aug &nbsp;8 11:30:53 carlosrdcnx-laptop kamailio[16238]: WARNING: &lt;script&gt;: Bad<BR>
            &gt; host <A HREF="http://127.0.0.1:5060">127.0.0.1:5060</A><BR>
            &gt;<BR>
            &gt; I commented the block too and only then sipml5 was able to register<BR>
            &gt; itself.<BR>
            &gt;<BR>
            &gt; What am I doing wrong here?<BR>
            &gt;<BR>
            <BR>
            <BR>
        </BLOCKQUOTE>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        <BLOCKQUOTE>
            When I tested this I was hosting sipml5 on a web-server on a separate<BR>
            machine from Kamailio, and my web-browser was on a separate machine from<BR>
            both Kamailio and the web-server. &nbsp;The example configuration works for<BR>
            that scenario (which is likely to be the way it would be deployed in a<BR>
            real system). &nbsp;I suspect that the Kamailio listen directives (or something<BR>
            else related) aren't set-up quite right for your environment.<BR>
            <BR>
            Host: is a required header when establishing a WebSocket connection. &nbsp;The<BR>
            Host: header added by the client should indicate the name of the server<BR>
            the client is trying to connect to as indicated in the WebSocket URI (so<BR>
            if you put an IP address in the URI that will be in the Host: header, if<BR>
            you put a hostname in the URI then it will be in the Host: header). &nbsp;The<BR>
            WebSocket server (in this case Kamailio) should check that this header<BR>
            matches what it believes it's externally visible name is before accepting<BR>
            the connection.<BR>
            <BR>
            This check needs to be performed in kamailio.cfg instead of the WebSocket<BR>
            module in order for the check to be flexible. &nbsp;The check in the example<BR>
            kamailio.cfg is:<BR>
            - Making sure the Host: header is present<BR>
            - Making sure the name in the Host: header is an IP address (as defined in<BR>
            the listen directives) or alias (for example a domain name) that the<BR>
            Kamailio instance believes it is authoritative for.<BR>
            <BR>
            As the WebSocket stack in a web-browser will add the Host: header<BR>
            automatically, any problem with this suggests that the WebSocket URI set<BR>
            in sipml5 and the listen/alias directives in kamailio.cfg don't match -<BR>
            which would be consistent with the first part your connection<BR>
            establishment problem too.<BR>
            <BR>
            I would suggest that you should re-instate these lines as, by commenting<BR>
            them out (rather than fixing the underlying problems in the test set-up),<BR>
            you may be moving the issues down-stream.
        </BLOCKQUOTE>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        <BLOCKQUOTE>
            <BR>
            &gt; 2. I registered a legacy softphone (twinkle) to attempt to initiate a call<BR>
            &gt; in both ways, but the was something wrong with the signaling, probably<BR>
            &gt; some<BR>
            &gt; frame decoding garbage in the buffer of the SIP message. Perhaps these<BR>
            &gt; bytes are part of the frame control header but since I haven't read the<BR>
            &gt; RFC<BR>
            &gt; (yet) I am mentioning it anyway.<BR>
            &gt;<BR>
            <BR>
        </BLOCKQUOTE>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        <BLOCKQUOTE>
            &gt; tcp_send: buf=*#012&#65533;~#003&#65533;*INVITE
        </BLOCKQUOTE>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        <BLOCKQUOTE>
            &gt; sip:2000@df7jal23ls0d.invalid;transport=ws<BR>
            &gt; SIP/2.0#015#012Record-Route:<BR>
            &gt; &lt;sip:127.0.0.1;transport=ws;r2=on;lr=on&gt;#015#012Record-Route:<BR>
            &gt; &lt;sip:127.0.0.1;r2=on;lr=on&gt;#015#012Via: SIP/2.0/WS<BR>
            &gt; &nbsp;127.0.0.1;branch=z9hG4bK90a8.b1a7035e13ed19880dd12a1f4c86adbb.0#015#012Via:<BR>
            &gt; SIP/2.0/UDP<BR>
            &gt; 127.0.0.1:5062;rport=5062;branch=z9hG4bKimixlbyp#015#012Max-Forwards:<BR>
            &gt; 69#015#012To: &lt;<A HREF="mailto:sip%3A2000@127.0.0.1">sip:2000@127.0.0.1</A>&gt;#015#012From: &quot;1000&quot;<BR>
            &gt; &lt;<A HREF="mailto:sip%3A1000@127.0.0.1">sip:1000@127.0.0.1</A>&gt;;tag=lrtfz#015#012Call-ID:<BR>
            &gt; gxsqobolphfchfq@carlosrdcnx-laptop.site#015#012CSeq: 654<BR>
            &gt; INVITE#015#012Contact: &lt;<A HREF="http://sip:1000@127.0.0.1:5062">sip:1000@127.0.0.1:5062</A>&gt;#015#012Content-Type:<BR>
            &gt; application/sdp#015#012Allow:<BR>
            &gt; INVITE,ACK,BYE,CANCEL,OPTIONS,PRACK,REFER,NOTIFY,SUBSCRIBE,INFO,MESSAGE#015#012Supported:<BR>
            &gt; replaces,norefersub,100rel#015#012User-Agent:<BR>
            &gt; Twinkle/1.4.2#015#012Content-Length:<BR>
            &gt; 302#015#012#015#012v=0#015#012o=twinkle 391470222 1383232165 IN IP4<BR>
            &gt; 127.0.0.1#015#012s=-#015#012c=IN IP4 127.0.0.1#015#012t=0 0#015#012m=audio<BR>
            &gt; 8008 RTP/AVP <A HREF="tel:98%2097%208%200%203%20101%23015%23">98 97 8 0 3 101#015#</A>012a=rtpmap:98<BR>
            &gt; speex/16000#015#012a=rtpmap:97 speex/8000#015#012a=rtpmap:8<BR>
            &gt; PCMA/8000#015#012a=rtpmap:0 PCMU/8000#015#012a=rtpmap:3<BR>
            &gt; GSM/8000#015#012a=rtpmap:101 telephone-event/8000#015#012a=fmtp:101<BR>
            &gt; 0-15#015#012a=ptime:20#015#012<BR>
            &gt;<BR>
            <BR>
            <BR>
        </BLOCKQUOTE>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        <BLOCKQUOTE>
            That INVITE is for a call towards sipml5 on a WebSocket connection. &nbsp;So<BR>
            this isn't a SIP message over TCP, it is a SIP message over WebSockets<BR>
            over TCP - and those are not the same thing. &nbsp;The stuff at the start of<BR>
            the TCP buffer is the WebSocket framing and it is meant to be there.<BR>
            <BR>
            The WebSocket framing will not be present on the connection to Twinkle.
        </BLOCKQUOTE>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        <BLOCKQUOTE>
            <BR>
            &gt; 3. Does Twinkle support the minimum media requirements for testing? If<BR>
            &gt; not,<BR>
            &gt; what (Linux) softphone is suitable for this purpose?<BR>
            &gt;<BR>
            <BR>
            <BR>
        </BLOCKQUOTE>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        <BLOCKQUOTE>
            When using an up-to-date Google Chrome you need to use a client that<BR>
            supports RTP/SAVPF. &nbsp;Boghe (from Doubango) is a Windows client that<BR>
            supports this. &nbsp;I don't know which (if any) Linux clients support this<BR>
            feature.<BR>
            <BR>
            <FONT COLOR="#888888">--</FONT><BR>
            <FONT COLOR="#888888">Peter Dunkley</FONT><BR>
            <FONT COLOR="#888888">Technical Director</FONT><BR>
            <FONT COLOR="#888888">Crocodile RCS Ltd</FONT><BR>
            <BR>
            <BR>
            <FONT COLOR="#888888">_______________________________________________</FONT><BR>
            <FONT COLOR="#888888">sr-dev mailing list</FONT><BR>
            <FONT COLOR="#888888"><A HREF="mailto:sr-dev@lists.sip-router.org">sr-dev@lists.sip-router.org</A></FONT><BR>
            <FONT COLOR="#888888"><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></FONT>
        </BLOCKQUOTE>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        <BR>
        <BR>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BLOCKQUOTE>
        <BR>
        _______________________________________________<BR>
        sr-dev mailing list<BR>
        <A HREF="mailto:sr-dev@lists.sip-router.org">sr-dev@lists.sip-router.org</A><BR>
        <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><BR>
        <BR>
    </BLOCKQUOTE>
</BLOCKQUOTE>
<BLOCKQUOTE TYPE=CITE>
    <BR>
    <BR>
    <BR>
    -- <BR>
    Jes&#250;s P&#233;rez<BR>
    VoIP Engineer at Quobis<BR>
    <BR>
    Fixed:&nbsp;+34 902 999 465<BR>
    Site:&nbsp;<A HREF="http://www.quobis.com/">http://www.quobis.com</A><BR>
    <BR>
<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>
</BLOCKQUOTE>
<BR>
<TABLE CELLSPACING="0" CELLPADDING="0" WIDTH="100%">
<TR>
<TD>
<PRE>
-- 
Peter Dunkley
Technical Director
Crocodile RCS Ltd
</PRE>
</TD>
</TR>
</TABLE>
</BODY>
</HTML>