SER Getting Started is old, but still useful to read. Other commercial
books can be found out there.
Cheers,
Daniel
On 04/02/15 21:57, Ryan Brindley wrote:
Hey Daniel,
Thanks for the reply and pointers on what I'm doing wrong. I'll look
into the branch_failure_route and read the docs again to make sure I
do serial forking and not accidentally creating a parallel fork.
Does there happen to be any good resources (blog posts, wiki articles,
books, ancient Egyptian hieroglyphics) on better understanding the
handling of requests/responses in Kamailio? Or are the module docs the
best available resource?
Thanks,
Ryan
On Wed, Feb 4, 2015 at 1:02 PM, Daniel-Constantin Mierla
<miconda(a)gmail.com <mailto:miconda@gmail.com>> wrote:
Hello,
On 04/02/15 16:28, Ryan Brindley wrote:
Hey community,
I'm trying to understand t_relay () when a forward times out.
This is an abbreviated version of what i have:
Request_route {
...
Route(do1)
}
Route [do1] {
...
T_on_reply (1reply)
T_on_failure (1fail)
T_relay ()
}
Reply_route[1reply] {
...
If (t_check_status (302)) {
Route (do2)
}
}
Failure_route [1fail] {
Xlog (dafail1)
}
Route [do2]{
...
T_on_reply (2reply)
T_on_failure (2fail)
T_relay ()
}
Reply_route [2reply]{
Xlog (twerked)
}
Failure_route [2fail]{
Xlog (failured)
}
The case im currently interested in is when the first relay (do1)
returns a 302 and then the second (do2) times out.
What happens on the second when it times out, it hits the 1fail
failure_route. This messes with my logic as i would've expected (and
want to find out how to make it) hit the 2nd failure_route.
I also noticed that if i loop and try the do2 again after the first
failure it will then hit the 2fail route.
Any clarification on this subject would be greatly appreciated,
It is not easy to follow your pseduo-code, but it is important to know
that the SIP response is handled in an onreply_route. Given that, you
cannot call t_relay() on a SIP response (reply). SIP responses are
routed automatically based on Via header.
t_relay() must be used only for SIP requests. If you sent the SIP
request to many destinations (parallel fork), the tm is waiting
for all
branches to complete before executing failure_route, the selected
response is based on an algorithm derived from SIP RFC specs. If you
want to have a routing block executed on a negative reply, use
branch_failure_route - in it, you get the request for processing
and you
can relay it again.
Cheers,
Daniel
--
Daniel-Constantin Mierla
http://twitter.com/#!/miconda <http://twitter.com/#%21/miconda> -
http://www.linkedin.com/in/miconda
Kamailio World Conference, May 27-29, 2015
Berlin, Germany -
http://www.kamailioworld.com
_______________________________________________
SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing
list
sr-users(a)lists.sip-router.org <mailto:sr-users@lists.sip-router.org>
http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users