[PATCH 7/7] winhttp: Return an error from WinHttpReceiveResponse if there's no connection.

Hans Leidekker hans at codeweavers.com
Thu Nov 22 14:15:57 CST 2018


Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=46175
Signed-off-by: Hans Leidekker <hans at codeweavers.com>
---
 dlls/winhttp/request.c       | 6 ++++++
 dlls/winhttp/tests/winhttp.c | 5 +++++
 2 files changed, 11 insertions(+)

diff --git a/dlls/winhttp/request.c b/dlls/winhttp/request.c
index 54173f1ff4..27628c3292 100644
--- a/dlls/winhttp/request.c
+++ b/dlls/winhttp/request.c
@@ -2736,6 +2736,12 @@ static BOOL receive_response( struct request *request, BOOL async )
     BOOL ret;
     DWORD size, query, status;
 
+    if (!request->netconn)
+    {
+        SetLastError( ERROR_WINHTTP_INCORRECT_HANDLE_STATE );
+        return FALSE;
+    }
+
     netconn_set_timeout( request->netconn, FALSE, request->receive_response_timeout );
     for (;;)
     {
diff --git a/dlls/winhttp/tests/winhttp.c b/dlls/winhttp/tests/winhttp.c
index 4779cfd1a7..3f9125154f 100644
--- a/dlls/winhttp/tests/winhttp.c
+++ b/dlls/winhttp/tests/winhttp.c
@@ -2086,6 +2086,11 @@ static void test_resolve_timeout(void)
         ok(GetLastError() == ERROR_WINHTTP_NAME_NOT_RESOLVED,
            "expected ERROR_WINHTTP_NAME_NOT_RESOLVED got %u\n", GetLastError());
 
+        ret = WinHttpReceiveResponse( req, NULL );
+        ok( !ret && (GetLastError() == ERROR_WINHTTP_INCORRECT_HANDLE_STATE ||
+                     GetLastError() == ERROR_WINHTTP_OPERATION_CANCELLED /* < win7 */),
+            "got %u\n", GetLastError() );
+
         WinHttpCloseHandle(req);
         WinHttpCloseHandle(con);
         WinHttpCloseHandle(ses);
-- 
2.11.0




More information about the wine-devel mailing list