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;
|
break;
|
||||||
|
|
||||||
case WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE:
|
case WINHTTP_CALLBACK_STATUS_WRITE_COMPLETE:
|
||||||
|
{
|
||||||
|
DWORD written = *(reinterpret_cast<LPDWORD>(lpvStatusInformation));
|
||||||
|
m_dataWritten += written;
|
||||||
WriteData();
|
WriteData();
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
case WINHTTP_CALLBACK_STATUS_REQUEST_ERROR:
|
case WINHTTP_CALLBACK_STATUS_REQUEST_ERROR:
|
||||||
{
|
{
|
||||||
@@ -218,8 +222,8 @@ void wxWebRequestWinHTTP::WriteData()
|
|||||||
}
|
}
|
||||||
|
|
||||||
m_dataWriteBuffer.Clear();
|
m_dataWriteBuffer.Clear();
|
||||||
m_dataWriteBuffer.GetWriteBuf(dataWriteSize);
|
void* buffer = m_dataWriteBuffer.GetWriteBuf(dataWriteSize);
|
||||||
m_dataStream->Read(m_dataWriteBuffer.GetData(), dataWriteSize);
|
m_dataStream->Read(buffer, dataWriteSize);
|
||||||
|
|
||||||
if ( !::WinHttpWriteData
|
if ( !::WinHttpWriteData
|
||||||
(
|
(
|
||||||
@@ -230,10 +234,7 @@ void wxWebRequestWinHTTP::WriteData()
|
|||||||
) )
|
) )
|
||||||
{
|
{
|
||||||
SetFailedWithLastError();
|
SetFailedWithLastError();
|
||||||
return;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
m_dataWritten += dataWriteSize;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void wxWebRequestWinHTTP::CreateResponse()
|
void wxWebRequestWinHTTP::CreateResponse()
|
||||||
|
@@ -133,6 +133,14 @@ public:
|
|||||||
REQUIRE( request.GetState() == wxWebRequest::State_Idle );
|
REQUIRE( request.GetState() == wxWebRequest::State_Idle );
|
||||||
request.Start();
|
request.Start();
|
||||||
RunLoopWithTimeout();
|
RunLoopWithTimeout();
|
||||||
|
|
||||||
|
if ( request.GetState() != requiredState )
|
||||||
|
{
|
||||||
|
errorDescription.Trim();
|
||||||
|
if ( !errorDescription.empty() )
|
||||||
|
WARN("Error: " << errorDescription);
|
||||||
|
}
|
||||||
|
|
||||||
REQUIRE( request.GetState() == requiredState );
|
REQUIRE( request.GetState() == requiredState );
|
||||||
if (requiredStatus)
|
if (requiredStatus)
|
||||||
CHECK( request.GetResponse().GetStatus() == requiredStatus );
|
CHECK( request.GetResponse().GetStatus() == requiredStatus );
|
||||||
@@ -378,8 +386,6 @@ TEST_CASE_METHOD(RequestFixture,
|
|||||||
request.Start();
|
request.Start();
|
||||||
request.Cancel();
|
request.Cancel();
|
||||||
RunLoopWithTimeout();
|
RunLoopWithTimeout();
|
||||||
if ( !errorDescription.empty() )
|
|
||||||
INFO( "Error:" << errorDescription );
|
|
||||||
REQUIRE( request.GetState() == wxWebRequest::State_Cancelled );
|
REQUIRE( request.GetState() == wxWebRequest::State_Cancelled );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user