Hi Daniel,
it is possible to arm only one onreply_route. In the
case you use two
times t_on_reply(), the latest is used.
Ooops, I was expecting this reply. I suggest to document this
in the Openser docs...
To solve your case, the solution
is to set some flags, and based on that to call different routes from
onreply_route.
Of course, it's feasible. BUT: the conditionals/flags in the
main route require duplication of code in the reply_routes -
I'd like to avoid this.
I fully understand that at the moment there are tasks of
higher importance to complete. But at the same time I believe
that in the long run multiple reply-routes can help to
significantly reduce script complexity. What do you think?
Thanks for your reply,
best regards
--Joachim
PS: A sample to illustrate practically what I'm talking
about. Imagine the following scenario: action
block A (possibly consisting of tens of loc) is required
for all replies except for replies on Cancel and Ack.
Action block B for all invites, C for all subscribes.
Currently this requires the following code:
route
{
# Nesting required, otherwise we overwrite our previous
# route setting
if (!((method=="ACK")||(method=="CANCEL")))
{
if (method=="INVITE")
{
t_on_reply("1");
}
else
{
if (method=="SUBSCRIBE")
{
t_on_reply("2");
}
else
{
t_on_reply("3");
}
}
}
# some other processing
t_relay();
}
onreply_route[1]
{
A;
B;
}
onreply_route[2]
{
A;
C;
}
onreply_route[3]
{
A;
}
If several reply-routes can be triggered, the code becomes
the following - imho much more readable and clear:
route
{
# No nesting required
if (!((method=="ACK")||(method=="CANCEL")))
{
t_on_reply("3");
}
if (method=="INVITE")
{
t_on_reply("1");
}
if (method=="SUBSCRIBE")
{
t_on_reply("2");
}
# some other processing
t_relay();
}
onreply_route[1]
{
# we get rid of code duplication A #1
B;
}
onreply_route[2]
{
# we get rid of code duplication A #2
C;
}
onreply_route[3]
{
A;
}
Cheers,
Daniel
On 12/20/05 14:08, Joachim Fabini wrote:
Hi,
Does OpenSER support sequentially processing the same
reply by several onreply routes, i.e.
route
{
# general case - have all replies processed by
# onreply_route[1]
t_on_reply("1");
if (mycondition)
{
# special case - these replies should be processed
# by onreply_route[1] _and_ by onreply_route[2]
t_on_reply("2");
}
t_relay();
}
onreply_route[1]
{
#
append_hf("P-MyExtraInfo: xyz\r\n");
}
onreply_route[2]
{
# do some extra processing here
}
I did not find any info on this topic in the docs. Imho
the ability to use trigger several onreply_routes for
sequential processing can help extremly in keeping code
clean and readable.
Assume a proxy that is required, e.g., to insert a
new header field into _any_ reply. In addition, some
other replies need some extra handling in the onreply
route. Without the capability to trigger multiple
onreply-routes this leads to many conditionals in either
the main route or in the reply route(s).
Thanks in advance,
--Joachim
_______________________________________________
Users mailing list
Users(a)openser.org
http://openser.org/cgi-bin/mailman/listinfo/users