Index: dll/win32/winhttp/net.c =================================================================== --- dll/win32/winhttp/net.c (revision 72920) +++ dll/win32/winhttp/net.c (working copy) @@ -276,6 +276,28 @@ return ret; } +#ifdef __REACTOS__ +static BOOL winsock_initialized = FALSE; +BOOL netconn_init_winsock() +{ + WSADATA wsaData; + int error; + if (!winsock_initialized) + { + error = WSAStartup(MAKEWORD(1, 1), &wsaData); + if (error) + { + ERR("WSAStartup failed: %d\n", error); + return FALSE; + } + else + winsock_initialized = TRUE; + } + return winsock_initialized; +} + +#endif + BOOL netconn_init( netconn_t *conn ) { memset(conn, 0, sizeof(*conn)); @@ -291,6 +313,10 @@ #ifndef HAVE_GETADDRINFO DeleteCriticalSection(&cs_gethostbyname); #endif +#ifdef __REACTOS__ + if(winsock_initialized) + WSACleanup(); +#endif } BOOL netconn_connected( netconn_t *conn ) Index: dll/win32/winhttp/session.c =================================================================== --- dll/win32/winhttp/session.c (revision 72920) +++ dll/win32/winhttp/session.c (working copy) @@ -83,9 +83,6 @@ heap_free( session->proxy_username ); heap_free( session->proxy_password ); heap_free( session ); -#ifdef __REACTOS__ - WSACleanup(); -#endif } static BOOL session_query_option( object_header_t *hdr, DWORD option, LPVOID buffer, LPDWORD buflen ) @@ -194,6 +191,9 @@ session_set_option }; +#ifdef __REACTOS__ +BOOL netconn_init_winsock(); +#endif /* __REACTOS__ */ /*********************************************************************** * WinHttpOpen (winhttp.@) */ @@ -202,9 +202,7 @@ session_t *session; HINTERNET handle = NULL; #ifdef __REACTOS__ - WSADATA wsaData; - int error = WSAStartup(MAKEWORD(2, 2), &wsaData); - if (error) ERR("WSAStartup failed: %d\n", error); + if (!netconn_init_winsock()) return NULL; #endif TRACE("%s, %u, %s, %s, 0x%08x\n", debugstr_w(agent), access, debugstr_w(proxy), debugstr_w(bypass), flags); Index: dll/win32/wininet/netconnection.c =================================================================== --- dll/win32/wininet/netconnection.c (revision 72920) +++ dll/win32/wininet/netconnection.c (working copy) @@ -259,7 +259,7 @@ WSADATA wsa_data; DWORD res; - res = WSAStartup(MAKEWORD(1,1), &wsa_data); + res = WSAStartup(MAKEWORD(2,2), &wsa_data); if(res == ERROR_SUCCESS) winsock_loaded = TRUE; else