diff --git a/include/wx/private/webrequest.h b/include/wx/private/webrequest.h index b74bbd566b..fca59cf843 100644 --- a/include/wx/private/webrequest.h +++ b/include/wx/private/webrequest.h @@ -64,6 +64,7 @@ public: wxWebRequest::Storage GetStorage() const { return m_storage; } + // Precondition for this method checked by caller: current state is idle. virtual void Start() = 0; virtual void Cancel() = 0; diff --git a/interface/wx/webrequest.h b/interface/wx/webrequest.h index dcde845b5a..90f3b16db1 100644 --- a/interface/wx/webrequest.h +++ b/interface/wx/webrequest.h @@ -187,6 +187,9 @@ public: Events will be triggered on success or failure. + The current state must be @c State_Idle, already started requests can't + be started again. + @see Cancel() */ void Start(); diff --git a/src/common/webrequest.cpp b/src/common/webrequest.cpp index 58fecf82ec..f5b9c40e3b 100644 --- a/src/common/webrequest.cpp +++ b/src/common/webrequest.cpp @@ -391,6 +391,9 @@ void wxWebRequest::Start() { wxCHECK_IMPL_VOID(); + wxCHECK_RET( m_impl->GetState() == wxWebRequest::State_Idle, + "Completed requests can not be restarted" ); + m_impl->Start(); } diff --git a/src/common/webrequest_curl.cpp b/src/common/webrequest_curl.cpp index 98b43c51aa..f9014ef7bd 100644 --- a/src/common/webrequest_curl.cpp +++ b/src/common/webrequest_curl.cpp @@ -187,9 +187,6 @@ wxWebRequestCURL::~wxWebRequestCURL() void wxWebRequestCURL::Start() { - if ( GetState() != wxWebRequest::State_Idle ) - return; - m_response.reset(new wxWebResponseCURL(*this)); if ( m_dataSize ) diff --git a/src/msw/webrequest_winhttp.cpp b/src/msw/webrequest_winhttp.cpp index e941ff9bde..c48f88ac06 100644 --- a/src/msw/webrequest_winhttp.cpp +++ b/src/msw/webrequest_winhttp.cpp @@ -237,9 +237,6 @@ void wxWebRequestWinHTTP::SetFailed(DWORD errorCode) void wxWebRequestWinHTTP::Start() { - if ( GetState() != wxWebRequest::State_Idle ) // Completed requests can not be restarted - return; - // Parse the URL wxURI uri(m_url); bool isSecure = uri.GetScheme().IsSameAs("HTTPS", false);