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(a)iptel.org [mailto:serusers-bounces@lists.iptel.org] On
Behalf Of bert berlin
Sent: Thursday, June 24, 2004 11:47 AM
To: serusers(a)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
--
Bert Berlin
Quintum Technologies, Inc.
71 James Way
Eatontown,NJ 07724
ph 732-460-9000 ext 247