login | register
Fri 25 of Jul, 2008 [16:38 UTC]

voip-info.org

History

SER example forking

Created by: oej,Last modification on Fri 19 of Sep, 2003 [19:56 UTC]

SER Example: message forking

Example script showing both types of forking; incoming message is forked in parallel to 'nobody' and 'parallel', if no positive reply appears with final_response timer, nonsense is retried (serial forking); than, destination 'foo' is given last chance
 #
 # $Id: onr.cfg,v 1.8 2003/06/03 03:18:12 jiri Exp $
 #

 # ------------------ module loading ----------------------------------

 loadmodule "modules/sl/sl.so"
 loadmodule "modules/tm/tm.so"

 # ----------------- setting module-specific parameters ---------------

 # — tm params --
 # set time for which ser will be waiting for a final response;
 # fr_inv_timer sets value for INVITE transactions, fr_timer
 # for all others
 modparam("tm", "fr_inv_timer", 15 )
 modparam("tm", "fr_timer", 10 )

 # -------------------------  request routing logic -------------------

 # main routing logic

 route{
       # for testing purposes, simply okay all REGISTERs
       if (method=="REGISTER") {
               log("REGISTER");
               sl_send_reply("200", "ok");
               break;
       };
       # try these two destinations first in parallel; the second
       # destination is targeted to sink port — that will make ser
       # wait until timer hits
       seturi("sip:nobody@iptel.org");
       append_branch("sip:parallel@iptel.org:9");
       # if we do not get a positive reply, continue at reply_route[1]
       t_on_failure("1");
       # forward the request to all destinations in destination set now
       t_relay();
 }

 failure_route[1] {
       # forwarding failed — try again at another destination
       append_branch("sip:nonsense@iptel.org");
       log(1,"first redirection\n");
       # if this alternative destination fails too, proceed to reply_route[2]
       t_on_failure("2");
       t_relay();
 }

 failure_route2 {
       # try out the last resort destination
       append_branch("sip:foo@iptel.org");
       log(1, "second redirection\n");
       # we no more call t_on_negative here; if this destination
       # fails too, transaction will complete
       t_relay();
 }



Comments