Sebastian Lackner : wininet: Send INTERNET_STATUS_RESPONSE_RECEIVED notification in async handler.
Alexandre Julliard
julliard at wine.codeweavers.com
Thu Apr 28 11:01:51 CDT 2016
Module: wine
Branch: master
Commit: 45459965aa6e8908c765eac5b9701d6ed208daf5
URL: http://source.winehq.org/git/wine.git/?a=commit;h=45459965aa6e8908c765eac5b9701d6ed208daf5
Author: Sebastian Lackner <sebastian at fds-team.de>
Date: Thu Apr 28 05:12:49 2016 +0200
wininet: Send INTERNET_STATUS_RESPONSE_RECEIVED notification in async handler.
Signed-off-by: Sebastian Lackner <sebastian at fds-team.de>
Signed-off-by: Jacek Caban <jacek at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/wininet/http.c | 7 +++++++
dlls/wininet/tests/http.c | 4 +++-
2 files changed, 10 insertions(+), 1 deletion(-)
diff --git a/dlls/wininet/http.c b/dlls/wininet/http.c
index 08f5a08..66ee6ba 100644
--- a/dlls/wininet/http.c
+++ b/dlls/wininet/http.c
@@ -3134,6 +3134,13 @@ static void AsyncReadFileExProc(task_header_t *hdr)
TRACE("INTERNETREADFILEEXW %p\n", task->hdr.hdr);
res = HTTPREQ_Read(req, task->buf, task->size, task->ret_read);
+ if (res == ERROR_SUCCESS)
+ {
+ DWORD read = *task->ret_read;
+ INTERNET_SendCallback(&req->hdr, req->hdr.dwContext, INTERNET_STATUS_RESPONSE_RECEIVED,
+ &read, sizeof(read));
+ }
+
send_request_complete(req, res == ERROR_SUCCESS, res);
}
diff --git a/dlls/wininet/tests/http.c b/dlls/wininet/tests/http.c
index 22f8fbe..c90e6d2 100644
--- a/dlls/wininet/tests/http.c
+++ b/dlls/wininet/tests/http.c
@@ -1099,7 +1099,7 @@ static void InternetReadFileExA_test(int flags)
CHECK_NOTIFIED(INTERNET_STATUS_RECEIVING_RESPONSE);
WaitForSingleObject(hCompleteEvent, INFINITE);
CHECK_NOTIFIED(INTERNET_STATUS_REQUEST_COMPLETE);
- CHECK_NOT_NOTIFIED(INTERNET_STATUS_RESPONSE_RECEIVED);
+ CHECK_NOTIFIED(INTERNET_STATUS_RESPONSE_RECEIVED);
ok(req_error == ERROR_SUCCESS, "req_error = %u\n", req_error);
}
else
@@ -4505,6 +4505,7 @@ static void test_async_read(int port)
if (!ret)
{
ok( GetLastError() == ERROR_IO_PENDING, "expected ERROR_IO_PENDING, got %u\n", GetLastError() );
+ CHECK_NOTIFIED( INTERNET_STATUS_RECEIVING_RESPONSE );
SET_EXPECT( INTERNET_STATUS_REQUEST_COMPLETE );
if (!pending_reads++)
{
@@ -4517,6 +4518,7 @@ static void test_async_read(int port)
ok( req_error == ERROR_SUCCESS, "expected ERROR_SUCCESS, got %u\n", req_error );
todo_wine_if( pending_reads > 1 )
ok( ib.dwBufferLength != 0, "expected ib.dwBufferLength != 0\n" );
+ CHECK_NOTIFIED( INTERNET_STATUS_RESPONSE_RECEIVED );
CHECK_NOTIFIED( INTERNET_STATUS_REQUEST_COMPLETE );
}
More information about the wine-cvs
mailing list