Author: akhaldi Date: Sun Mar 19 17:05:35 2017 New Revision: 74198 URL: http://svn.reactos.org/svn/reactos?rev=74198&view=rev Log: [WINHTTP_WINETEST] Sync with Wine Staging 2.2. CORE-12823
Modified: trunk/rostests/winetests/winhttp/url.c trunk/rostests/winetests/winhttp/winhttp.c Modified: trunk/rostests/winetests/winhttp/url.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/winhttp/url.c?rev=74198&r1=74197&r2=74198&view=diff ============================================================================== --- trunk/rostests/winetests/winhttp/url.c [iso-8859-1] (original) +++ trunk/rostests/winetests/winhttp/url.c [iso-8859-1] Sun Mar 19 17:05:35 2017 @@ -118,7 +118,7 @@ { URL_COMPONENTS uc; WCHAR *url; - DWORD len; + DWORD len, err; BOOL ret; /* NULL components */ @@ -144,22 +144,33 @@ ok( !ret, "expected failure\n" ); ok( GetLastError() == ERROR_INVALID_PARAMETER, "expected ERROR_INVALID_PARAMETER got %u\n", GetLastError() ); - /* valid components, NULL url */ + /* valid components, NULL url, insufficient length */ + len = 0; SetLastError( 0xdeadbeef ); ret = WinHttpCreateUrl( &uc, 0, NULL, &len ); ok( !ret, "expected failure\n" ); - ok( GetLastError() == ERROR_INSUFFICIENT_BUFFER || - GetLastError() == ERROR_INVALID_PARAMETER, - "expected ERROR_INSUFFICIENT_BUFFER or ERROR_INVALID_PARAMETER got %u\n", GetLastError() ); + ok( GetLastError() == ERROR_INSUFFICIENT_BUFFER, "expected ERROR_INSUFFICIENT_BUFFER got %u\n", GetLastError() ); + ok( len == 57, "expected len 57 got %u\n", len ); + + /* valid components, NULL url, sufficient length */ + SetLastError( 0xdeadbeef ); + len = 256; + ret = WinHttpCreateUrl( &uc, 0, NULL, &len ); + err = GetLastError(); + ok( !ret, "expected failure\n" ); + ok( err == ERROR_INVALID_PARAMETER || broken(err == ERROR_INSUFFICIENT_BUFFER) /* < win7 */, + "expected ERROR_INVALID_PARAMETER got %u\n", GetLastError() ); + ok( len == 256 || broken(len == 57) /* < win7 */, "expected len 256 got %u\n", len ); /* correct size, NULL url */ fill_url_components( &uc ); SetLastError( 0xdeadbeef ); ret = WinHttpCreateUrl( &uc, 0, NULL, &len ); + err = GetLastError(); ok( !ret, "expected failure\n" ); - ok( GetLastError() == ERROR_INSUFFICIENT_BUFFER || - GetLastError() == ERROR_INVALID_PARAMETER, - "expected ERROR_INSUFFICIENT_BUFFER or ERROR_INVALID_PARAMETER got %u\n", GetLastError() ); + ok( err == ERROR_INVALID_PARAMETER || broken(err == ERROR_INSUFFICIENT_BUFFER) /* < win7 */, + "expected ERROR_INVALID_PARAMETER got %u\n", GetLastError() ); + ok( len == 256 || broken(len == 57) /* < win7 */, "expected len 256 got %u\n", len ); /* valid components, allocated url, short length */ SetLastError( 0xdeadbeef ); Modified: trunk/rostests/winetests/winhttp/winhttp.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/winetests/winhttp/winhttp.c?rev=74198&r1=74197&r2=74198&view=diff ============================================================================== --- trunk/rostests/winetests/winhttp/winhttp.c [iso-8859-1] (original) +++ trunk/rostests/winetests/winhttp/winhttp.c [iso-8859-1] Sun Mar 19 17:05:35 2017 @@ -1002,7 +1002,10 @@ ok(req != NULL, "failed to open a request %u\n", GetLastError()); ret = WinHttpSetOption(req, WINHTTP_OPTION_CLIENT_CERT_CONTEXT, WINHTTP_NO_CLIENT_CERT_CONTEXT, 0); - ok(!ret && GetLastError() == ERROR_WINHTTP_INCORRECT_HANDLE_STATE, "setting client cert context returned %x (%u)\n", ret, GetLastError()); + err = GetLastError(); + ok(!ret, "unexpected success\n"); + ok(err == ERROR_WINHTTP_INCORRECT_HANDLE_STATE || broken(err == ERROR_INVALID_PARAMETER) /* winxp */, + "setting client cert context returned %u\n", err); ret = WinHttpSendRequest(req, NULL, 0, NULL, 0, 0, 0); err = GetLastError(); @@ -1028,7 +1031,8 @@ ok(req != NULL, "failed to open a request %u\n", GetLastError()); ret = WinHttpSetOption(req, WINHTTP_OPTION_CLIENT_CERT_CONTEXT, WINHTTP_NO_CLIENT_CERT_CONTEXT, 0); - ok(ret, "failed to set client cert context %u\n", GetLastError()); + err = GetLastError(); + ok(ret || broken(!ret && err == ERROR_INVALID_PARAMETER) /* winxp */, "failed to set client cert context %u\n", err); WinHttpSetStatusCallback(req, cert_error, WINHTTP_CALLBACK_STATUS_SECURE_FAILURE, 0); @@ -1220,21 +1224,28 @@ return ret; } +static void set_proxy( REGSAM access, BYTE *buf, DWORD len, DWORD type ) +{ + HKEY hkey; + if (!RegCreateKeyExW( HKEY_LOCAL_MACHINE, Connections, 0, NULL, 0, access, NULL, &hkey, NULL )) + { + if (len) RegSetValueExW( hkey, WinHttpSettings, 0, type, buf, len ); + else RegDeleteValueW( hkey, WinHttpSettings ); + RegCloseKey( hkey ); + } +} + static void set_default_proxy_reg_value( BYTE *buf, DWORD len, DWORD type ) { - LONG l; - HKEY key; - - l = RegCreateKeyExW( HKEY_LOCAL_MACHINE, Connections, 0, NULL, 0, - KEY_WRITE, NULL, &key, NULL ); - if (!l) + BOOL wow64; + IsWow64Process( GetCurrentProcess(), &wow64 ); + if (sizeof(void *) > sizeof(int) || wow64) { - if (len) - RegSetValueExW( key, WinHttpSettings, 0, type, buf, len ); - else - RegDeleteValueW( key, WinHttpSettings ); - RegCloseKey( key ); + set_proxy( KEY_WRITE|KEY_WOW64_64KEY, buf, len, type ); + set_proxy( KEY_WRITE|KEY_WOW64_32KEY, buf, len, type ); } + else + set_proxy( KEY_WRITE, buf, len, type ); } static void test_set_default_proxy_config(void)