|
|
@ -22,6 +22,7 @@ modparam("dispatcher", "ds_probing_mode", 1) |
|
|
modparam("dispatcher", "ds_ping_reply_codes", "501,403,404,400,200") |
|
|
modparam("dispatcher", "ds_ping_reply_codes", "501,403,404,400,200") |
|
|
modparam("dispatcher", "ds_ping_from", "sip:sipcheck@MY_HOSTNAME") |
|
|
modparam("dispatcher", "ds_ping_from", "sip:sipcheck@MY_HOSTNAME") |
|
|
|
|
|
|
|
|
|
|
|
#!include_file "dispatcher-network-params.cfg" |
|
|
|
|
|
|
|
|
## Dispatcher Groups: |
|
|
## Dispatcher Groups: |
|
|
## 1 - Primary media servers |
|
|
## 1 - Primary media servers |
|
|
@ -33,6 +34,8 @@ modparam("dispatcher", "ds_ping_from", "sip:sipcheck@MY_HOSTNAME") |
|
|
####### Dispatcher Logic ######## |
|
|
####### Dispatcher Logic ######## |
|
|
route[DISPATCHER_CLASSIFY_SOURCE] |
|
|
route[DISPATCHER_CLASSIFY_SOURCE] |
|
|
{ |
|
|
{ |
|
|
|
|
|
#!include_file "dispatcher-network-classify.cfg" |
|
|
|
|
|
|
|
|
if (is_myself("$ou")) { |
|
|
if (is_myself("$ou")) { |
|
|
xlog("L_INFO", "$ci|log|original R-URI ($ou) is this proxy, treating as external sources\n"); |
|
|
xlog("L_INFO", "$ci|log|original R-URI ($ou) is this proxy, treating as external sources\n"); |
|
|
} else if ( |
|
|
} else if ( |
|
|
@ -59,17 +62,21 @@ route[DISPATCHER_FIND_ROUTES] |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
$var(ds_group) = 1; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
$var(ds_primary_group) = 1; |
|
|
|
|
|
$var(ds_backup_group) = 2; |
|
|
|
|
|
|
|
|
|
|
|
# if($RAp == 7005) { |
|
|
#!ifndef PRESENCE_ROLE |
|
|
#!ifndef PRESENCE_ROLE |
|
|
if (is_method("SUBSCRIBE")) { |
|
|
if (is_method("SUBSCRIBE")) { |
|
|
$var(ds_group) = 10; |
|
|
|
|
|
|
|
|
$var(ds_primary_group) = 10; |
|
|
|
|
|
$var(ds_backup_group) = 11; |
|
|
} |
|
|
} |
|
|
#!endif |
|
|
#!endif |
|
|
|
|
|
|
|
|
#!ifndef REGISTRAR_ROLE |
|
|
#!ifndef REGISTRAR_ROLE |
|
|
if (is_method("REGISTER")) { |
|
|
if (is_method("REGISTER")) { |
|
|
$var(ds_group) = 20; |
|
|
|
|
|
|
|
|
$var(ds_primary_group) = 20; |
|
|
|
|
|
$var(ds_backup_group) = 21; |
|
|
} |
|
|
} |
|
|
#!endif |
|
|
#!endif |
|
|
|
|
|
|
|
|
@ -77,16 +84,18 @@ route[DISPATCHER_FIND_ROUTES] |
|
|
route(FAST_PICKUP_ATTEMPT); |
|
|
route(FAST_PICKUP_ATTEMPT); |
|
|
#!endif |
|
|
#!endif |
|
|
|
|
|
|
|
|
if (!ds_select_dst("$var(ds_group)", "0") || $(avp(ds_dst)[0]) == $null) { |
|
|
|
|
|
# if we selected from group 1, try again in group 2 |
|
|
|
|
|
if ($var(ds_group) == 1) { |
|
|
|
|
|
if (!ds_select_dst("2", "0")) { |
|
|
|
|
|
xlog("L_WARN", "$ci|end|no servers available in group 1 or 2\n"); |
|
|
|
|
|
|
|
|
#!include_file "dispatcher-network-find.cfg" |
|
|
|
|
|
|
|
|
|
|
|
if (!ds_select_dst("$var(ds_primary_group)", "0") || $(avp(ds_dst)[0]) == $null) { |
|
|
|
|
|
# if we selected from primary group, try again in backup group |
|
|
|
|
|
if ($var(ds_primary_group) == 1) { |
|
|
|
|
|
if (!ds_select_dst("$var(ds_backup_group)", "0")) { |
|
|
|
|
|
xlog("L_WARN", "$ci|end|no servers available in primary or backup group\n"); |
|
|
sl_send_reply("480", "All servers busy"); |
|
|
sl_send_reply("480", "All servers busy"); |
|
|
exit; |
|
|
exit; |
|
|
} |
|
|
} |
|
|
} else { |
|
|
} else { |
|
|
xlog("L_INFO", "$ci|end|no servers available in group $var(ds_group)\n"); |
|
|
|
|
|
|
|
|
xlog("L_INFO", "$ci|end|no servers available in group $var(ds_primary_group)\n"); |
|
|
sl_send_reply("480", "All servers busy"); |
|
|
sl_send_reply("480", "All servers busy"); |
|
|
exit; |
|
|
exit; |
|
|
} |
|
|
} |
|
|
|