Commit 9ac3909e authored by Howard Chu's avatar Howard Chu Committed by Quanah Gibson-Mount
Browse files

ITS#9513 Intercept liblber error printer

And add time and thread ID prefix to all debug output
parent 01e5664c
...@@ -66,6 +66,10 @@ ber_get_option( ...@@ -66,6 +66,10 @@ ber_get_option(
case LBER_OPT_LOG_PRINT_FILE: case LBER_OPT_LOG_PRINT_FILE:
*((FILE**)outvalue) = (FILE*)ber_pvt_err_file; *((FILE**)outvalue) = (FILE*)ber_pvt_err_file;
return LBER_OPT_SUCCESS; return LBER_OPT_SUCCESS;
case LBER_OPT_LOG_PRINT_FN:
*(BER_LOG_PRINT_FN *)outvalue = ber_pvt_log_print;
return LBER_OPT_SUCCESS;
} }
ber_errno = LBER_ERROR_PARAM; ber_errno = LBER_ERROR_PARAM;
......
...@@ -377,6 +377,19 @@ usage( char *name ) ...@@ -377,6 +377,19 @@ usage( char *name )
); );
} }
typedef void (BER_logger)(const char *buf);
static BER_logger *ber_logger;
static void debug_print( const char *data )
{
char buf[4136]; /* 4096 + 40 */
struct timeval tv;
gettimeofday( &tv, NULL );
buf[sizeof(buf)-1] = '\0';
snprintf( buf, sizeof(buf)-1, "%lx.%05x %p %s",
(long)tv.tv_sec, tv.tv_usec, (void *)ldap_pvt_thread_self(), data );
ber_logger( buf );
}
#ifdef HAVE_NT_SERVICE_MANAGER #ifdef HAVE_NT_SERVICE_MANAGER
void WINAPI ServiceMain( DWORD argc, LPTSTR *argv ) void WINAPI ServiceMain( DWORD argc, LPTSTR *argv )
...@@ -720,6 +733,8 @@ unhandled_option:; ...@@ -720,6 +733,8 @@ unhandled_option:;
if ( optind != argc ) if ( optind != argc )
goto unhandled_option; goto unhandled_option;
ber_get_option(NULL, LBER_OPT_LOG_PRINT_FN, &ber_logger);
ber_set_option(NULL, LBER_OPT_LOG_PRINT_FN, debug_print);
ber_set_option(NULL, LBER_OPT_DEBUG_LEVEL, &slap_debug); ber_set_option(NULL, LBER_OPT_DEBUG_LEVEL, &slap_debug);
ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, &slap_debug); ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, &slap_debug);
ldif_debug = slap_debug; ldif_debug = slap_debug;
...@@ -843,6 +858,8 @@ unhandled_option:; ...@@ -843,6 +858,8 @@ unhandled_option:;
debug_unknowns = NULL; debug_unknowns = NULL;
if ( rc ) if ( rc )
goto destroy; goto destroy;
ber_set_option( NULL, LBER_OPT_DEBUG_LEVEL, &slap_debug );
ldap_set_option( NULL, LDAP_OPT_DEBUG_LEVEL, &slap_debug );
} }
if ( syslog_unknowns ) { if ( syslog_unknowns ) {
rc = parse_debug_unknowns( syslog_unknowns, &ldap_syslog ); rc = parse_debug_unknowns( syslog_unknowns, &ldap_syslog );
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment