]> git.sur5r.net Git - openldap/commitdiff
Moved WSAStartup/WSACleanup to libldap/init.c. Cleanup occurs in the
authorHoward Chu <hyc@openldap.org>
Fri, 28 Dec 2001 06:12:17 +0000 (06:12 +0000)
committerHoward Chu <hyc@openldap.org>
Fri, 28 Dec 2001 06:12:17 +0000 (06:12 +0000)
internal atexit handler.

include/ac/socket.h
libraries/libldap/init.c
libraries/libldap/open.c
libraries/libldap/unbind.c

index 106250b8b07154a4b88bcb2cd7a51e2fef518295..71f473d024c305e1c2431772f419b30d039f6e8d 100644 (file)
@@ -55,8 +55,6 @@
 #include <winsock2.h>
 #elif HAVE_WINSOCK
 #include <winsock.h>
-#else
-#define WSACleanup()
 #endif
 
 #ifdef HAVE_PCNFS
index e123e06118d36bd84c65e87c1a166204d44ffcb2..9b5fa84c882c70caa1b511482c842e16d88da4ff 100644 (file)
@@ -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 )
index 943d61994bd92ba3fa427ccf865b7e115c351487..344df988f053a451e55e6ab345fa4eb265004acb 100644 (file)
@@ -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;
        }
 
index 0d16da652b8705c864955075af38d719b1b1f094..4e1c1fd786d3a20bd95baa34e345ab52ac5e19ae 100644 (file)
@@ -157,8 +157,6 @@ ldap_ld_free(
    
        LDAP_FREE( (char *) ld );
    
-       WSACleanup();
-
        return( err );
 }