]> git.sur5r.net Git - openldap/commitdiff
Fix autoca schema init
authorHoward Chu <hyc@openldap.org>
Sun, 9 Apr 2017 21:45:36 +0000 (22:45 +0100)
committerHoward Chu <hyc@openldap.org>
Sun, 9 Apr 2017 21:45:36 +0000 (22:45 +0100)
Wait for core.schema to get loaded

servers/slapd/overlays/autoca.c

index 2762a4f26ecd2ba60e0b85a2a1043a712904b9f6..dab10cb681972269129e745193fb731fdd786d8e 100644 (file)
@@ -964,6 +964,24 @@ autoca_db_open(
        if (slapMode & SLAP_TOOL_MODE)
                return 0;
 
+       if ( ! *aca_attr2[0].ad ) {
+               int i, code;
+               const char *text;
+
+               for ( i=0; aca_attr2[i].at; i++ ) {
+                       code = slap_str2ad( aca_attr2[i].at, aca_attr2[i].ad, &text );
+                       if ( code ) return code;
+               }
+
+               /* Schema may not be loaded, ignore if missing */
+               slap_str2ad( "ipHostNumber", &ad_ipaddr, &text );
+
+               for ( i=0; aca_ocs[i].ot; i++ ) {
+                       code = register_oc( aca_ocs[i].ot, aca_ocs[i].oc, 0 );
+                       if ( code ) return code;
+               }
+       }
+
        thrctx = ldap_pvt_thread_pool_context();
        connection_fake_init2( &conn, &opbuf, thrctx, 0 );
        op = &opbuf.ob_op;
@@ -1069,19 +1087,6 @@ int autoca_initialize() {
                if ( code ) return code;
        }
 
-       for ( i=0; aca_attr2[i].at; i++ ) {
-               code = slap_str2ad( aca_attr2[i].at, aca_attr2[i].ad, &text );
-               if ( code ) return code;
-       }
-
-       /* Schema may not be loaded, ignore if missing */
-       slap_str2ad( "ipHostNumber", &ad_ipaddr, &text );
-
-       for ( i=0; aca_ocs[i].ot; i++ ) {
-               code = register_oc( aca_ocs[i].ot, aca_ocs[i].oc, 0 );
-               if ( code ) return code;
-       }
-
        return overlay_register( &autoca );
 }