]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/overlays/accesslog.c
Each refint op needs a unique timestamp, must perform searches as rootdn
[openldap] / servers / slapd / overlays / accesslog.c
index 27cd9c9adc30753857a71470fe89fec1b4e00e0d..15c512a0224c05734f34bb850bdef4141aae8161 100644 (file)
@@ -605,6 +605,14 @@ log_cf_gen(ConfigArgs *c)
        case SLAP_CONFIG_EMIT:
                switch( c->type ) {
                case LOG_DB:
+                       if ( li->li_db == NULL ) {
+                               snprintf( c->msg, sizeof( c->msg ),
+                                       "accesslog: \"logdb <suffix>\" must be specified" );
+                               Debug( LDAP_DEBUG_ANY, "%s: %s \"%s\"\n",
+                                       c->log, c->msg, c->value_dn.bv_val );
+                               rc = 1;
+                               break;
+                       }
                        value_add( &c->rvalue_vals, li->li_db->be_suffix );
                        value_add( &c->rvalue_nvals, li->li_db->be_nsuffix );
                        break;
@@ -612,6 +620,10 @@ log_cf_gen(ConfigArgs *c)
                        rc = mask_to_verbs( logops, li->li_ops, &c->rvalue_vals );
                        break;
                case LOG_PURGE:
+                       if ( !li->li_age ) {
+                               rc = 1;
+                               break;
+                       }
                        agebv.bv_val = agebuf;
                        log_age_unparse( li->li_age, &agebv );
                        agebv.bv_val[agebv.bv_len] = ' ';
@@ -690,7 +702,7 @@ log_cf_gen(ConfigArgs *c)
                                        ch_free( la );
                                }
                        } else {
-                               log_attr *la, **lp;
+                               log_attr *la = NULL, **lp;
                                int i;
 
                                for ( lp = &li->li_oldattrs, i=0; i < c->valx; i++ ) {
@@ -708,7 +720,15 @@ log_cf_gen(ConfigArgs *c)
                case LOG_DB:
                        li->li_db = select_backend( &c->value_ndn, 0, 0 );
                        if ( !li->li_db ) {
-                               sprintf( c->msg, "<%s> no matching backend found for suffix",
+                               snprintf( c->msg, sizeof( c->msg ),
+                                       "<%s> no matching backend found for suffix",
+                                       c->argv[0] );
+                               Debug( LDAP_DEBUG_ANY, "%s: %s \"%s\"\n",
+                                       c->log, c->msg, c->value_dn.bv_val );
+                               rc = 1;
+                       } else if ( BER_BVISEMPTY( &li->li_db->be_rootdn )) {
+                               snprintf( c->msg, sizeof( c->msg ),
+                                       "<%s> no rootDN was configured for suffix",
                                        c->argv[0] );
                                Debug( LDAP_DEBUG_ANY, "%s: %s \"%s\"\n",
                                        c->log, c->msg, c->value_dn.bv_val );
@@ -724,11 +744,11 @@ log_cf_gen(ConfigArgs *c)
                        break;
                case LOG_PURGE:
                        li->li_age = log_age_parse( c->argv[1] );
-                       if ( li->li_age == -1 ) {
+                       if ( li->li_age 1 ) {
                                rc = 1;
                        } else {
                                li->li_cycle = log_age_parse( c->argv[2] );
-                               if ( li->li_cycle == -1 ) {
+                               if ( li->li_cycle 1 ) {
                                        rc = 1;
                                } else if ( slapMode & SLAP_SERVER_MODE ) {
                                        struct re_s *re = li->li_task;
@@ -1426,6 +1446,13 @@ accesslog_db_open(
        int rc;
        void *thrctx;
 
+       if ( li->li_db == NULL ) {
+               Debug( LDAP_DEBUG_ANY,
+                       "accesslog: \"logdb <suffix>\" must be specified.\n",
+                       0, 0, 0 );
+               return 1;
+       }
+
        if ( slapMode & SLAP_TOOL_MODE )
                return 0;