[Devel] Re: [Users] NEW FEATURE: NAPTR lookup

Greg Fausak lgfausak at gmail.com
Sat Feb 4 14:14:06 CET 2006


Bogdan,

Thanks for the reply.

Will this work:

here are some examples of how to uses this new functionality:
     1) enum doing serial forking:
        {
           .....
           enum_query("e164.arpa.","voice");
           serialize_branches(1);
           if (!next_branches()) {
               sl_send_reply(...no enum found...);
               exit;
           }
           t_on_failure("1");
           t_relay();
        }

        failure_route[1] {
           if (next_branches()) {
               t_relay();
           }
        }


I haven't tried it yet.  But I think it is an example
of serial forking using naptrs.

Have a great weekend!

---greg

On Feb 4, 2006, at 4:01 AM, Bogdan-Andrei Iancu wrote:

> Hi Greg,
>
> at the moment there is no retry support for neither NAPTR nor SRV.  
> The resolver loops through all NAPTR/SRV records and looks for the  
> first NAPTR|SRV|A pair of records that can be successfully resolved  
> to IP address.
>
> The biggest problem with having retry support for the resolve is  
> the combination between parallel and serial forking. Lets supposed  
> the following scenario:
>    uriA parallel forks to uriX and uriY
>    both uriX and uriY leads to distinctive sets of NAPTR/SRV records.
>
> in such a case, even if it's a single transaction, you have to keep  
> the state of the resolver for each branch to be able to do serial  
> forking independently on each of them.
>
> Another problem is detecting the failures. According to "4.3  
> Details of RFC 2782 Process" specifies usage on ICMP for UDP  
> failures...and ICMP support is not reliable (depends on OS) and  
> tricky to implement.
>
> Do not get me wrong, I am not saying it's impossible, but it will  
> take some time to get to it... :)
>
> regards,
> Bogdan
>
>
> Greg Fausak wrote:
>
>> Bogdan,
>>
>> This is great news!  Thank you!  I've got
>> a questions about retries.
>>
>> I'm curious if retries are built in, or do I employ t_on_failure?
>> What I mean is...
>>
>> How do I get the t_relay() to try subsequent naptrs and/or srvs in  
>> the
>> event the current one fails?  Is all of that automatic, or do I need
>> a t_on_failure?
>>
>> I think I understand that you skip ones that don't resolve, but,  
>> what if
>> they resolve but the transaction times out either on the naptr or  
>> on the srv?
>>
>> Best,
>>
>> -g
>>
>>
>>
>> --
>> Greg Fausak
>> greg at thursday.com
>>
>




More information about the Devel mailing list