Commit 1bab6d0d authored by Max Kellermann's avatar Max Kellermann

lib/curl/Request: move catch clause out of FinishHeaders

Let the caller decide what to do with the exception.
parent 13b85edb
...@@ -114,32 +114,24 @@ CurlRequest::Resume() ...@@ -114,32 +114,24 @@ CurlRequest::Resume()
global.InvalidateSockets(); global.InvalidateSockets();
} }
bool void
CurlRequest::FinishHeaders() CurlRequest::FinishHeaders()
{ {
if (state != State::HEADERS) if (state != State::HEADERS)
return true; return;
state = State::BODY; state = State::BODY;
long status = 0; long status = 0;
curl_easy_getinfo(easy.Get(), CURLINFO_RESPONSE_CODE, &status); curl_easy_getinfo(easy.Get(), CURLINFO_RESPONSE_CODE, &status);
try {
handler.OnHeaders(status, std::move(headers)); handler.OnHeaders(status, std::move(headers));
return true;
} catch (...) {
state = State::CLOSED;
handler.OnError(std::current_exception());
return false;
}
} }
void void
CurlRequest::FinishBody() CurlRequest::FinishBody()
{ {
if (!FinishHeaders()) FinishHeaders();
return;
if (state != State::BODY) if (state != State::BODY)
return; return;
...@@ -167,7 +159,12 @@ CurlRequest::Done(CURLcode result) ...@@ -167,7 +159,12 @@ CurlRequest::Done(CURLcode result)
return; return;
} }
try {
FinishBody(); FinishBody();
} catch (...) {
state = State::CLOSED;
handler.OnError(std::current_exception());
}
} }
inline void inline void
...@@ -221,10 +218,8 @@ CurlRequest::DataReceived(const void *ptr, size_t received_size) ...@@ -221,10 +218,8 @@ CurlRequest::DataReceived(const void *ptr, size_t received_size)
{ {
assert(received_size > 0); assert(received_size > 0);
if (!FinishHeaders())
return 0;
try { try {
FinishHeaders();
handler.OnData({ptr, received_size}); handler.OnData({ptr, received_size});
return received_size; return received_size;
} catch (Pause) { } catch (Pause) {
......
...@@ -115,7 +115,7 @@ private: ...@@ -115,7 +115,7 @@ private:
*/ */
void FreeEasy(); void FreeEasy();
bool FinishHeaders(); void FinishHeaders();
void FinishBody(); void FinishBody();
size_t DataReceived(const void *ptr, size_t size); size_t DataReceived(const void *ptr, size_t size);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment