[Serusers] How to do a large number of relay attempts?

Tim Klein tkpublic at timklein.fastmail.fm
Tue Nov 22 19:07:48 CET 2005


Thank you for the response, Greger!  On your suggestion, I've read 
about the LCR module, and it does seem useful here.  But the LCR 
functions (such as next_contacts()) also work by appending branches.

Am I correct in thinking that SER is not able to make more than 31 
attempts to relay an INVITE, because it is not able to append more 
than 31 branches?  (This question may be better for the developers 
mailing list, so I'm cross-posting there.)

If I am correct about that, then can anyone suggest a way to 
statefully forward an INVITE without appending a branch?

Thank you in advance!

Tim

At 6:46 AM +0100 11/22/05, Greger V. Teigre wrote:
>Yes, you need to append a new branch to initiate a new transaction. 
>Your best bet, however, is to use lcr module and the q-value to 
>serialize the contacts. LCR is in CVS head and in the experimental 
>module for 0.9.x.
>g-)
>----- Original Message ----- From: "Tim Klein" <tkpublic at timklein.fastmail.fm>
>To: <serusers at lists.iptel.org>
>Sent: Tuesday, November 22, 2005 2:39 AM
>Subject: [Serusers] How to do a large number of relay attempts?
>
>>Imagine I have 50 salespeople, and I know the URIs of all of their 
>>phones. When an INVITE comes in to SER, I want to keep trying to 
>>forward it to the salespeople, one at a time (in series, not in 
>>parallel), forever or until one of them accepts the call.  (I 
>>randomize the order.)
>>
>>QUESTION 1:
>>At first, I tried rewriting the Request URI in a failure route each 
>>time t_relay() returned failure, and then calling t_relay() again. 
>>But t_relay() doesn't work that way -- when used in a failure 
>>route, it requires you to append a branch, and apparently ignores 
>>any changes in the Request URI after the failure happens.
>>
>>OK, so in my failure route, I'll append a branch instead of 
>>rewriting the Request URI.  But the default value of MAX_BRANCHES 
>>in config.h is only 12.  I think this means I can never try to 
>>relay to more than 13 salespeople -- the first t_relay() call, plus 
>>12 t_relay() calls in failure routes.  Is this correct?
>>
>>QUESTION 2:
>>OK, so I'll make the value of MAX_BRANCHES greater than 12.  But I 
>>see in modules/tm/tm.c that MAX_BRANCHES cannot be given a value 
>>greater than 31, since each branch occupies one bit in a 32-bit 
>>bitmap.  So how can I do 50 stateful relays?  Or, for that matter, 
>>an indefinite number?
>>
>>Thank you for any help!
>>
>>Tim





More information about the sr-users mailing list