[PATCH 2/2] wininet/tests: Fix test failures on Windows XP.

Hans Leidekker hans at codeweavers.com
Thu Jan 9 07:34:57 CST 2020


Signed-off-by: Hans Leidekker <hans at codeweavers.com>
---
 dlls/wininet/tests/http.c | 23 +++++++++++++++++++----
 1 file changed, 19 insertions(+), 4 deletions(-)

diff --git a/dlls/wininet/tests/http.c b/dlls/wininet/tests/http.c
index 8f3d02e664..e0ea78cfb4 100644
--- a/dlls/wininet/tests/http.c
+++ b/dlls/wininet/tests/http.c
@@ -42,6 +42,7 @@
 #define TEST_URL "http://test.winehq.org/tests/hello.html"
 
 static BOOL first_connection_to_test_url = TRUE;
+static BOOL https_support = TRUE;
 
 /* Adapted from dlls/urlmon/tests/protocol.c */
 
@@ -6220,6 +6221,12 @@ static void test_security_flags(void)
     char buf[100];
     BOOL res;
 
+    if (!https_support)
+    {
+        win_skip("Can't make https connections, skipping security flags test\n");
+        return;
+    }
+
     trace("Testing security flags...\n");
     reset_events();
 
@@ -6556,7 +6563,7 @@ static void test_secure_connection(void)
     static const WCHAR get[] = {'G','E','T',0};
     static const WCHAR testpage[] = {'/','t','e','s','t','s','/','h','e','l','l','o','.','h','t','m','l',0};
     HINTERNET ses, con, req;
-    DWORD size, flags;
+    DWORD size, flags, err;
     INTERNET_CERTIFICATE_INFOA *certificate_structA = NULL;
     INTERNET_CERTIFICATE_INFOW *certificate_structW = NULL;
     BOOL ret;
@@ -6574,11 +6581,13 @@ static void test_secure_connection(void)
     ok(req != NULL, "HttpOpenRequest failed\n");
 
     ret = HttpSendRequestA(req, NULL, 0, NULL, 0);
-    ok(ret || broken(GetLastError() == ERROR_INTERNET_CANNOT_CONNECT),
-                     "HttpSendRequest failed: %d\n", GetLastError());
+    err = GetLastError();
+    ok(ret || broken(err == ERROR_INTERNET_CANNOT_CONNECT) ||
+              broken(err == ERROR_INTERNET_SECURITY_CHANNEL_ERROR), "HttpSendRequest failed: %u\n", err);
     if (!ret)
     {
         win_skip("Cannot connect to https.\n");
+        if (err == ERROR_INTERNET_SECURITY_CHANNEL_ERROR) https_support = FALSE;
         goto done;
     }
 
@@ -7375,6 +7384,11 @@ static void test_default_service_port(void)
     ok(request != NULL, "HttpOpenRequest failed\n");
 
     ret = HttpSendRequestA(request, NULL, 0, NULL, 0);
+    if (!ret && GetLastError() == ERROR_INTERNET_SECURITY_CHANNEL_ERROR)
+    {
+        win_skip("Can't make https connection\n");
+        goto done;
+    }
     ok(ret, "HttpSendRequest failed with error %u\n", GetLastError());
 
     size = sizeof(buffer);
@@ -7402,6 +7416,7 @@ static void test_default_service_port(void)
     ok(ret, "HttpQueryInfo failed with error %u\n", GetLastError());
     ok(!strcmp(buffer, "test.winehq.org:443"), "Expected test.winehg.org:443, got '%s'\n", buffer);
 
+done:
     InternetCloseHandle(request);
     InternetCloseHandle(connect);
     InternetCloseHandle(session);
@@ -7529,6 +7544,7 @@ START_TEST(http)
     InternetReadFile_test(INTERNET_FLAG_ASYNC, &test_data[1]);
     InternetReadFile_test(0, &test_data[1]);
     InternetReadFile_test(INTERNET_FLAG_ASYNC, &test_data[2]);
+    test_secure_connection();
     test_security_flags();
     InternetReadFile_test(0, &test_data[2]);
     InternetReadFileExA_test(INTERNET_FLAG_ASYNC);
@@ -7543,7 +7559,6 @@ START_TEST(http)
     InternetOpenUrlA_test();
     HttpHeaders_test();
     test_http_connection();
-    test_secure_connection();
     test_user_agent_header();
     test_bogus_accept_types_array();
     InternetReadFile_chunked_test();
-- 
2.20.1




More information about the wine-devel mailing list