[SR-Users] How to unload previously loaded destinations in the case of applying multiple ds_select_domain
Igor Olhovskiy
igorolhovskiy at gmail.com
Tue Aug 3 22:25:16 CEST 2021
Just noticed, Daniel already answered ) Got his answer as a new thread
somehow )
Regards,
Igor
On 03.08.2021 22:16, Igor Olhovskiy wrote:
>
> Serdar,
>
> Have you tried to clean variables before calling new
> ds_select_domain(), that are using by dispatcher module failover?
>
> Like
> https://kamailio.org/docs/modules/5.3.x/modules/dispatcher.html#dispatcher.p.xavp_dst
> and so on?
>
> But as I got, you're saying, that calling ds_select_domain() with
> different setid's in a case of fail, not really fails, but using "old"
> available destinations from previous attempt?
>
> Regards,
> Igor
> On 29.07.2021 11:19, Serdar GÜÇLÜER wrote:
>>
>>
>> Hello all,
>>
>> I have a trouble that is related to the way of usage of dispatcher
>> module.
>>
>> I am working with Kamailio 5.3.2 and using dispatcher module as load
>> balancer to route calls to the media gateways.
>>
>> My dispatching routes are below as simply,
>>
>> route[DISPATCH] {
>> if(ds_select_domain("2", "4")) {
>> route(MYRELAY);
>> } else {
>> send_reply("503","Service Unavailable - No MGW");
>> exit;
>> }
>> }
>> route[MYRELAY] {
>> t_on_failure("MYFAILURE");
>> if(!t_relay()) {
>> sl_reply_error();
>> }
>> exit;
>> }
>> failure_route[MYFAILURE] {
>> route(NATMANAGE);
>> revert_uri();
>> if (t_is_canceled()) {
>> exit;
>> }
>> if ($T_reply_code == 408 || $T_reply_code == 503) {
>> if(ds_next_domain()) {
>> route(MYRELAY);
>> } else {
>> send_reply("503","Service Unavailable");
>> exit;
>> }
>> } else {
>> if(ds_select_domain("6", "4")) {
>> route(MYVMRELAY);
>> } else {
>> send_reply(486,"Busy");
>> exit;
>> }
>> }
>> }
>> route[MYVMRELAY] {
>> t_on_failure("MYVMFAILURE");
>> if(!t_relay()) {
>> sl_reply_error();
>> }
>> exit;
>> }
>> failure_route[MYVMFAILURE] {
>> route(NATMANAGE);
>> revert_uri();
>> if (t_is_canceled()) {
>> exit;
>> }
>> if(ds_next_domain()) {
>> route(MYVMRELAY);
>> } else {
>> send_reply("503","Service Unavailable");
>> exit;
>> }
>> }
>>
>>
>> I have multiple media gateways(setid=2) and voicemail
>> servers(setid=6). As can be seen from the configuration,
>> after first routing, for transaction reply code except 408 or 503, I
>> am routing call to the voicemail server using dispatcher.
>> In that phase, dispatcher module is remembering previously loaded
>> destinations that come from first ds_select_domain
>> and module try to route these destinations in the case that all
>> voicemail servers are unavailable.
>> So basically, I want to unload all destinations comes from previous
>> ds_select_domain.
>>
>> From the documentation, i tried ds_load_update and ds_load_unset
>> methods but not worked for me.
>>
>> Is there any way to overcome that problem or any right usages of
>> these methods.
>>
>> Thank you,
>>
>> Serdar
>>
>>
>>
>>
>> __________________________________________________________
>> Kamailio - Users Mailing List - Non Commercial Discussions
>> *sr-users at lists.kamailio.org
>> Important: keep the mailing list in the recipients, do not reply only to the sender!
>> Edit mailing list options or unsubscribe:
>> *https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20210803/3efe9d37/attachment.htm>
More information about the sr-users
mailing list