[Users] Problem with module dispatcher funtion ds_next_dst()
Peter Childs
peter.childs at nec.com.au
Tue Jul 11 07:11:46 CEST 2006
I believe that the failover in the dispatcher was only introduced in the
OpenSER 1.1 (not 1.0.1).
On Mon, 2006-07-10 at 19:06 -0500, Jose Gil Navarrete wrote:
> Hi, somebody can help me?? I am trying to set up OpenSer 1.0.1 like
> dispatcher to loadbalance and failover but when I use ds_next_dst()
> for failover I obtain the next error:
> 0(19024) parse error (128,25-26): unknown command, missing
> loadmodule?
ds_select_dst("2","0");
sl_send_reply("100","Trying");
forward(uri:host, uri:port);
t_on_failure("1");
if (!t_relay()) {
sl_reply_error();
return;
};
Wouldn't you do the following (OpenSER will do 100 for you... and you
don't need to forward() and t_relay()...
ds_select_dst("2", "0");
t_on_failure("1");
if( !t_relay()) {
sl_reply_error();
return;
};
Just a thought...
Also, in your example, failure_route[1] will be called for things like
404 (not found), and 486 (busy), and you will be attempting the same
thing again using different media gateways etc...
I get around this by using a t_on_reply("1") and in onreply_route[1] do
if( status =~ "18[0-9]" ) {
t_on_failure("0");
}
So if you get a provisional response from your media gateway (ie a 180
Ringing, or 183 Session Progress) you don't do any more gateway attempts
if you then get a 4xx/5xx/6xx response....
You may also wish in route{} to split out the handling of CANCEL, BYE,
and INVITE. You want your INVITE to do the ds_select_dst(), but you
should just be able to t_relay() your CANCELs and BYEs and OpenSER will
match them to the selected destination based on an existing transaction.
YMMV but this is similar to what I have been doing and testing with
OpenSER.
Cheers,
Peter
More information about the Users
mailing list