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

Tim Klein tkpublic at timklein.fastmail.fm
Tue Nov 22 02:39:40 CET 2005


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