]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/config.c
ITS#4667 in connection_closing, release c_mutex to allow waiters
[openldap] / servers / slapd / config.c
index 43cc60c1bb58fe68269e9d0c642d906574699cfc..a9bacd0a6284947ddc296ee4923babd5040c5e21 100644 (file)
@@ -150,14 +150,10 @@ int config_check_vals(ConfigTable *Conf, ConfigArgs *c, int check_only ) {
                snprintf( c->msg, sizeof( c->msg ), "<%s> extra cruft after <%s>",
                        c->argv[0], Conf->what );
 
-#ifdef LDAP_DEVEL
                ignored = "";
-#endif /* LDAP_DEVEL */
                Debug(LDAP_DEBUG_CONFIG, "%s: %s%s.\n",
                                c->log, c->msg, ignored );
-#ifdef LDAP_DEVEL
                return(ARG_BAD_CONF);
-#endif /* LDAP_DEVEL */
        }
        if((arg_syn & ARG_DB) && !c->be) {
                snprintf( c->msg, sizeof( c->msg ), "<%s> only allowed within database declaration",
@@ -513,6 +509,10 @@ init_config_attrs(ConfigTable *ct) {
                        fprintf( stderr, "init_config_attrs: AttributeType \"%s\": %s\n",
                                ct[i].attribute, err );
                        return code;
+               } else {
+#ifndef LDAP_DEVEL
+                       ct[i].ad->ad_type->sat_flags |= SLAP_AT_HIDE;
+#endif
                }
        }
 
@@ -543,10 +543,14 @@ init_config_ocs( ConfigOCs *ocs ) {
                        return code;
                }
                ocs[i].co_oc = oc_find(oc->oc_names[0]);
-               if ( code )
+               if ( code ) {
                        ldap_objectclass_free(oc);
-               else
+               } else {
                        ldap_memfree(oc);
+#ifndef LDAP_DEVEL
+                       ocs[i].co_oc->soc_flags |= SLAP_OC_HIDE;
+#endif
+               }
        }
        return 0;
 }
@@ -880,14 +884,21 @@ done:
 /* restrictops, allows, disallows, requires, loglevel */
 
 int
-verb_to_mask(const char *word, slap_verbmasks *v) {
+bverb_to_mask(struct berval *bword, slap_verbmasks *v) {
        int i;
        for(i = 0; !BER_BVISNULL(&v[i].word); i++) {
-               if(!strcasecmp(word, v[i].word.bv_val)) break;
+               if(!ber_bvstrcasecmp(bword, &v[i].word)) break;
        }
        return(i);
 }
 
+int
+verb_to_mask(const char *word, slap_verbmasks *v) {
+       struct berval   bword;
+       ber_str2bv( word, 0, 0, &bword );
+       return bverb_to_mask( &bword, v );
+}
+
 int
 verbs_to_mask(int argc, char *argv[], slap_verbmasks *v, slap_mask_t *m) {
        int i, j;
@@ -1151,7 +1162,7 @@ slap_cf_aux_table_parse( const char *word, void *dst, slap_cf_aux_table *tab0, L
 int
 slap_cf_aux_table_unparse( void *src, struct berval *bv, slap_cf_aux_table *tab0 )
 {
-       char buf[BUFSIZ], *ptr;
+       char buf[AC_LINE_MAX], *ptr;
        slap_cf_aux_table *tab;
        struct berval tmp;
 
@@ -1285,10 +1296,12 @@ void bindconf_free( slap_bindconf *bc ) {
                BER_BVZERO( &bc->sb_authzId );
        }
 #ifdef HAVE_TLS
+#if 0
        if ( bc->sb_tls_ctx ) {
                SSL_CTX_free( bc->sb_tls_ctx );
                bc->sb_tls_ctx = NULL;
        }
+#endif
        if ( bc->sb_tls_cert ) {
                ch_free( bc->sb_tls_cert );
                bc->sb_tls_cert = NULL;
@@ -1435,8 +1448,8 @@ slap_client_connect( LDAP **ldp, slap_bindconf *sb, int version )
        if ( rc ) {
                Debug( LDAP_DEBUG_ANY,
                        "slap_client_connect: "
-                       "TLS context initialization failed\n",
-                       0, 0, 0 );
+                       "URI=%s TLS context initialization failed (%d)\n",
+                       sb->sb_uri.bv_val, rc, 0 );
                return rc;
        }
 #endif
@@ -1446,11 +1459,12 @@ slap_client_connect( LDAP **ldp, slap_bindconf *sb, int version )
                rc = ldap_start_tls_s( ld, NULL, NULL );
                if ( rc != LDAP_SUCCESS ) {
                        Debug( LDAP_DEBUG_ANY,
-                               "slap_client_connect: "
+                               "slap_client_connect: URI=%s "
                                "%s, ldap_start_tls failed (%d)\n",
+                               sb->sb_uri.bv_val,
                                sb->sb_tls == SB_TLS_CRITICAL ?
                                        "Error" : "Warning",
-                               rc, 0 );
+                               rc );
                        if ( sb->sb_tls == SB_TLS_CRITICAL ) {
                                goto done;
                        }
@@ -1499,9 +1513,9 @@ slap_client_connect( LDAP **ldp, slap_bindconf *sb, int version )
                if ( rc != LDAP_SUCCESS ) {
                        static struct berval bv_GSSAPI = BER_BVC( "GSSAPI" );
 
-                       Debug( LDAP_DEBUG_ANY, "slap_client_connect: "
+                       Debug( LDAP_DEBUG_ANY, "slap_client_connect: URI=%s "
                                "ldap_sasl_interactive_bind_s failed (%d)\n",
-                               rc, 0, 0 );
+                               sb->sb_uri.bv_val, rc, 0 );
 
                        /* FIXME (see above comment) */
                        /* if Kerberos credentials cache is not active, retry */
@@ -1527,7 +1541,9 @@ slap_client_connect( LDAP **ldp, slap_bindconf *sb, int version )
                        &sb->sb_cred, NULL, NULL, NULL );
                if ( rc != LDAP_SUCCESS ) {
                        Debug( LDAP_DEBUG_ANY, "slap_client_connect: "
-                               "ldap_sasl_bind_s failed (%d)\n", rc, 0, 0 );
+                               "URI=%s DN=\"%s\" "
+                               "ldap_sasl_bind_s failed (%d)\n",
+                               sb->sb_uri.bv_val, sb->sb_binddn.bv_val, rc );
                        goto done;
                }
        }
@@ -1604,7 +1620,7 @@ strtok_quote( char *line, char *sep, char **quote_ptr )
        return( tmp );
 }
 
-static char    buf[BUFSIZ];
+static char    buf[AC_LINE_MAX];
 static char    *line;
 static size_t lmax, lcur;
 
@@ -1612,7 +1628,7 @@ static size_t lmax, lcur;
        do { \
                size_t len = strlen( buf ); \
                while ( lcur + len + 1 > lmax ) { \
-                       lmax += BUFSIZ; \
+                       lmax += AC_LINE_MAX; \
                        line = (char *) ch_realloc( line, lmax ); \
                } \
                strcpy( line + lcur, buf ); \