Not as far as I know. I realized serial forking by sequence of failure_routes and exec_dset
Like:
route[1]{
xlog("L_ALERT", "\n(%ci:%is) entering route[1] (%ru)\n");
if ((isflagset(5)) || (isflagset(6))) {
xlog("L_ALERT", "\n(%ci:%is) (rt1) at least one of the participants is NATed->record_route\n");
xlog("L_ALERT", "\n(%ci:%is) (rt1) -->setting up reply processing ->onreply_route[1]");
t_on_reply("1");
if (method=="INVITE") {
xlog("L_ALERT", "\n(%ci:%is) (rt1) INVITE request-->force_rtp_proxy, set NATED-INVITE flag(7)");
force_rtp_proxy();
append_hf("P-hint: rt1, request forced to rtp proxy\r\n");
setflag(7);
};
};
consume_credentials();
if(method=="INVITE") {
t_on_reply("1");
t_on_failure("1");
}
record_route();
consume_credentials();
xlog("L_ALERT", "\n(%ci:%is) (rt1) relaying message ... (%tu)");
if (!t_relay()) {
log(1, "(rt1) t_relay error occured\n");
sl_reply_error();
};
}
onreply_route[1] {
xlog("L_ALERT", "\n(%ci:%is) onreply_route[1] entered\n");
if ((isflagset(5)) || (isflagset(6))) {
xlog("L_ALERT", "\n(%ci:%is) (or1) transaction was sent to a NATED client -> fix nated contact\n");
fix_nated_contact();
append_hf("P-hint: or1, fixed NAT contact for response\r\n");
}
if ( (status=~"100") ) {
xlog("L_ALERT", "\n(%ci:%is) (or1) status 100 received\n");
};
if ( (status=~"180") ) {
xlog("L_ALERT", "\n(%ci:%is) (or1) status 180 received\n");
};
if ( (status=~"202") ) {
xlog("L_ALERT", "\n(%ci:%is) (or1) status 202 received\n");
};
if ( (status=~"200" || status=~"183") ) {
xlog("L_ALERT", "\n(%ci:%is) (or1) status 2xx or 183");
if ( isflagset(7) ) {
xlog("L_ALERT", "\n(%ci:%is) (or1) marked(7) as NATED-INVITE -> force_rtp_proxy \n");
force_rtp_proxy();
append_hf("P-hint: or1, response forced to rtp proxy\r\n");
};
};
}
failure_route[1] {
xlog("L_ALERT", "\n(%ci:%is) failureroute[1] entered");
exec_dset("/usr/local/ser/bin/getroute_a 3");
if (uri=~"sip:[loop|stop]@sip.frontlineglobal.net") {
xlog("L_ALERT", "\n(%ci:%is) STOP DETECTED");
break;
}
t_on_failure("2");
t_on_reply("1");
xlog("L_ALERT", "\n(%ci:%is) (fr1) relaying message ...(%tu)");
append_branch();
if (!t_relay()) {
xlog("L_ALERT", "\n(%ci:%is) (fr1) t_relay error occured\n");
};
}
failure_route[2] {
xlog("L_ALERT", "\n(%ci:%is) failureroute[2] entered");
exec_dset("/usr/local/ser/bin/getroute_a 3");
if (uri=~"sip:[loop|stop]@sip.frontlineglobal.net") {
xlog("L_ALERT", "\n(%ci:%is) STOP DETECTED");
break;
}
t_on_failure("3");
t_on_reply("1");
xlog("L_ALERT", "\n(%ci:%is) (fr2) relaying message ...(%tu)");
append_branch();
if (!t_relay()) {
xlog("L_ALERT", "\n(%ci:%is) (fr2) t_relay error occured\n");
};
}
... etc
So far it doing what I want :-)
And this is kind of combination paraller and serial forking
Btw, serial is not really forking.. this is more steps.. or I misunderstand your question ?
________________________________
From: serusers-bounces@iptel.org [mailto:serusers-bounces@lists.iptel.org] On Behalf Of bert berlin Sent: Thursday, June 24, 2004 11:47 AM To: serusers@lists.iptel.org Subject: [Serusers] Turn off forking in SER?
Is it possible, with the present implementation of SER, by means only of the ser.cfg file, to get SER to use serial forking in place of parallel forking?
thanks, bert