From: Howard Chu Date: Sun, 21 Mar 2021 16:36:30 +0000 (+0000) Subject: ITS#8726 check newly registered loglevels immediately X-Git-Tag: OPENLDAP_REL_ENG_2_5_3BETA~3^2~42 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=cbb6441c30b56b4785ac0fd620b41f510ef06268;p=thirdparty%2Fopenldap.git ITS#8726 check newly registered loglevels immediately See if they were requested as soon as they are successfully registered. --- diff --git a/servers/slapd/bconfig.c b/servers/slapd/bconfig.c index 0104fc8ead..a54729aa81 100644 --- a/servers/slapd/bconfig.c +++ b/servers/slapd/bconfig.c @@ -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; diff --git a/servers/slapd/main.c b/servers/slapd/main.c index a5867350bc..53b5e355db 100644 --- a/servers/slapd/main.c +++ b/servers/slapd/main.c @@ -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; diff --git a/servers/slapd/proto-slap.h b/servers/slapd/proto-slap.h index 9a87d4e8f3..1316f23b9d 100644 --- a/servers/slapd/proto-slap.h +++ b/servers/slapd/proto-slap.h @@ -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