wininet: Map socket errors to ERROR_INTERNET_CANNOT_CONNECT in create_netconn_socket.

Hans Leidekker hans at codeweavers.com
Wed Dec 19 05:02:36 CST 2012


---
 dlls/wininet/netconnection.c |    2 +-
 dlls/wininet/tests/http.c    |   27 +++++++++++++++++++++++++++
 2 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/dlls/wininet/netconnection.c b/dlls/wininet/netconnection.c
index e7a3274..8d5fc6f 100644
--- a/dlls/wininet/netconnection.c
+++ b/dlls/wininet/netconnection.c
@@ -646,7 +646,7 @@ static DWORD create_netconn_socket(server_t *server, netconn_t *netconn, DWORD t
         }
     }
     if(result == -1)
-        return sock_get_error(errno);
+        return ERROR_INTERNET_CANNOT_CONNECT;
 
 #ifdef TCP_NODELAY
     flag = 1;
diff --git a/dlls/wininet/tests/http.c b/dlls/wininet/tests/http.c
index c9bd0a4..ba4ec4d 100644
--- a/dlls/wininet/tests/http.c
+++ b/dlls/wininet/tests/http.c
@@ -4041,6 +4041,32 @@ static void test_InternetCloseHandle(void)
        closetest_req, res, GetLastError());
 }
 
+static void test_connection_failure(void)
+{
+    HINTERNET session, connect, request;
+    DWORD error;
+    BOOL ret;
+
+    session = InternetOpenA("winetest", INTERNET_OPEN_TYPE_PRECONFIG, NULL, NULL, 0);
+    ok(session != NULL, "failed to get session handle\n");
+
+    connect = InternetConnectA(session, "localhost", 1, NULL, NULL, INTERNET_SERVICE_HTTP, 0, 0);
+    ok(connect != NULL, "failed to get connection handle\n");
+
+    request = HttpOpenRequestA(connect, NULL, "/", NULL, NULL, NULL, 0, 0);
+    ok(request != NULL, "failed to get request handle\n");
+
+    SetLastError(0xdeadbeef);
+    ret = HttpSendRequest(request, NULL, 0, NULL, 0);
+    error = GetLastError();
+    ok(!ret, "unexpected success\n");
+    ok(error == ERROR_INTERNET_CANNOT_CONNECT, "wrong error %u\n", error);
+
+    InternetCloseHandle(request);
+    InternetCloseHandle(connect);
+    InternetCloseHandle(session);
+}
+
 static void init_status_tests(void)
 {
     memset(expect, 0, sizeof(expect));
@@ -4117,4 +4143,5 @@ START_TEST(http)
     InternetReadFile_chunked_test();
     HttpSendRequestEx_test();
     InternetReadFile_test(INTERNET_FLAG_ASYNC, &test_data[3]);
+    test_connection_failure();
 }
-- 
1.7.10.4






More information about the wine-patches mailing list