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

Reply via email to