]> git.sur5r.net Git - openldap/commitdiff
Fix DB_CONFIG loading
authorHoward Chu <hyc@openldap.org>
Sat, 23 Apr 2005 17:21:45 +0000 (17:21 +0000)
committerHoward Chu <hyc@openldap.org>
Sat, 23 Apr 2005 17:21:45 +0000 (17:21 +0000)
servers/slapd/back-bdb/config.c
servers/slapd/back-bdb/init.c

index 6a396236c6a99f561f9c61e563fbcd06b6547e90..ad242744c711080189e22380e6e8e55a11408350 100644 (file)
@@ -353,6 +353,30 @@ bdb_cf_gen(ConfigArgs *c)
                        break;
 
                case BDB_CONFIG:
+                       if (( slapMode&SLAP_SERVER_MODE ) && !( bdb->bi_flags&BDB_IS_OPEN )
+                               && !bdb->bi_db_config ) {
+                               char    buf[SLAP_TEXT_BUFLEN];
+                               FILE *f = fopen( bdb->bi_db_config_path, "r" );
+                               struct berval bv;
+
+                               if ( f ) {
+                                       bdb->bi_flags |= BDB_HAS_CONFIG;
+                                       while ( fgets( buf, sizeof(buf), f )) {
+                                               ber_str2bv( buf, 0, 1, &bv );
+                                               if ( bv.bv_val[bv.bv_len-1] == '\n' ) {
+                                                       bv.bv_len--;
+                                                       bv.bv_val[bv.bv_len] = '\0';
+                                               }
+                                               /* shouldn't need this, but ... */
+                                               if ( bv.bv_val[bv.bv_len-1] == '\r' ) {
+                                                       bv.bv_len--;
+                                                       bv.bv_val[bv.bv_len] = '\0';
+                                               }
+                                               ber_bvarray_add( &bdb->bi_db_config, &bv );
+                                       }
+                                       fclose( f );
+                               }
+                       }
                        if ( bdb->bi_db_config ) {
                                int i;
                                struct berval bv;
index 8821698660dc3804dbfa612898be41b1df5f72cc..21c4985d8f770d5b5f53fe687d0c96b2638ab6c4 100644 (file)
@@ -527,32 +527,6 @@ bdb_db_open( BackendDB *be )
                XLOCK_ID(bdb->bi_dbenv, &bdb->bi_cache.c_locker);
        }
 
-       if (( slapMode&SLAP_SERVER_MODE ) && ( bdb->bi_flags&BDB_HAS_CONFIG )) {
-               char    buf[SLAP_TEXT_BUFLEN];
-               FILE *f = fopen( bdb->bi_db_config_path, "r" );
-               struct berval bv;
-
-               if ( f ) {
-                       while ( fgets( buf, sizeof(buf), f )) {
-                               ber_str2bv( buf, 0, 1, &bv );
-                               if ( bv.bv_val[bv.bv_len-1] == '\n' ) {
-                                       bv.bv_len--;
-                                       bv.bv_val[bv.bv_len] = '\0';
-                               }
-                               /* shouldn't need this, but ... */
-                               if ( bv.bv_val[bv.bv_len-1] == '\r' ) {
-                                       bv.bv_len--;
-                                       bv.bv_val[bv.bv_len] = '\0';
-                               }
-                               ber_bvarray_add( &bdb->bi_db_config, &bv );
-                       }
-                       fclose( f );
-               } else {
-                       /* Eh? It disappeared between config and open?? */
-                       bdb->bi_flags &= ~BDB_HAS_CONFIG;
-               }
-
-       }
        bdb->bi_flags |= BDB_IS_OPEN;
 
        return 0;