]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
ITS#10219 Modify of olcDisabled by removing and adding a value invokes db_open twice
authorNadezhda Ivanova <nivanova@symas.com>
Thu, 23 May 2024 13:09:26 +0000 (16:09 +0300)
committerQuanah Gibson-Mount <quanah@openldap.org>
Fri, 28 Jun 2024 16:58:12 +0000 (16:58 +0000)
Do not invoke db_open if the database is not actually disabled

servers/slapd/bconfig.c

index 572bcc4b2d369b68284c426d73e44a7b6975e95d..45e2eb5e3f5fa35edefaa27280a923a816ef42f7 100644 (file)
@@ -1638,14 +1638,16 @@ config_generic(ConfigArgs *c) {
 
                case CFG_DISABLED:
                        if ( c->bi ) {
-                               c->bi->bi_flags &= ~SLAP_DBFLAG_DISABLED;
-                               if ( c->bi->bi_db_open ) {
-                                       BackendInfo *bi_orig = c->be->bd_info;
-                                       c->be->bd_info = c->bi;
-                                       rc = c->bi->bi_db_open( c->be, &c->reply );
-                                       c->be->bd_info = bi_orig;
+                               if ( c->bi->bi_flags & SLAP_DBFLAG_DISABLED ) {
+                                       c->bi->bi_flags &= ~SLAP_DBFLAG_DISABLED;
+                                       if ( c->bi->bi_db_open ) {
+                                               BackendInfo *bi_orig = c->be->bd_info;
+                                               c->be->bd_info = c->bi;
+                                               rc = c->bi->bi_db_open( c->be, &c->reply );
+                                               c->be->bd_info = bi_orig;
+                                       }
                                }
-                       } else {
+                       } else if ( c->be->be_flags & SLAP_DBFLAG_DISABLED ){
                                c->be->be_flags &= ~SLAP_DBFLAG_DISABLED;
                                rc = backend_startup_one( c->be, &c->reply );
                        }