mirror of
https://git.openldap.org/openldap/openldap.git
synced 2025-02-05 13:40:08 +08:00
Moved WSAStartup/WSACleanup to libldap/init.c. Cleanup occurs in the
internal atexit handler.
This commit is contained in:
parent
c214a13a59
commit
06b350c04c
@ -55,8 +55,6 @@
|
||||
#include <winsock2.h>
|
||||
#elif HAVE_WINSOCK
|
||||
#include <winsock.h>
|
||||
#else
|
||||
#define WSACleanup()
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_PCNFS
|
||||
|
@ -373,6 +373,9 @@ ldap_int_destroy_global_options(void)
|
||||
ldap_free_urllist( gopts->ldo_defludp );
|
||||
gopts->ldo_defludp = NULL;
|
||||
}
|
||||
#if defined(HAVE_WINSOCK) || defined(HAVE_WINSOCK2)
|
||||
WSACleanup( );
|
||||
#endif
|
||||
}
|
||||
|
||||
/*
|
||||
@ -450,6 +453,39 @@ void ldap_int_initialize( struct ldapoptions *gopts, int *dbglvl )
|
||||
ldap_int_hostname = ldap_pvt_get_fqdn( ldap_int_hostname );
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_WINSOCK2
|
||||
{ WORD wVersionRequested;
|
||||
WSADATA wsaData;
|
||||
|
||||
wVersionRequested = MAKEWORD( 2, 0 );
|
||||
if ( WSAStartup( wVersionRequested, &wsaData ) != 0 ) {
|
||||
/* Tell the user that we couldn't find a usable */
|
||||
/* WinSock DLL. */
|
||||
return;
|
||||
}
|
||||
|
||||
/* Confirm that the WinSock DLL supports 2.0.*/
|
||||
/* Note that if the DLL supports versions greater */
|
||||
/* than 2.0 in addition to 2.0, it will still return */
|
||||
/* 2.0 in wVersion since that is the version we */
|
||||
/* requested. */
|
||||
|
||||
if ( LOBYTE( wsaData.wVersion ) != 2 ||
|
||||
HIBYTE( wsaData.wVersion ) != 0 )
|
||||
{
|
||||
/* Tell the user that we couldn't find a usable */
|
||||
/* WinSock DLL. */
|
||||
WSACleanup( );
|
||||
return;
|
||||
}
|
||||
} /* The WinSock DLL is acceptable. Proceed. */
|
||||
#elif HAVE_WINSOCK
|
||||
{ WSADATA wsaData;
|
||||
if ( WSAStartup( 0x0101, &wsaData ) != 0 ) {
|
||||
return;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
ldap_int_utils_init();
|
||||
|
||||
if ( ldap_int_tblsize == 0 )
|
||||
|
@ -92,47 +92,13 @@ ldap_create( LDAP **ldp )
|
||||
/* Initialize the global options, if not already done. */
|
||||
if( gopts->ldo_valid != LDAP_INITIALIZED ) {
|
||||
ldap_int_initialize(gopts, NULL);
|
||||
if ( gopts->ldo_valid != LDAP_INITIALIZED )
|
||||
return LDAP_LOCAL_ERROR;
|
||||
}
|
||||
|
||||
Debug( LDAP_DEBUG_TRACE, "ldap_create\n", 0, 0, 0 );
|
||||
|
||||
#ifdef HAVE_WINSOCK2
|
||||
{ WORD wVersionRequested;
|
||||
WSADATA wsaData;
|
||||
|
||||
wVersionRequested = MAKEWORD( 2, 0 );
|
||||
if ( WSAStartup( wVersionRequested, &wsaData ) != 0 ) {
|
||||
/* Tell the user that we couldn't find a usable */
|
||||
/* WinSock DLL. */
|
||||
return LDAP_LOCAL_ERROR;
|
||||
}
|
||||
|
||||
/* Confirm that the WinSock DLL supports 2.0.*/
|
||||
/* Note that if the DLL supports versions greater */
|
||||
/* than 2.0 in addition to 2.0, it will still return */
|
||||
/* 2.0 in wVersion since that is the version we */
|
||||
/* requested. */
|
||||
|
||||
if ( LOBYTE( wsaData.wVersion ) != 2 ||
|
||||
HIBYTE( wsaData.wVersion ) != 0 )
|
||||
{
|
||||
/* Tell the user that we couldn't find a usable */
|
||||
/* WinSock DLL. */
|
||||
WSACleanup( );
|
||||
return LDAP_LOCAL_ERROR;
|
||||
}
|
||||
} /* The WinSock DLL is acceptable. Proceed. */
|
||||
|
||||
#elif HAVE_WINSOCK
|
||||
{ WSADATA wsaData;
|
||||
if ( WSAStartup( 0x0101, &wsaData ) != 0 ) {
|
||||
return LDAP_LOCAL_ERROR;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
if ( (ld = (LDAP *) LDAP_CALLOC( 1, sizeof(LDAP) )) == NULL ) {
|
||||
WSACleanup( );
|
||||
return( LDAP_NO_MEMORY );
|
||||
}
|
||||
|
||||
@ -160,14 +126,12 @@ ldap_create( LDAP **ldp )
|
||||
|
||||
if ( ld->ld_options.ldo_defludp == NULL ) {
|
||||
LDAP_FREE( (char*)ld );
|
||||
WSACleanup( );
|
||||
return LDAP_NO_MEMORY;
|
||||
}
|
||||
|
||||
if (( ld->ld_selectinfo = ldap_new_select_info()) == NULL ) {
|
||||
ldap_free_urllist( ld->ld_options.ldo_defludp );
|
||||
LDAP_FREE( (char*) ld );
|
||||
WSACleanup( );
|
||||
return LDAP_NO_MEMORY;
|
||||
}
|
||||
|
||||
@ -177,7 +141,6 @@ ldap_create( LDAP **ldp )
|
||||
if ( ld->ld_sb == NULL ) {
|
||||
ldap_free_urllist( ld->ld_options.ldo_defludp );
|
||||
LDAP_FREE( (char*) ld );
|
||||
WSACleanup( );
|
||||
return LDAP_NO_MEMORY;
|
||||
}
|
||||
|
||||
|
@ -157,8 +157,6 @@ ldap_ld_free(
|
||||
|
||||
LDAP_FREE( (char *) ld );
|
||||
|
||||
WSACleanup();
|
||||
|
||||
return( err );
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user