lib/curl/Request: move catch clause out of FinishHeaders
Let the caller decide what to do with the exception.
This commit is contained in:
@@ -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)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
FinishBody();
|
try {
|
||||||
|
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)
|
|||||||
{
|
{
|
||||||
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:
|
|||||||
*/
|
*/
|
||||||
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);
|
||||||
|
Reference in New Issue
Block a user