Module: wine Branch: master Commit: f33f7a5df1a5029adf5da2b3f5ce52665b95fb02 URL: http://source.winehq.org/git/wine.git/?a=commit;h=f33f7a5df1a5029adf5da2b3f5...
Author: Hans Leidekker hans@codeweavers.com Date: Wed Dec 19 12:02:36 2012 +0100
wininet: Map socket errors to ERROR_INTERNET_CANNOT_CONNECT in create_netconn_socket.
---
dlls/wininet/netconnection.c | 2 +- dlls/wininet/tests/http.c | 27 +++++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 1 deletions(-)
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(); }