2010/3/9 Andrei Pelinescu-Onciul <[email protected]>: > On Mar 08, 2010 at 21:55, I?aki Baz Castillo <[email protected]> wrote: >> El Lunes 08 Marzo 2010, Juha Heinanen escribi?: >> > Alex Balashov writes: >> > > But when does t_relay() itself ever fail due to endpoint reachability >> > > issues? I think t_relay() only fails for formal reasons, like host >> > > name lookup failure, invalid address format, etc? Otherwise, it >> > > returns success; if the endpoint is not reachable, the transaction >> > > simply times out. If this is the case, branch route does get called. >> > >> > my understanding is that t_relay calls a branch route always if >> > t_on_branch is used to set it. then in that branch route, you should be >> > able to call set_forward_no_connect(). >> >> I really though that t_relay() fails (return a negative code and doesn't >> invoke a loaded branch_route) in case the TCP cannot be established. Am I >> wrong? > > You're partially right if tcp is used in non-async mode (when t_relay() > waits for the tcp connection to be established). > I said partially, because in all the cases the branch_route is _always_ > executed before any send attempt (you can change the destination and > some send flags in the branch route so it cannot be executed after the > send). > The branch route execution is skipped only in special cases like out of > memory while trying to build the message, maximum number of branches > exceeded, transaction canceled (e.g. CANCEL arrives before the INVITE). > > So for your TCP example, branch_route will always be executed. If tcp is > in async mode (default), t_relay() won't return an error if the tcp > connect/send failed (unless that destination was already in the > blacklist from a previous attempt). If tcp is in non-async mode, > t_relay() will wait for the connect/send to complete and will return a > possible error immediately (assuming that all the other branches failed > too).
Great, thanks for the explanation. just a question: so in TCP async mode, the first attemp to an unreachable TCP destination (cannot establish connection) would mean an internal 408? Thanks. -- Iñaki Baz Castillo <[email protected]> _______________________________________________ sr-dev mailing list [email protected] http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
