[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
(ITS#4553) ldap_dump_connection does not use Debug() macro but writes to stderr directly
Full_Name: Christian Geist
Version: 2.3.20
OS: Aix, Hpux, SunOS, Linux, Windows
URL: ftp://ftp.openldap.org/incoming/
Submission from: (NULL) (198.17.35.254)
I use the following code to trap debug output of OpenLDAP's client libraries:
...
if ( (*pLdapFvt->SCber_set_option)( NULL, LBER_OPT_LOG_PRINT_FN, (void
*)&ldap_ber_error_print ) != LBER_OPT_SUCCESS )
log_print( "LDAP: Could not set LBER_OPT_LOG_PRINT_FN" );
else
log_print( "LDAP: Succesfully set LBER_OPT_LOG_PRINT_FN" );
...
ldap_ber_error_print() is a function of my own which redirects OpenLDAP messages
into a log file and prefixes them with pid and timestamp and such.
The ldap client libraries are build with LDAP_DEBUG. My problem is that the
function ldap_dump_connection() in libraries/libldap/request.c writes directly
to stderr using fprintf and therefore the output gets lost. Or if I redirect
stderr into my log file using freopen, it will not get prefixed, and since the
log file is shared among multiple processes and threads, I cannot tell which
process or thread generated the output.
Calls to fprintf( stderr, ... )
fprintf( stderr, "** ld %p Connection%s:\n", (void *)ld, all ? "s" : "" );
should be replaced by Debug() macros:
Debug( LDAP_DEBUG_TRACE, "** ld %p Connection%s:\n", (void *)ld, all ? "s" :
"", 0 );