HTTPTimeout work in progress
* Avoid using CurlEasyRequest::mTimeout for HTTPTime::done and HTTPTime::print_diagnostics when it might be NULL. * Comment fixes. * Indentation fix.
This commit is contained in:
@@ -1260,6 +1260,19 @@ void CurlEasyRequest::removed_from_multi_handle(AICurlEasyRequest_wat& curl_easy
|
||||
mEventsTarget->removed_from_multi_handle(curl_easy_request_w);
|
||||
}
|
||||
|
||||
void CurlEasyRequest::print_diagnostics(AICurlEasyRequest_wat const& curlEasyRequest_w, CURLcode code)
|
||||
{
|
||||
if (code == CURLE_OPERATION_TIMEDOUT)
|
||||
{
|
||||
// mTimeout SHOULD always be set, but I see no reason not to test it, as
|
||||
// this is far from the code that guaranteeds that it is set.
|
||||
if (mTimeout)
|
||||
{
|
||||
mTimeout->print_diagnostics(curlEasyRequest_w);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// CurlResponderBuffer
|
||||
|
||||
|
||||
@@ -337,11 +337,22 @@ class CurlEasyRequest : public CurlEasyHandle {
|
||||
void set_timeout_opts(void);
|
||||
|
||||
public:
|
||||
// Called by MultiHandle::check_run_count() to store result code that is returned by getResult.
|
||||
// Called by MultiHandle::finish_easy_request() to store result code that is returned by getResult.
|
||||
void storeResult(CURLcode result) { mResult = result; }
|
||||
|
||||
// Called by MultiHandle::check_run_count() when the curl easy handle is done.
|
||||
void done(AICurlEasyRequest_wat& curl_easy_request_w) { finished(curl_easy_request_w); }
|
||||
// Called by MultiHandle::finish_easy_request() when the curl easy handle is done.
|
||||
void done(AICurlEasyRequest_wat& curl_easy_request_w, CURLcode result)
|
||||
{
|
||||
if (mTimeout)
|
||||
{
|
||||
// Update timeout administration.
|
||||
mTimeout->done(curl_easy_request_w, result);
|
||||
}
|
||||
finished(curl_easy_request_w);
|
||||
}
|
||||
|
||||
// Called by in case of an error.
|
||||
void print_diagnostics(AICurlEasyRequest_wat const& curlEasyRequest_w, CURLcode code);
|
||||
|
||||
// Called by MultiHandle::check_run_count() to fill info with the transfer info.
|
||||
void getTransferInfo(AICurlInterface::TransferInfo* info);
|
||||
|
||||
@@ -1713,10 +1713,8 @@ void MultiHandle::finish_easy_request(AICurlEasyRequest const& easy_request, CUR
|
||||
Dout(dc::finish, "pretransfer_time: " << pretransfer_time << ", starttransfer_time: " << starttransfer_time <<
|
||||
". [CURLINFO_PRIVATE = " << (void*)easy_request.get_ptr().get() << "]");
|
||||
#endif
|
||||
// Update timeout administration.
|
||||
curl_easy_request_w->httptimeout()->done(curl_easy_request_w, result);
|
||||
// Signal that this easy handle finished.
|
||||
curl_easy_request_w->done(curl_easy_request_w);
|
||||
curl_easy_request_w->done(curl_easy_request_w, result);
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
@@ -2096,13 +2094,14 @@ void CurlResponderBuffer::processOutput(AICurlEasyRequest_wat& curl_easy_request
|
||||
curl_easy_request_w->setopt(CURLOPT_FRESH_CONNECT, TRUE);
|
||||
}
|
||||
|
||||
llassert(mResponder); // AIFIXME: We always have a responder now, no?
|
||||
if (mResponder)
|
||||
{
|
||||
if (code == CURLE_OPERATION_TIMEDOUT)
|
||||
if (code != CURLE_OK)
|
||||
{
|
||||
curl_easy_request_w->httptimeout()->print_diagnostics(curl_easy_request_w);
|
||||
curl_easy_request_w->print_diagnostics(curl_easy_request_w, code);
|
||||
}
|
||||
if (mEventsTarget)
|
||||
if (mEventsTarget)
|
||||
{
|
||||
// Only the responder registers for these events.
|
||||
llassert(mEventsTarget == mResponder.get());
|
||||
|
||||
Reference in New Issue
Block a user