From d15e514e8464eda142ae5cbaada3e2fa37afe8a9 Mon Sep 17 00:00:00 2001 From: Vadim Zeitlin Date: Thu, 30 Aug 2012 20:22:40 +0000 Subject: [PATCH] Use wxSOCKET_WAITALL in wxHTTP to ensure that all data is sent. POST-ing sufficiently big amounts of data in wxHTTP didn't work because it couldn't be sent all at once to the server. Use wxSOCKET_WAITALL to ensure that we do send all of the data. Closes #14598. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@72409 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- docs/changes.txt | 1 + src/common/http.cpp | 7 +++++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/changes.txt b/docs/changes.txt index 3d6053886d..44482c80e6 100644 --- a/docs/changes.txt +++ b/docs/changes.txt @@ -531,6 +531,7 @@ All: - Add wxDir::Close() method (Silverstorm82). - Fix compilation of wxHash{Map,Set} with g++ 4.7 (Nathan Ridge). +- Fix posting large amounts of data in wxHTTP (Platonides). - Added Nepali translation (Him Prasad Gautam). All (GUI): diff --git a/src/common/http.cpp b/src/common/http.cpp index f041115be9..f70b6fe9da 100644 --- a/src/common/http.cpp +++ b/src/common/http.cpp @@ -388,8 +388,11 @@ bool wxHTTP::BuildRequest(const wxString& path, wxHTTP_Req req) SaveState(); // we may use non blocking sockets only if we can dispatch events from them - SetFlags( wxIsMainThread() && wxApp::IsMainLoopRunning() ? wxSOCKET_NONE - : wxSOCKET_BLOCK ); + int flags = wxIsMainThread() && wxApp::IsMainLoopRunning() ? wxSOCKET_NONE + : wxSOCKET_BLOCK; + // and we must use wxSOCKET_WAITALL to ensure that all data is sent + flags |= wxSOCKET_WAITALL; + SetFlags(flags); Notify(false); wxString buf;