urlmon: Read remaining protocol data if report_data was called after binding finished.
authorJacek Caban <jacek@codeweavers.com>
Tue, 15 Feb 2011 16:01:44 +0000 (17:01 +0100)
committerAlexandre Julliard <julliard@winehq.org>
Tue, 15 Feb 2011 16:42:26 +0000 (17:42 +0100)
dlls/urlmon/binding.c
dlls/urlmon/tests/url.c

index d617052dec6b7157e2a721c02eb15e68b67a3b98..67848b80a740e462b599beed5211b69bad9c6dbf 100644 (file)
@@ -1068,7 +1068,12 @@ static void report_data(Binding *This, DWORD bscf, ULONG progress, ULONG progres
 
     TRACE("(%p)->(%d %u %u)\n", This, bscf, progress, progress_max);
 
-    if(This->download_state == END_DOWNLOAD || (This->state & (BINDING_STOPPED|BINDING_ABORTED)))
+    if(This->download_state == END_DOWNLOAD || (This->state & BINDING_ABORTED)) {
+        read_protocol_data(This->stgmed_buf);
+        return;
+    }
+
+    if(This->state & BINDING_STOPPED)
         return;
 
     if(This->stgmed_buf->file != INVALID_HANDLE_VALUE)
index 21d5fd636df300cf2e03aacaa0cb5145a78bf010..4469949da03404ed0113a7de2d133fa93e433bf2 100644 (file)
@@ -858,6 +858,11 @@ static HRESULT WINAPI Protocol_Start(IInternetProtocol *iface, LPCWSTR szUrl,
         hres = IInternetProtocolSink_ReportProgress(pOIProtSink, BINDSTATUS_BEGINDOWNLOADDATA, NULL);
         ok(hres == S_OK, "ReportProgress(BINDSTATUS_BEGINDOWNLOADDATA) failed: %08x\n", hres);
         CHECK_CALLED(Read);
+    }else if(!bind_to_object && test_protocol == ABOUT_TEST) {
+        SET_EXPECT(Read);
+        hres = IInternetProtocolSink_ReportData(pOIProtSink, bscf, 13, 13);
+        ok(hres == S_OK, "ReportData failed: %08x\n", hres);
+        CHECK_CALLED(Read);
     }
 
     SET_EXPECT(Terminate);