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 J
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@lists.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
--
Bert
Berlin
Quintum Technologies, Inc.
ph 732-460-9000 ext 247