From e43af56441edf28eb894d7647f99518659f4b58f Mon Sep 17 00:00:00 2001 From: Razvan Crainea Date: Mon, 2 May 2022 18:55:27 +0300 Subject: [PATCH] rtpproxy+rtpengine: fair election when the first try is disabled When a first attempt to use a rtpproxy/rtpengine node picks a disabled node, the next attempt should not consider the disabled nodes at all. (cherry picked from commit 9d5dd9539d54b2186f31d2447823cae9108b9c31) --- modules/rtpengine/rtpengine.c | 3 ++- modules/rtpproxy/rtpproxy.c | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/modules/rtpengine/rtpengine.c b/modules/rtpengine/rtpengine.c index d345d8252a5..268d55bcc86 100644 --- a/modules/rtpengine/rtpengine.c +++ b/modules/rtpengine/rtpengine.c @@ -2523,7 +2523,8 @@ select_rtpe_node(str callid, int do_test, struct rtpe_set *set) continue; } } - sumcut -= node->rn_weight; + if (!node->rn_disabled || !was_forced) + sumcut -= node->rn_weight; node = node->rn_next; } /* No node list */ diff --git a/modules/rtpproxy/rtpproxy.c b/modules/rtpproxy/rtpproxy.c index b3693652d19..39e28f35c17 100644 --- a/modules/rtpproxy/rtpproxy.c +++ b/modules/rtpproxy/rtpproxy.c @@ -2306,7 +2306,8 @@ select_rtpp_node(struct sip_msg * msg, continue; } } - sumcut -= node->rn_weight; + if (!node->rn_disabled || !was_forced) + sumcut -= node->rn_weight; node = node->rn_next; } /* No node list */