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(a)fesa.sto. It gets reformed to
> 1001(a)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
>