From: Jacek Caban Subject: [PATCH 1/2] wininet: Handle INTERNET_INVALID_PORT_NUMBER in HttpOpenRequest. Message-Id: <2049d4b9-28cd-8aca-2fed-e29b2a6ba3dc@codeweavers.com> Date: Thu, 15 Dec 2016 18:35:53 +0100 From: Michael Müller Signed-off-by: Michael Müller Signed-off-by: Sebastian Lackner Signed-off-by: Jacek Caban --- dlls/wininet/http.c | 9 +++++++-- dlls/wininet/tests/http.c | 6 +++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/dlls/wininet/http.c b/dlls/wininet/http.c index 658342b..1dffbaa 100644 --- a/dlls/wininet/http.c +++ b/dlls/wininet/http.c @@ -3359,7 +3359,7 @@ static DWORD HTTP_HttpOpenRequestW(http_session_t *session, { appinfo_t *hIC = session->appInfo; http_request_t *request; - DWORD len; + DWORD port, len; TRACE("-->\n"); @@ -3388,7 +3388,12 @@ static DWORD HTTP_HttpOpenRequestW(http_session_t *session, request->session = session; list_add_head( &session->hdr.children, &request->hdr.entry ); - request->server = get_server(substrz(session->hostName), session->hostPort, (dwFlags & INTERNET_FLAG_SECURE) != 0, TRUE); + port = session->hostPort; + if (port == INTERNET_INVALID_PORT_NUMBER) + port = (session->hdr.dwFlags & INTERNET_FLAG_SECURE) ? + INTERNET_DEFAULT_HTTPS_PORT : INTERNET_DEFAULT_HTTP_PORT; + + request->server = get_server(substrz(session->hostName), port, (dwFlags & INTERNET_FLAG_SECURE) != 0, TRUE); if(!request->server) { WININET_Release(&request->hdr); return ERROR_OUTOFMEMORY; diff --git a/dlls/wininet/tests/http.c b/dlls/wininet/tests/http.c index 9cda9c5..fb64e3c 100644 --- a/dlls/wininet/tests/http.c +++ b/dlls/wininet/tests/http.c @@ -6212,13 +6212,13 @@ static void test_default_service_port(void) ok(request != NULL, "HttpOpenRequest failed\n"); ret = HttpSendRequestA(request, NULL, 0, NULL, 0); - todo_wine ok(ret, "HttpSendRequest failed with error %u\n", GetLastError()); + ok(ret, "HttpSendRequest failed with error %u\n", GetLastError()); size = sizeof(buffer); memset(buffer, 0, sizeof(buffer)); ret = HttpQueryInfoA(request, HTTP_QUERY_HOST | HTTP_QUERY_FLAG_REQUEST_HEADERS, buffer, &size, NULL); ok(ret, "HttpQueryInfo failed with error %u\n", GetLastError()); - todo_wine ok(!strcmp(buffer, "test.winehq.org"), "Expected test.winehg.org, got '%s'\n", buffer); + ok(!strcmp(buffer, "test.winehq.org"), "Expected test.winehg.org, got '%s'\n", buffer); InternetCloseHandle(request); InternetCloseHandle(connect); @@ -6237,7 +6237,7 @@ static void test_default_service_port(void) memset(buffer, 0, sizeof(buffer)); ret = HttpQueryInfoA(request, HTTP_QUERY_HOST | HTTP_QUERY_FLAG_REQUEST_HEADERS, buffer, &size, NULL); ok(ret, "HttpQueryInfo failed with error %u\n", GetLastError()); - todo_wine ok(!strcmp(buffer, "test.winehq.org:443"), "Expected test.winehg.org:443, got '%s'\n", buffer); + ok(!strcmp(buffer, "test.winehq.org:443"), "Expected test.winehg.org:443, got '%s'\n", buffer); InternetCloseHandle(request); InternetCloseHandle(connect);