Skip to content

Commit 23cddcf

Browse files
Fix segfault added by #3349: curl handle maybe destroyed (#3354)
1 parent 57a4832 commit 23cddcf

File tree

1 file changed

+4
-7
lines changed

1 file changed

+4
-7
lines changed

src/aws-cpp-sdk-core/source/http/curl/CurlHttpClient.cpp

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -860,6 +860,7 @@ std::shared_ptr<HttpResponse> CurlHttpClient::MakeRequest(const std::shared_ptr<
860860
OverrideOptionsOnConnectionHandle(connectionHandle);
861861
Aws::Utils::DateTime startTransmissionTime = Aws::Utils::DateTime::Now();
862862
CURLcode curlResponseCode = curl_easy_perform(connectionHandle);
863+
curl_easy_setopt(connectionHandle, CURLOPT_ERRORBUFFER, nullptr);
863864
bool shouldContinueRequest = ContinueRequest(*request);
864865
if (curlResponseCode != CURLE_OK && shouldContinueRequest)
865866
{
@@ -968,14 +969,12 @@ std::shared_ptr<HttpResponse> CurlHttpClient::MakeRequest(const std::shared_ptr<
968969
{
969970
request->SetResolvedRemoteHost(ip);
970971
}
971-
if (curlResponseCode != CURLE_OK)
972-
{
972+
if (curlResponseCode != CURLE_OK) {
973973
m_curlHandleContainer.DestroyCurlHandle(connectionHandle);
974-
}
975-
else
976-
{
974+
} else {
977975
m_curlHandleContainer.ReleaseCurlHandle(connectionHandle);
978976
}
977+
connectionHandle = nullptr;
979978
//go ahead and flush the response body stream
980979
response->GetResponseBody().flush();
981980
if (response->GetResponseBody().fail()) {
@@ -987,8 +986,6 @@ std::shared_ptr<HttpResponse> CurlHttpClient::MakeRequest(const std::shared_ptr<
987986
AWS_LOGSTREAM_ERROR(CURL_HTTP_CLIENT_TAG, ss.str());
988987
}
989988
request->AddRequestMetric(GetHttpClientMetricNameByType(HttpClientMetricsType::RequestLatency), (DateTime::Now() - startTransmissionTime).count());
990-
991-
curl_easy_setopt(connectionHandle, CURLOPT_ERRORBUFFER, nullptr);
992989
}
993990

994991
if (headers)

0 commit comments

Comments
 (0)