@@ -129,17 +129,20 @@ static char* strdup_callback(const char* str)
129
129
struct CurlWriteCallbackContext
130
130
{
131
131
CurlWriteCallbackContext (const CurlHttpClient* client,
132
+ CURL* curlHandle,
132
133
HttpRequest* request,
133
134
HttpResponse* response,
134
135
Aws::Utils::RateLimits::RateLimiterInterface* rateLimiter) :
135
136
m_client (client),
137
+ m_curlHandle (curlHandle),
136
138
m_request (request),
137
139
m_response (response),
138
140
m_rateLimiter (rateLimiter),
139
141
m_numBytesResponseReceived (0 )
140
142
{}
141
143
142
144
const CurlHttpClient* m_client;
145
+ CURL* m_curlHandle{nullptr };
143
146
HttpRequest* m_request;
144
147
HttpResponse* m_response;
145
148
Aws::Utils::RateLimits::RateLimiterInterface* m_rateLimiter;
@@ -272,6 +275,14 @@ static size_t WriteHeader(char* ptr, size_t size, size_t nmemb, void* userdata)
272
275
{
273
276
response->AddHeader (StringUtils::Trim (keyValuePair[0 ].c_str ()), StringUtils::Trim (keyValuePair[1 ].c_str ()));
274
277
}
278
+ // checking for end of all the headers before setting response code
279
+ else if (headerLine == " \r\n " && context->m_curlHandle )
280
+ {
281
+ long responseCode{-1 };
282
+ curl_easy_getinfo (context->m_curlHandle , CURLINFO_RESPONSE_CODE, &responseCode);
283
+ response->SetResponseCode (static_cast <HttpResponseCode>(responseCode));
284
+ AWS_LOGSTREAM_DEBUG (CURL_HTTP_CLIENT_TAG, " Returned http response code " << responseCode);
285
+ }
275
286
276
287
return size * nmemb;
277
288
}
@@ -683,7 +694,7 @@ std::shared_ptr<HttpResponse> CurlHttpClient::MakeRequest(const std::shared_ptr<
683
694
curl_easy_setopt (connectionHandle, CURLOPT_HTTPHEADER, headers);
684
695
}
685
696
686
- CurlWriteCallbackContext writeContext (this , request.get (), response.get (), readLimiter);
697
+ CurlWriteCallbackContext writeContext (this , connectionHandle , request.get (), response.get (), readLimiter);
687
698
688
699
const auto readContext = [this , &connectionHandle, &request, &writeLimiter]() -> CurlReadCallbackContext {
689
700
if (request->GetContentBody () != nullptr ) {
0 commit comments