]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
Round-robin for upstream connections
authorOndřej Kuzník <ondra@mistotebe.net>
Wed, 10 May 2017 15:06:19 +0000 (16:06 +0100)
committerOndřej Kuzník <okuznik@symas.com>
Tue, 17 Nov 2020 17:55:46 +0000 (17:55 +0000)
servers/lloadd/backend.c

index b1ad7a31191c05fba205819c59e6439d1ecbc324..7e2fc76f721bf4f5a287aa11d4bdf3f28135be8a 100644 (file)
@@ -128,9 +128,16 @@ backend_select( Operation *op )
                         "selected connection %lu for client %lu msgid=%d\n",
                         c->c_connid, op->o_client_connid, op->o_client_msgid );
 
+                /*
+                 * Round-robin step:
+                 * Rotate the queue to put this connection at the end.
+                 */
+                LDAP_CIRCLEQ_MAKE_TAIL( head, c, c_next );
+
                 b->b_n_ops_executing++;
                 c->c_n_ops_executing++;
                 CONNECTION_UNLOCK_INCREF(c);
+
                 ldap_pvt_thread_mutex_unlock( &b->b_mutex );
                 return c;
             }