]> git.ipfire.org Git - thirdparty/openldap.git/commitdiff
ITS#8726 check newly registered loglevels immediately
authorHoward Chu <hyc@openldap.org>
Sun, 21 Mar 2021 16:36:30 +0000 (16:36 +0000)
committerHoward Chu <hyc@openldap.org>
Sun, 21 Mar 2021 16:36:30 +0000 (16:36 +0000)
See if they were requested as soon as they are successfully registered.

servers/slapd/bconfig.c
servers/slapd/main.c
servers/slapd/proto-slap.h

index 0104fc8ead047e6459a67313010456dd7abfa805..a54729aa81c4a38b057a8a957f6ea8b9636168be 100644 (file)
@@ -3717,6 +3717,7 @@ slap_loglevel_get( struct berval *s, int *l )
 
        } else {
                *l = i;
+               slap_check_unknown_level( s->bv_val, i );
        }
 
        return rc;
index a5867350bcca9ea346d34e5876fd1a6d1045ff7f..53b5e355db78146df8400a301a64b0a2e10c02b1 100644 (file)
@@ -227,6 +227,9 @@ parse_syslog_level( const char *arg, int *levelp )
 }
 #endif /* LDAP_DEBUG && LDAP_SYSLOG */
 
+static char **debug_unknowns;
+static char **syslog_unknowns;
+
 int
 parse_debug_unknowns( char **unknowns, int *levelp )
 {
@@ -303,6 +306,29 @@ parse_debug_level( const char *arg, int *levelp, char ***unknowns )
        return 0;
 }
 
+void slap_check_unknown_level( char *levelstr, int level )
+{
+       int i;
+
+       if ( debug_unknowns ) {
+               for ( i = 0; debug_unknowns[ i ]; i++ ) {
+                       if ( !strcasecmp( debug_unknowns[ i ], levelstr )) {
+                               slap_debug |= level;
+                               break;
+                       }
+               }
+       }
+
+       if ( syslog_unknowns ) {
+               for ( i = 0; syslog_unknowns[ i ]; i++ ) {
+                       if ( !strcasecmp( syslog_unknowns[ i ], levelstr )) {
+                               ldap_syslog |= level;
+                               break;
+                       }
+               }
+       }
+}
+
 static void
 usage( char *name )
 {
@@ -351,6 +377,7 @@ usage( char *name )
     );
 }
 
+
 #ifdef HAVE_NT_SERVICE_MANAGER
 void WINAPI ServiceMain( DWORD argc, LPTSTR *argv )
 #else
@@ -385,9 +412,6 @@ int main( int argc, char **argv )
        struct sync_cookie *scp = NULL;
        struct sync_cookie *scp_entry = NULL;
 
-       char **debug_unknowns = NULL;
-       char **syslog_unknowns = NULL;
-
        char *serverNamePrefix = "";
        size_t  l;
 
index 9a87d4e8f3379a6def32cb51073bb6f8e9495b5d..1316f23b9d9ba3fbf9d4f80991cb008ee2389417 100644 (file)
@@ -1249,6 +1249,8 @@ LDAP_SLAPD_F (int)
 parse_syslog_user LDAP_P(( const char *arg, int *syslogUser ));
 LDAP_SLAPD_F (int)
 parse_debug_unknowns LDAP_P(( char **unknowns, int *levelp ));
+LDAP_SLAPD_F (void)
+slap_check_unknown_level LDAP_P(( char *levelstr, int level ));
 
 /*
  * matchedValues.c