pespin has submitted this change. ( 
https://gerrit.osmocom.org/c/osmo-mgw/+/33313 )

Change subject: mgcp_client: pool: Only pick clients with an MGCP link 
considered to be UP
......................................................................

mgcp_client: pool: Only pick clients with an MGCP link considered to be UP

This way the user ends up picking a working MGW instance instead of one
which is not reachable around the time.

Related: SYS#6481
Change-Id: Ia3f451d3cd97851f65074408812b1ddc68f67056
---
M src/libosmo-mgcp-client/mgcp_client_pool.c
1 file changed, 18 insertions(+), 4 deletions(-)

Approvals:
  osmith: Looks good to me, but someone else must approve
  Jenkins Builder: Verified
  laforge: Looks good to me, approved




diff --git a/src/libosmo-mgcp-client/mgcp_client_pool.c 
b/src/libosmo-mgcp-client/mgcp_client_pool.c
index 4156664..61fb134 100644
--- a/src/libosmo-mgcp-client/mgcp_client_pool.c
+++ b/src/libosmo-mgcp-client/mgcp_client_pool.c
@@ -94,7 +94,7 @@
 }

 /* Not every pool member may have a functional MGCP client, we will run 
through the pool once until we meet a
- * pool member that is suitable (has a client, is not blocked, has a low 
load). */
+ * pool member that is suitable (is not blocked, has a client with a working 
link, has a low load). */
 static struct mgcp_client_pool_member *mgcp_client_pool_pick(struct 
mgcp_client_pool *pool)
 {
        struct mgcp_client_pool_member *pool_member;
@@ -103,14 +103,15 @@

        llist_for_each_entry(pool_member, &pool->member_list, list) {
                n_pool_members++;
-               if (pool_member->blocked == false && pool_member->client) {
+               bool conn_up = pool_member->client && 
pool_member->client->conn_up;
+               if (pool_member->blocked == false && conn_up) {
                        if (!pool_member_picked)
                                pool_member_picked = pool_member;
                        else if (pool_member_picked->refcount > 
pool_member->refcount)
                                pool_member_picked = pool_member;
                } else {
-                       LOGPPMGW(pool_member, LOGL_DEBUG, "%s -- MGW %u is 
unusable (blocked=%u, cli=%u)\n",
-                                __func__, pool_member->nr, 
pool_member->blocked, !!pool_member->client);
+                       LOGPPMGW(pool_member, LOGL_DEBUG, "%s -- MGW %u is 
unusable (blocked=%u, cli=%u, link=%u)\n",
+                                __func__, pool_member->nr, 
pool_member->blocked, !!pool_member->client, conn_up);
                }
        }


--
To view, visit https://gerrit.osmocom.org/c/osmo-mgw/+/33313
To unsubscribe, or for help writing mail filters, visit 
https://gerrit.osmocom.org/settings

Gerrit-Project: osmo-mgw
Gerrit-Branch: master
Gerrit-Change-Id: Ia3f451d3cd97851f65074408812b1ddc68f67056
Gerrit-Change-Number: 33313
Gerrit-PatchSet: 5
Gerrit-Owner: pespin <[email protected]>
Gerrit-Reviewer: Jenkins Builder
Gerrit-Reviewer: dexter <[email protected]>
Gerrit-Reviewer: laforge <[email protected]>
Gerrit-Reviewer: osmith <[email protected]>
Gerrit-Reviewer: pespin <[email protected]>
Gerrit-MessageType: merged

Reply via email to