]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
ITS#9913 Protect code in clients_destroy and tier_destroy
authorOndřej Kuzník <ondra@mistotebe.net>
Fri, 2 Sep 2022 12:23:17 +0000 (13:23 +0100)
committerQuanah Gibson-Mount <quanah@openldap.org>
Mon, 12 Sep 2022 20:46:33 +0000 (20:46 +0000)
servers/lloadd/client.c
servers/lloadd/tier.c

index 086e06731659359ed9fa3cb68d9dd54ab6bf317f..8faf4aafad019c4b98f9b02468d809d5ff7960a0 100644 (file)
@@ -796,8 +796,10 @@ client_destroy( LloadConnection *c )
 void
 clients_destroy( int gentle )
 {
+    epoch_t epoch = epoch_join();
     checked_lock( &clients_mutex );
     connections_walk(
             &clients_mutex, &clients, lload_connection_close, &gentle );
     checked_unlock( &clients_mutex );
+    epoch_leave( epoch );
 }
index e8ea4e82ebb5ed3862f73910932a552f6271928b..84ead03fffa677e31d48bfc478b11ba8873609b6 100644 (file)
@@ -67,8 +67,11 @@ tier_destroy( LloadTier *tier )
 {
     while ( !LDAP_CIRCLEQ_EMPTY( &tier->t_backends ) ) {
         LloadBackend *b = LDAP_CIRCLEQ_FIRST( &tier->t_backends );
+        epoch_t epoch = epoch_join();
 
         lload_backend_destroy( b );
+
+        epoch_leave( epoch );
     }
 
 #ifdef BALANCER_MODULE