On Mar 08, 2010 at 21:55, I?aki Baz Castillo <[email protected]> wrote: > El Lunes 08 Marzo 2010, Alex Balashov escribi?: > > 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.
It depends. If the reachability issue can be detected immediately, then t_relay() will fail. If it cannot be detected (e.g. connect error on tcp in async mode), it won't. Note also that t_relay() will fail only if all branches fail. For example in tcp async mode (default), the first time you try to t_relay() to an unreachable destination, t_relay() won't fail immediately (it will timeout eventually). The second time it will, because that address will be now in the blacklist. > > In case of error, the function returns the following codes: > -1 - generic internal error > -2 - bad message (parsing errors) > -3 - no destination available (no branches were added or request already > cancelled) > -4 - bad destination (unresolvable address) > -5 - destination filtered (black listed) > -6 - generic send failed No, it only returns -1 (error). It sets ser_error to one of the above error conditions (with the exception that it uses E_SEND for send failure, blacklist, denied by onsend_route or dns failure). ser_error is used for automatic reply generation (in case now t_reply() is used in the script). Andrei _______________________________________________ sr-dev mailing list [email protected] http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev
