diff --git a/src/msw/webrequest_winhttp.cpp b/src/msw/webrequest_winhttp.cpp index 7c087a833b..3d64138021 100644 --- a/src/msw/webrequest_winhttp.cpp +++ b/src/msw/webrequest_winhttp.cpp @@ -184,8 +184,12 @@ wxWebRequestWinHTTP::HandleCallback(DWORD dwInternetStatus, break; case WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE: + { + DWORD written = *(reinterpret_cast(lpvStatusInformation)); + m_dataWritten += written; WriteData(); break; + } case WINHTTP_CALLBACK_STATUS_REQUEST_ERROR: { @@ -218,8 +222,8 @@ void wxWebRequestWinHTTP::WriteData() } m_dataWriteBuffer.Clear(); - m_dataWriteBuffer.GetWriteBuf(dataWriteSize); - m_dataStream->Read(m_dataWriteBuffer.GetData(), dataWriteSize); + void* buffer = m_dataWriteBuffer.GetWriteBuf(dataWriteSize); + m_dataStream->Read(buffer, dataWriteSize); if ( !::WinHttpWriteData ( @@ -230,10 +234,7 @@ void wxWebRequestWinHTTP::WriteData() ) ) { SetFailedWithLastError(); - return; } - - m_dataWritten += dataWriteSize; } void wxWebRequestWinHTTP::CreateResponse() diff --git a/tests/net/webrequest.cpp b/tests/net/webrequest.cpp index 70fcfea5c8..4be896bbd4 100644 --- a/tests/net/webrequest.cpp +++ b/tests/net/webrequest.cpp @@ -133,6 +133,14 @@ public: REQUIRE( request.GetState() == wxWebRequest::State_Idle ); request.Start(); RunLoopWithTimeout(); + + if ( request.GetState() != requiredState ) + { + errorDescription.Trim(); + if ( !errorDescription.empty() ) + WARN("Error: " << errorDescription); + } + REQUIRE( request.GetState() == requiredState ); if (requiredStatus) CHECK( request.GetResponse().GetStatus() == requiredStatus ); @@ -378,8 +386,6 @@ TEST_CASE_METHOD(RequestFixture, request.Start(); request.Cancel(); RunLoopWithTimeout(); - if ( !errorDescription.empty() ) - INFO( "Error:" << errorDescription ); REQUIRE( request.GetState() == wxWebRequest::State_Cancelled ); }