Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203diff -pudN e:\wine\dlls\winhttp/net.c e:\reactos\dll\win32\winhttp/net.c--- e:\wine\dlls\winhttp/net.c 2016-11-16 17:36:37 +0100+++ e:\reactos\dll\win32\winhttp/net.c 2016-10-13 11:15:39 +0100@@ -50,6 +50,7 @@ static CRITICAL_SECTION cs_gethostbyname #endif /* translate a unix error code into a winsock error code */+#ifndef __REACTOS__ static int sock_get_error( int err ) { #if !defined(__MINGW32__) && !defined (_MSC_VER)@@ -115,6 +116,15 @@ static int sock_get_error( int err ) #endif return err; }+#else+#define sock_get_error(x) WSAGetLastError()++static inline int unix_ioctl(int filedes, long request, void *arg)+{+ return ioctlsocket(filedes, request, arg);+}+#define ioctlsocket unix_ioctl+#endif static int sock_send(int fd, const void *msg, size_t len, int flags) {@@ -266,6 +276,28 @@ static BOOL ensure_cred_handle(void) 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));@@ -281,6 +313,10 @@ void netconn_unload( void ) #ifndef HAVE_GETADDRINFO DeleteCriticalSection(&cs_gethostbyname); #endif+#ifdef __REACTOS__+ if(winsock_initialized)+ WSACleanup();+#endif } BOOL netconn_connected( netconn_t *conn )@@ -343,11 +379,25 @@ BOOL netconn_connect( netconn_t *conn, c res = sock_get_error( errno ); if (res == WSAEWOULDBLOCK || res == WSAEINPROGRESS) {+#ifdef __REACTOS__+ /* ReactOS: use select instead of poll */+ fd_set outfd;+ struct timeval tv;++ FD_ZERO(&outfd);+ FD_SET(conn->socket, &outfd);++ tv.tv_sec = 0;+ tv.tv_usec = timeout * 1000;++ if (select( 0, NULL, &outfd, NULL, &tv ) > 0)+#else struct pollfd pfd; pfd.fd = conn->socket; pfd.events = POLLOUT; if (poll( &pfd, 1, timeout ) > 0)+#endif ret = TRUE; else res = sock_get_error( errno );diff -pudN e:\wine\dlls\winhttp/request.c e:\reactos\dll\win32\winhttp/request.c--- e:\wine\dlls\winhttp/request.c 2016-11-16 17:36:37 +0100+++ e:\reactos\dll\win32\winhttp/request.c 2016-02-27 16:08:59 +0100@@ -1258,6 +1258,7 @@ BOOL WINAPI WinHttpSendRequest( HINTERNE return ret; } +#undef ARRAYSIZE #define ARRAYSIZE(array) (sizeof(array) / sizeof((array)[0])) static const WCHAR basicW[] = {'B','a','s','i','c',0};@@ -2758,8 +2759,8 @@ static void free_request( struct winhttp CloseHandle( request->thread ); CloseHandle( request->wait ); CloseHandle( request->cancel );- heap_free( request->proxy.lpszProxy );- heap_free( request->proxy.lpszProxyBypass );+ heap_free( (WCHAR *)request->proxy.lpszProxy );+ heap_free( (WCHAR *)request->proxy.lpszProxyBypass ); heap_free( request->buffer ); heap_free( request->verb ); VariantClear( &request->data );@@ -3005,16 +3006,16 @@ static HRESULT WINAPI winhttp_request_Se { case HTTPREQUEST_PROXYSETTING_DEFAULT: request->proxy.dwAccessType = WINHTTP_ACCESS_TYPE_DEFAULT_PROXY;- heap_free( request->proxy.lpszProxy );- heap_free( request->proxy.lpszProxyBypass );+ heap_free( (WCHAR *)request->proxy.lpszProxy );+ heap_free( (WCHAR *)request->proxy.lpszProxyBypass ); request->proxy.lpszProxy = NULL; request->proxy.lpszProxyBypass = NULL; break; case HTTPREQUEST_PROXYSETTING_DIRECT: request->proxy.dwAccessType = WINHTTP_ACCESS_TYPE_NO_PROXY;- heap_free( request->proxy.lpszProxy );- heap_free( request->proxy.lpszProxyBypass );+ heap_free( (WCHAR *)request->proxy.lpszProxy );+ heap_free( (WCHAR *)request->proxy.lpszProxyBypass ); request->proxy.lpszProxy = NULL; request->proxy.lpszProxyBypass = NULL; break;@@ -3023,12 +3024,12 @@ static HRESULT WINAPI winhttp_request_Se request->proxy.dwAccessType = WINHTTP_ACCESS_TYPE_NAMED_PROXY; if (V_VT( &proxy_server ) == VT_BSTR) {- heap_free( request->proxy.lpszProxy );+ heap_free( (WCHAR *)request->proxy.lpszProxy ); request->proxy.lpszProxy = strdupW( V_BSTR( &proxy_server ) ); } if (V_VT( &bypass_list ) == VT_BSTR) {- heap_free( request->proxy.lpszProxyBypass );+ heap_free( (WCHAR *)request->proxy.lpszProxyBypass ); request->proxy.lpszProxyBypass = strdupW( V_BSTR( &bypass_list ) ); } break;diff -pudN e:\wine\dlls\winhttp/session.c e:\reactos\dll\win32\winhttp/session.c--- e:\wine\dlls\winhttp/session.c 2016-11-16 17:36:37 +0100+++ e:\reactos\dll\win32\winhttp/session.c 2016-11-17 00:14:49 +0100@@ -197,6 +197,9 @@ static const object_vtbl_t session_vtbl session_set_option }; +#ifdef __REACTOS__+BOOL netconn_init_winsock();+#endif /* __REACTOS__ */ /*********************************************************************** * WinHttpOpen (winhttp.@) */@@ -204,6 +207,9 @@ HINTERNET WINAPI WinHttpOpen( LPCWSTR ag { session_t *session; HINTERNET handle = NULL;+#ifdef __REACTOS__+ 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); @@ -230,14 +236,14 @@ HINTERNET WINAPI WinHttpOpen( LPCWSTR ag session->access = info.dwAccessType; if (info.lpszProxy && !(session->proxy_server = strdupW( info.lpszProxy ))) {- GlobalFree( info.lpszProxy );- GlobalFree( info.lpszProxyBypass );+ GlobalFree( (LPWSTR)info.lpszProxy );+ GlobalFree( (LPWSTR)info.lpszProxyBypass ); goto end; } if (info.lpszProxyBypass && !(session->proxy_bypass = strdupW( info.lpszProxyBypass ))) {- GlobalFree( info.lpszProxy );- GlobalFree( info.lpszProxyBypass );+ GlobalFree( (LPWSTR)info.lpszProxy );+ GlobalFree( (LPWSTR)info.lpszProxyBypass ); goto end; } }@@ -610,7 +616,7 @@ static WCHAR *blob_to_str( DWORD encodin static BOOL convert_sockaddr( const struct sockaddr *addr, SOCKADDR_STORAGE *addr_storage ) {-#ifndef __MINGW32__+#if !defined(__MINGW32__) && !defined(_MSC_VER) switch (addr->sa_family) { case AF_INET: