I'm testing dispatcher with failover (tesitng both probing_modes: automatic 
with 1, and 0 with failure_route). Opensips is dispatching calls to 2 Asterisk 
servers. If I stop one of the Asterisk servers, that node becomes Pending as 
expected, but when I restart the node, it doesn't turn Active again.

Here is my test: 


1. I start Opensips with both Asterisk nodes Active (Asterisk is running on 
both servers)
ds_list ( opensipsctl fifo ds_list) shows both nodes Active

2. I stop Asterisk in Server B
ds_list shows 2nd node as "P" pretty much right away for mode 1, and after the 
1st failed request comes for mode 2
So far, everything is OK

3. I start Asterisk in server B
ds_list still shows Server B as Pending (both for mode 1 and 2); however, it 
never goes back to Active unless I restart Opensips


If I start Opensips when one of the nodes Pending (Asterisk off), and later 
start Asterisk on that node, ds_list still doesn't report it Active.


The log (debug=4) shows both nodes sending the <OPTION> reply, but for some 
reason ds_list doesn't reflect that, and ds_select_dst ignores the new "active" 
node.


Any suggestions? I'm pretty sure I'm missing something very simple.


Below is my code. 

Thanks,
Matt




###############################################################################################

# gateways
1 sip:10.0.1.128:5060
1 sip:10.0.1.129:5060



###############################################################################################

modparam("dispatcher", "list_file","/usr/local/etc/opensips/dispatcher.list")
modparam("dispatcher", "flags", 2)   
modparam("dispatcher", "dst_avp", "$avp(271)")
modparam("dispatcher", "grp_avp", "$avp(272)")
modparam("dispatcher", "cnt_avp", "$avp(273)")
modparam("dispatcher", "hash_pvar", "$si")   
modparam("dispatcher", "ds_ping_method", "OPTIONS")
modparam("dispatcher", "ds_ping_interval", 1)   
modparam("dispatcher", "ds_probing_mode", 0)     
modparam("dispatcher", "ds_probing_threshhold", 1) 

modparam("tm", "fr_timer", 3)



route{
    if (!ds_is_in_list("$si", "$sp")) {      /* if it's not asterisk replying 
back to opensips  */
        t_on_failure("1");
        ds_select_dst("1", "7");   
        }
    route(1);
}

route[1] {
    if (!t_relay()) {
        sl_reply_error();
    };
    exit;
}


failure_route[1]{
        if (t_was_cancelled()) {
                exit;
        }
        if (t_check_status("408")) {
                ds_mark_dst("p");
                
        t_on_failure("1");        
        ds_next_dst();
        route(1);
        }
}


###############################################################################################

                                          
_______________________________________________
Users mailing list
[email protected]
http://lists.opensips.org/cgi-bin/mailman/listinfo/users

Reply via email to