[Serusers] Unexpected disconnect - lost SIP packets?

Jeremy A jeremy at electrosilk.net
Thu Nov 29 08:22:57 CET 2007


I seem to have fixed the problem with a 'hack' that looks for packets
directed to port 5070 and sends them to route(1)

I think that is probably the correct solution and is RFC compliant?
However it puzzles me that the test uri==myself doesn't take into
account the port number.

NB my regex skills are low so the check for port 5070 is certainly
sub-optimal, however it works :-)

Thanks for your help

New routing code:

    if (uri==myself) {

        if (method=="REGISTER") {
            # digest authentication
            if (!www_authorize("", "subscriber")) {
                www_challenge("", "0");
                break;
            };

            save("location");
            break;
        };

        lookup("aliases");
        if (!uri==myself) {
            append_hf("P-hint: outbound alias\r\n");
            route(1);
            break;
        };

	# send on any uri that goes to port 5070 - it's not us

        if (search(":5070")) {
	   route(1);
	   break;
	}

        # native SIP destinations are handled using our USRLOC DB
        if (!lookup("location")) {
            sl_send_reply("404", "SER says Not Found");
            break;
        };
    };



Greger V. Teigre wrote:
> The BYE should have a Route header, which is used for routing. If it
> does not have a Route header, the UA originating the BYE must be
> fixed. Of course, you can hack the BYE by doing the same kind of alias
> rewriting as the INVITE, but it is not RFC-compliant.
> g-)
>
> Jeremy A wrote:
>> Greger Viken Teigre wrote:
>>> If you have alias=ip-of-ser in your config, ACK with port 5070 in ruri will match uri==myself.
>>> The ACK should just be relayed.
>>> See example cfg for ser used for sems for an example.
>>> g-)
>>>
>>>   
>> Unfortunately I am still quite puzzled by the SER configuration
>> process, so I have not been able to work out exactly what to do. The
>> ser/sems example uses pipes which doesn't help.
>>
>> So far I have simply added a clause to always forward ACK packets.
>> This is not sufficient.
>>
>> The ACK gets through but now the BYE command gets rejected 404 not
>> found on the user location lookup. I think this is caused by the
>> aliases involved in the call ?
>>
>> (Call is dialled as 2311 at fesa.sto. It gets reformed to
>> 1001 at butler.fesa.sto and passed to the SER proxy for butler.fesa.sto.
>> SER knows 1001 is an alias of registered user 1009 and sends the call
>> to the user)
>>
>> Here is a log of a call made on the SER machine butler.fesa.sto
>>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20071129/7b073efa/attachment.htm>


More information about the sr-users mailing list