Author: akhaldi
Date: Wed Nov 23 11:59:10 2016
New Revision: 73357
URL:
http://svn.reactos.org/svn/reactos?rev=73357&view=rev
Log:
[WINHTTP] Sync with Wine Staging 1.9.23. CORE-12409
e27ff36 winhttp: Added WINHTTP_OPTION_CLIENT_CERT_CONTEXT option stub.
9bc3e96 winhttp: Added WINHTTP_OPTION_MAX_CONNS_PER_SERVER and
WINHTTP_OPTION_MAX_CONNS_PER_1_0_SERVER options stub.
c8b166e winhttp: Also pass hostname to jsproxy.
668d429 winhttp: Indicate that WinHttpCrackUrl should return string pointers.
985443e winhttp: Don't perform buffer size tests for components that don't pass
buffer in WinHttpCrackUrl.
17b4abf winhttp: Validate the port number in WinHttpCrackUrl.
1d07f89 winhttp: Set required buffer length for all components in WinHttpCrackUrl.
6c0fdc0 winhttp: Prevent console spamming in get_system_proxy_autoconfig_url.
Modified:
trunk/reactos/dll/win32/winhttp/session.c
trunk/reactos/dll/win32/winhttp/url.c
trunk/reactos/dll/win32/winhttp/winhttp_private.h
trunk/reactos/dll/win32/winhttp/winhttp_ros.diff
trunk/reactos/media/doc/README.WINE
Modified: trunk/reactos/dll/win32/winhttp/session.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/winhttp/session.…
==============================================================================
--- trunk/reactos/dll/win32/winhttp/session.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/winhttp/session.c [iso-8859-1] Wed Nov 23 11:59:10 2016
@@ -176,6 +176,12 @@
case WINHTTP_OPTION_UNLOAD_NOTIFY_EVENT:
TRACE("WINHTTP_OPTION_UNLOAD_NOTIFY_EVENT: %p\n", *(HANDLE *)buffer);
session->unload_event = *(HANDLE *)buffer;
+ return TRUE;
+ case WINHTTP_OPTION_MAX_CONNS_PER_SERVER:
+ FIXME("WINHTTP_OPTION_MAX_CONNS_PER_SERVER: %d\n", *(DWORD *)buffer);
+ return TRUE;
+ case WINHTTP_OPTION_MAX_CONNS_PER_1_0_SERVER:
+ FIXME("WINHTTP_OPTION_MAX_CONNS_PER_1_0_SERVER: %d\n", *(DWORD
*)buffer);
return TRUE;
default:
FIXME("unimplemented option %u\n", option);
@@ -971,6 +977,14 @@
if (!(session->proxy_password = buffer_to_str( buffer, buflen ))) return
FALSE;
return TRUE;
}
+ case WINHTTP_OPTION_CLIENT_CERT_CONTEXT:
+ if (!(hdr->flags & WINHTTP_FLAG_SECURE))
+ {
+ SetLastError( ERROR_WINHTTP_INCORRECT_HANDLE_STATE );
+ return FALSE;
+ }
+ FIXME("WINHTTP_OPTION_CLIENT_CERT_CONTEXT\n");
+ return TRUE;
default:
FIXME("unimplemented option %u\n", option);
set_last_error( ERROR_INVALID_PARAMETER );
@@ -1196,7 +1210,7 @@
{
BOOL ret = TRUE;
- if (!buffer)
+ if (!buffer && buflen)
{
set_last_error( ERROR_INVALID_PARAMETER );
return FALSE;
@@ -1329,8 +1343,14 @@
CFRelease( settings );
return ret;
#else
- static int once;
- if (!once++) FIXME( "no support on this platform\n" );
+ static BOOL first = TRUE;
+ if (first)
+ {
+ FIXME( "no support on this platform\n" );
+ first = FALSE;
+ }
+ else
+ TRACE( "no support on this platform\n" );
return FALSE;
#endif
}
@@ -1722,6 +1742,8 @@
memset( &uc, 0, sizeof(uc) );
uc.dwStructSize = sizeof(uc);
+ uc.dwHostNameLength = -1;
+ uc.dwUrlPathLength = -1;
if (!WinHttpCrackUrl( url, 0, 0, &uc )) return NULL;
if (!(hostname = heap_alloc( (uc.dwHostNameLength + 1) * sizeof(WCHAR) ))) return
NULL;
memcpy( hostname, uc.lpszHostName, uc.dwHostNameLength * sizeof(WCHAR) );
@@ -1783,6 +1805,7 @@
char *result, *urlA;
DWORD len_result;
struct AUTO_PROXY_SCRIPT_BUFFER buffer;
+ URL_COMPONENTSW uc;
buffer.dwStructSize = sizeof(buffer);
buffer.lpszScriptBuffer = script;
@@ -1794,10 +1817,23 @@
heap_free( urlA );
return FALSE;
}
- if ((ret = InternetGetProxyInfo( urlA, strlen(urlA), NULL, 0, &result,
&len_result )))
- {
- ret = parse_script_result( result, info );
- heap_free( result );
+
+ memset( &uc, 0, sizeof(uc) );
+ uc.dwStructSize = sizeof(uc);
+ uc.dwHostNameLength = -1;
+
+ if (WinHttpCrackUrl( url, 0, 0, &uc ))
+ {
+ char *hostnameA = strdupWA_sized( uc.lpszHostName, uc.dwHostNameLength );
+
+ if ((ret = InternetGetProxyInfo( urlA, strlen(urlA),
+ hostnameA, strlen(hostnameA), &result, &len_result )))
+ {
+ ret = parse_script_result( result, info );
+ heap_free( result );
+ }
+
+ heap_free( hostnameA );
}
heap_free( urlA );
return InternetDeInitializeAutoProxyDll( NULL, 0 );
Modified: trunk/reactos/dll/win32/winhttp/url.c
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/winhttp/url.c?re…
==============================================================================
--- trunk/reactos/dll/win32/winhttp/url.c [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/winhttp/url.c [iso-8859-1] Wed Nov 23 11:59:10 2016
@@ -21,37 +21,29 @@
static const WCHAR scheme_http[] = {'h','t','t','p',0};
static const WCHAR scheme_https[] =
{'h','t','t','p','s',0};
-static BOOL set_component( WCHAR **str, DWORD *str_len, WCHAR *value, DWORD len, DWORD
flags )
-{
- if (*str && !*str_len)
- {
- set_last_error( ERROR_INVALID_PARAMETER );
- return FALSE;
- }
- if (!*str_len) return TRUE;
+static DWORD set_component( WCHAR **str, DWORD *str_len, WCHAR *value, DWORD len, DWORD
flags, BOOL *overflow )
+{
+ if (*str && !*str_len) return ERROR_INVALID_PARAMETER;
+ if (!*str_len) return ERROR_SUCCESS;
if (!*str)
{
- if (len && *str_len && (flags & (ICU_DECODE|ICU_ESCAPE)))
- {
- set_last_error( ERROR_INVALID_PARAMETER );
- return FALSE;
- }
+ if (len && *str_len && (flags & (ICU_DECODE|ICU_ESCAPE)))
return ERROR_INVALID_PARAMETER;
*str = value;
*str_len = len;
}
else
{
- if (len > (*str_len) - 1)
- {
- *str_len = len + 1;
- set_last_error( ERROR_INSUFFICIENT_BUFFER );
- return FALSE;
+ if (len >= *str_len)
+ {
+ *str_len = len+1;
+ *overflow = TRUE;
+ return ERROR_SUCCESS;
}
memcpy( *str, value, len * sizeof(WCHAR) );
(*str)[len] = 0;
*str_len = len;
}
- return TRUE;
+ return ERROR_SUCCESS;
}
static WCHAR *decode_url( LPCWSTR url, DWORD *len )
@@ -159,16 +151,30 @@
return ret;
}
+static DWORD parse_port( const WCHAR *str, DWORD len, INTERNET_PORT *ret )
+{
+ const WCHAR *p = str;
+ DWORD port = 0;
+ while (len && isdigitW( *p ))
+ {
+ if ((port = port * 10 + *p - '0') > 65535) return
ERROR_WINHTTP_INVALID_URL;
+ p++; len--;
+ }
+ *ret = port;
+ return ERROR_SUCCESS;
+}
+
/***********************************************************************
* WinHttpCrackUrl (winhttp.@)
*/
BOOL WINAPI WinHttpCrackUrl( LPCWSTR url, DWORD len, DWORD flags, LPURL_COMPONENTSW uc )
{
- BOOL ret = FALSE;
WCHAR *p, *q, *r, *url_decoded = NULL, *url_escaped = NULL;
INTERNET_SCHEME scheme = 0;
-
- TRACE("%s, %d, %x, %p\n", debugstr_w(url), len, flags, uc);
+ BOOL overflow = FALSE;
+ DWORD err;
+
+ TRACE("%s, %d, %x, %p\n", debugstr_wn(url, len), len, flags, uc);
if (!url || !uc || uc->dwStructSize != sizeof(URL_COMPONENTS))
{
@@ -204,95 +210,102 @@
else if (p - url == 5 && !strncmpiW( url, scheme_https, 5 )) scheme =
INTERNET_SCHEME_HTTPS;
else
{
- set_last_error( ERROR_WINHTTP_UNRECOGNIZED_SCHEME );
+ err = ERROR_WINHTTP_UNRECOGNIZED_SCHEME;
goto exit;
}
- if (!(set_component( &uc->lpszScheme, &uc->dwSchemeLength, (WCHAR
*)url, p - url, flags ))) goto exit;
+
+ if ((err = set_component( &uc->lpszScheme, &uc->dwSchemeLength, (WCHAR
*)url, p - url, flags, &overflow ))) goto exit;
p++; /* skip ':' */
- if (!p[0] || p[0] != '/' || p[1] != '/') goto exit;
+ if (!p[0] || p[0] != '/' || p[1] != '/')
+ {
+ err = ERROR_WINHTTP_INVALID_URL;
+ goto exit;
+ }
p += 2;
-
- if (!p[0]) goto exit;
+ if (!p[0])
+ {
+ err = ERROR_WINHTTP_INVALID_URL;
+ goto exit;
+ }
if ((q = memchrW( p, '@', len - (p - url) )) && !(memchrW( p,
'/', q - p )))
{
if ((r = memchrW( p, ':', q - p )))
{
- if (!(set_component( &uc->lpszUserName, &uc->dwUserNameLength,
p, r - p, flags ))) goto exit;
+ if ((err = set_component( &uc->lpszUserName,
&uc->dwUserNameLength, p, r - p, flags, &overflow ))) goto exit;
r++;
- if (!(set_component( &uc->lpszPassword, &uc->dwPasswordLength,
r, q - r, flags ))) goto exit;
- }
- else
- {
- if (!(set_component( &uc->lpszUserName, &uc->dwUserNameLength,
p, q - p, flags ))) goto exit;
- if (!(set_component( &uc->lpszPassword, &uc->dwPasswordLength,
NULL, 0, flags ))) goto exit;
+ if ((err = set_component( &uc->lpszPassword,
&uc->dwPasswordLength, r, q - r, flags, &overflow ))) goto exit;
+ }
+ else
+ {
+ if ((err = set_component( &uc->lpszUserName,
&uc->dwUserNameLength, p, q - p, flags, &overflow ))) goto exit;
+ if ((err = set_component( &uc->lpszPassword,
&uc->dwPasswordLength, NULL, 0, flags, &overflow ))) goto exit;
}
p = q + 1;
}
else
{
- if (!(set_component( &uc->lpszUserName, &uc->dwUserNameLength,
NULL, 0, flags ))) goto exit;
- if (!(set_component( &uc->lpszPassword, &uc->dwPasswordLength,
NULL, 0, flags ))) goto exit;
+ if ((err = set_component( &uc->lpszUserName, &uc->dwUserNameLength,
NULL, 0, flags, &overflow ))) goto exit;
+ if ((err = set_component( &uc->lpszPassword, &uc->dwPasswordLength,
NULL, 0, flags, &overflow ))) goto exit;
}
if ((q = memchrW( p, '/', len - (p - url) )))
{
if ((r = memchrW( p, ':', q - p )))
{
- if (!(set_component( &uc->lpszHostName, &uc->dwHostNameLength,
p, r - p, flags ))) goto exit;
+ if ((err = set_component( &uc->lpszHostName,
&uc->dwHostNameLength, p, r - p, flags, &overflow ))) goto exit;
r++;
- uc->nPort = atoiW( r );
- }
- else
- {
- if (!(set_component( &uc->lpszHostName, &uc->dwHostNameLength,
p, q - p, flags ))) goto exit;
+ if ((err = parse_port( r, q - r, &uc->nPort ))) goto exit;
+ }
+ else
+ {
+ if ((err = set_component( &uc->lpszHostName,
&uc->dwHostNameLength, p, q - p, flags, &overflow ))) goto exit;
if (scheme == INTERNET_SCHEME_HTTP) uc->nPort =
INTERNET_DEFAULT_HTTP_PORT;
if (scheme == INTERNET_SCHEME_HTTPS) uc->nPort =
INTERNET_DEFAULT_HTTPS_PORT;
}
if ((r = memchrW( q, '?', len - (q - url) )))
{
- if (!(set_component( &uc->lpszUrlPath, &uc->dwUrlPathLength, q,
r - q, flags ))) goto exit;
- if (!(set_component( &uc->lpszExtraInfo,
&uc->dwExtraInfoLength, r, len - (r - url), flags ))) goto exit;
- }
- else
- {
- if (!(set_component( &uc->lpszUrlPath, &uc->dwUrlPathLength, q,
len - (q - url), flags ))) goto exit;
- if (!(set_component( &uc->lpszExtraInfo,
&uc->dwExtraInfoLength, (WCHAR *)url + len, 0, flags ))) goto exit;
+ if ((err = set_component( &uc->lpszUrlPath,
&uc->dwUrlPathLength, q, r - q, flags, &overflow ))) goto exit;
+ if ((err = set_component( &uc->lpszExtraInfo,
&uc->dwExtraInfoLength, r, len - (r - url), flags, &overflow ))) goto exit;
+ }
+ else
+ {
+ if ((err = set_component( &uc->lpszUrlPath,
&uc->dwUrlPathLength, q, len - (q - url), flags, &overflow ))) goto exit;
+ if ((err = set_component( &uc->lpszExtraInfo,
&uc->dwExtraInfoLength, (WCHAR *)url + len, 0, flags, &overflow ))) goto exit;
}
}
else
{
if ((r = memchrW( p, ':', len - (p - url) )))
{
- if (!(set_component( &uc->lpszHostName, &uc->dwHostNameLength,
p, r - p, flags ))) goto exit;
+ if ((err = set_component( &uc->lpszHostName,
&uc->dwHostNameLength, p, r - p, flags, &overflow ))) goto exit;
r++;
- uc->nPort = atoiW( r );
- }
- else
- {
- if (!(set_component( &uc->lpszHostName, &uc->dwHostNameLength,
p, len - (p - url), flags ))) goto exit;
+ if ((err = parse_port( r, len - (r - url), &uc->nPort ))) goto exit;
+ }
+ else
+ {
+ if ((err = set_component( &uc->lpszHostName,
&uc->dwHostNameLength, p, len - (p - url), flags, &overflow ))) goto exit;
if (scheme == INTERNET_SCHEME_HTTP) uc->nPort =
INTERNET_DEFAULT_HTTP_PORT;
if (scheme == INTERNET_SCHEME_HTTPS) uc->nPort =
INTERNET_DEFAULT_HTTPS_PORT;
}
- if (!(set_component( &uc->lpszUrlPath, &uc->dwUrlPathLength, (WCHAR
*)url + len, 0, flags ))) goto exit;
- if (!(set_component( &uc->lpszExtraInfo, &uc->dwExtraInfoLength,
(WCHAR *)url + len, 0, flags ))) goto exit;
- }
-
- ret = TRUE;
-
- TRACE("scheme(%s) host(%s) port(%d) path(%s) extra(%s)\n",
- debugstr_wn( uc->lpszScheme, uc->dwSchemeLength ),
- debugstr_wn( uc->lpszHostName, uc->dwHostNameLength ),
- uc->nPort,
- debugstr_wn( uc->lpszUrlPath, uc->dwUrlPathLength ),
+ if ((err = set_component( &uc->lpszUrlPath, &uc->dwUrlPathLength,
(WCHAR *)url + len, 0, flags, &overflow ))) goto exit;
+ if ((err = set_component( &uc->lpszExtraInfo,
&uc->dwExtraInfoLength, (WCHAR *)url + len, 0, flags, &overflow ))) goto exit;
+ }
+
+ TRACE("scheme(%s) host(%s) port(%d) path(%s) extra(%s)\n", debugstr_wn(
uc->lpszScheme, uc->dwSchemeLength ),
+ debugstr_wn( uc->lpszHostName, uc->dwHostNameLength ), uc->nPort,
debugstr_wn( uc->lpszUrlPath, uc->dwUrlPathLength ),
debugstr_wn( uc->lpszExtraInfo, uc->dwExtraInfoLength ));
exit:
- if (ret) uc->nScheme = scheme;
+ if (!err)
+ {
+ if (overflow) err = ERROR_INSUFFICIENT_BUFFER;
+ uc->nScheme = scheme;
+ }
heap_free( url_decoded );
heap_free( url_escaped );
- if (ret) set_last_error( ERROR_SUCCESS );
- return ret;
+ set_last_error( err );
+ return !err;
}
static INTERNET_SCHEME get_scheme( const WCHAR *scheme, DWORD len )
Modified: trunk/reactos/dll/win32/winhttp/winhttp_private.h
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/winhttp/winhttp_…
==============================================================================
--- trunk/reactos/dll/win32/winhttp/winhttp_private.h [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/winhttp/winhttp_private.h [iso-8859-1] Wed Nov 23 11:59:10
2016
@@ -380,4 +380,19 @@
return dst;
}
+static inline char *strdupWA_sized( const WCHAR *src, DWORD size )
+{
+ char *dst = NULL;
+ if (src)
+ {
+ int len = WideCharToMultiByte( CP_ACP, 0, src, size, NULL, 0, NULL, NULL ) + 1;
+ if ((dst = heap_alloc( len )))
+ {
+ WideCharToMultiByte( CP_ACP, 0, src, len, dst, size, NULL, NULL );
+ dst[len - 1] = 0;
+ }
+ }
+ return dst;
+}
+
#endif /* _WINE_WINHTTP_PRIVATE_H_ */
Modified: trunk/reactos/dll/win32/winhttp/winhttp_ros.diff
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/winhttp/winhttp_…
==============================================================================
--- trunk/reactos/dll/win32/winhttp/winhttp_ros.diff [iso-8859-1] (original)
+++ trunk/reactos/dll/win32/winhttp/winhttp_ros.diff [iso-8859-1] Wed Nov 23 11:59:10
2016
@@ -1,7 +1,7 @@
diff -pudN e:\wine\dlls\winhttp/net.c e:\reactos\dll\win32\winhttp/net.c
---- e:\wine\dlls\winhttp/net.c 2015-02-21 17:13:15.365542100 +0100
-+++ e:\reactos\dll\win32\winhttp/net.c 2015-07-20 14:25:14.321893000 +0100
-@@ -73,6 +50,7 @@ static CRITICAL_SECTION cs_gethostbyname
+--- 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 */
@@ -9,7 +9,7 @@
static int sock_get_error( int err )
{
#if !defined(__MINGW32__) && !defined (_MSC_VER)
-@@ -138,6 +116,15 @@ static int sock_get_error( int err )
+@@ -115,6 +116,15 @@ static int sock_get_error( int err )
#endif
return err;
}
@@ -25,7 +25,47 @@
static int sock_send(int fd, const void *msg, size_t len, int flags)
{
-@@ -366,11 +353,25 @@ BOOL netconn_connect( netconn_t *conn, c
+@@ -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)
{
@@ -52,9 +92,9 @@
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 2015-07-14 15:44:36.027191600 +0100
-+++ e:\reactos\dll\win32\winhttp/request.c 2015-07-20 14:28:31.803188200 +0100
-@@ -1263,6 +1252,7 @@ BOOL WINAPI WinHttpSendRequest( HINTERNE
+--- 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;
}
@@ -62,7 +102,7 @@
#define ARRAYSIZE(array) (sizeof(array) / sizeof((array)[0]))
static const WCHAR basicW[] =
{'B','a','s','i','c',0};
-@@ -2754,8 +2744,8 @@ static void free_request( struct winhttp
+@@ -2758,8 +2759,8 @@ static void free_request( struct winhttp
CloseHandle( request->thread );
CloseHandle( request->wait );
CloseHandle( request->cancel );
@@ -73,7 +113,7 @@
heap_free( request->buffer );
heap_free( request->verb );
VariantClear( &request->data );
-@@ -2959,16 +2949,16 @@ static HRESULT WINAPI winhttp_request_Se
+@@ -3005,16 +3006,16 @@ static HRESULT WINAPI winhttp_request_Se
{
case HTTPREQUEST_PROXYSETTING_DEFAULT:
request->proxy.dwAccessType = WINHTTP_ACCESS_TYPE_DEFAULT_PROXY;
@@ -94,7 +134,7 @@
request->proxy.lpszProxy = NULL;
request->proxy.lpszProxyBypass = NULL;
break;
-@@ -2977,12 +2967,12 @@ static HRESULT WINAPI winhttp_request_Se
+@@ -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)
{
@@ -110,31 +150,29 @@
}
break;
diff -pudN e:\wine\dlls\winhttp/session.c e:\reactos\dll\win32\winhttp/session.c
---- e:\wine\dlls\winhttp/session.c 2015-07-14 15:44:36.029191700 +0100
-+++ e:\reactos\dll\win32\winhttp/session.c 2015-07-20 14:29:15.686698200 +0100
-@@ -109,6 +81,9 @@ static void session_destroy( object_head
- 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 )
-@@ -220,6 +195,11 @@ HINTERNET WINAPI WinHttpOpen( LPCWSTR ag
+--- 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__
-+ 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);
-@@ -246,14 +226,14 @@ HINTERNET WINAPI WinHttpOpen( LPCWSTR ag
+@@ -230,14 +236,14 @@ HINTERNET WINAPI WinHttpOpen( LPCWSTR ag
session->access = info.dwAccessType;
if (info.lpszProxy && !(session->proxy_server = strdupW(
info.lpszProxy )))
{
@@ -153,7 +191,7 @@
goto end;
}
}
-@@ -624,7 +604,7 @@ static WCHAR *blob_to_str( DWORD encodin
+@@ -610,7 +616,7 @@ static WCHAR *blob_to_str( DWORD encodin
static BOOL convert_sockaddr( const struct sockaddr *addr, SOCKADDR_STORAGE
*addr_storage )
{
Modified: trunk/reactos/media/doc/README.WINE
URL:
http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?rev=…
==============================================================================
--- trunk/reactos/media/doc/README.WINE [iso-8859-1] (original)
+++ trunk/reactos/media/doc/README.WINE [iso-8859-1] Wed Nov 23 11:59:10 2016
@@ -200,7 +200,7 @@
reactos/dll/win32/windowscodecsext # Synced to WineStaging-1.9.11
reactos/dll/win32/winemp3.acm # Synced to WineStaging-1.9.23
reactos/dll/win32/wing32 # Synced to WineStaging-1.9.11
-reactos/dll/win32/winhttp # Synced to WineStaging-1.9.16
+reactos/dll/win32/winhttp # Synced to WineStaging-1.9.23
reactos/dll/win32/wininet # Synced to WineStaging-1.9.16
reactos/dll/win32/winmm # Forked at Wine-20050628
reactos/dll/win32/winmm/midimap # Forked at Wine-20050628