Merge branch 'appveyor-webrequest' of https://github.com/MaartenBent/wxWidgets
Fix bug in wxWebRequest data upload code in WinHTTP implementation. See https://github.com/wxWidgets/wxWidgets/pull/2199
This commit is contained in:
@@ -184,8 +184,12 @@ wxWebRequestWinHTTP::HandleCallback(DWORD dwInternetStatus,
|
||||
break;
|
||||
|
||||
case WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE:
|
||||
{
|
||||
DWORD written = *(reinterpret_cast<LPDWORD>(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()
|
||||
|
@@ -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 );
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user