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(a)timklein.fastmail.fm>
To: <serusers(a)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