[Serusers] Problem with specific phones only able to registerto ipnumber andnotdomain..
Alex Mack
amack at fhm.edu
Thu Nov 4 11:12:14 CET 2004
Hi Marian!
I'm already working on serdev mailinglist to bring back a solution like
"use_domain 0" - it was dropped due to multi-domain capability. Now
*every* lookup uses the complete aor to match.
The cleanest approach would be a change in the code since RFC 3261 (SIP)
states clearly that an uri can also contain IPv4 numeric adresses
instead of a host. So it's not a bug of the phones, instead ser has to
handle that correctly.
Ciao, Alex.
Marian Dumitru wrote:
> Hi Alex,
>
> As I said, that was a very ugly solution.
>
> The problem you are facing can be approached from two direction:
> 1) mangle the REGISTER - SER takes the aor from TO header, so you have
> to mangle it; but doing this will screw up badly the transaction
> matching (see my previous email).
> 2) try to fix it on lookup - try to do lookup both as user at ip and
> user at domain - but is the ugly solution.
>
> Maybe doing code changing will help you. Something like having a
> "use_domain" parameter for registrar module which will force to ignore
> the domain part when building the aor.
>
> Best regards,
> Marian Dumitru
>
>
> Alex Mack wrote:
>
>> Hi Marian!
>>
>> You're right, that way IS very ugly.
>> You also could leave out the "if"-clause completely: transform
>> *every* request into "user at ip"-form rendering wrong requests only and
>> transform those back to the correct form. That's not an approach,
>> that's a proof of misconcept.
>>
>> It can't be we're the only ones facing this problem. What does ser
>> have included to handle malformed/wrong REGISTER-requests? It has to
>> be able to mangle incoming REGISTER-requests beyond checking them.
>> How can one control what ser is puting into 'aor'? There have to be
>> more parameters for the save() function.
>>
>> In the CVS one can see, that "use_domain" was removed for
>> multi-domain capability, but there has to be implemented a feature to
>> "alias" domains, e.g., all "100.100.100.100" are also "mydomain.org".
>>
>> Best regards,
>> Alex Mack.
>>
>> Marian Dumitru wrote:
>>
>>> Hi Alex,
>>>
>>> The subst() cannot fix the problem. If you use it to alter the To
>>> header, you will have to forward the message to your self to allow
>>> the modifications to take place (for each message SER keeps the
>>> original message and a list of changes which are applied only when
>>> sending out he message). Even if you modify the To hdr and spiral
>>> the message back to you, you will have to catch the reply to undo
>>> the modification on To - otherwise, the UAC will no be able to match
>>> the reply with the request it sent. And to be able to catch the
>>> reply you need to use tm, but you cannot do so because the
>>> transaction will be broken because of the modified To hdr. I hope
>>> my words make some sens to you :-).
>>>
>>> there is a way, but very ugly and inefficient - try lookup using
>>> both forms user at ip and user at domain:
>>>
>>> if (!lookup("location)) {
>>> # try to replace domain with IP or IP with domain
>>> if (
>>> subst_uri("/(sip:.*@)mydomain\.com(;.*)/\1xxx.xxx.xxx.xxx\2/") ||
>>> subst_uri("/(sip:.*@)xxx\.xxx\.xxx(;.*)\.xxx/\1mydomain.com\2/") ) {
>>> if (!lookup("location")) {
>>> # not found
>>> }
>>> }
>>> }
>>>
>>> I haven't test this, it's just an idea.
>>>
>>> Best regards,
>>> Marian Dumitru
>>>
>
More information about the sr-users
mailing list