Skip to content

Commit 62dbcf0

Browse files
committed
refactor out chunk framing
1 parent 6bedf17 commit 62dbcf0

File tree

6 files changed

+4
-49
lines changed

6 files changed

+4
-49
lines changed

src/aws-cpp-sdk-core/include/aws/core/http/windows/WinHttpSyncHttpClient.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ namespace Aws
5151
bool DoReceiveResponse(void* httpRequest) const override;
5252
bool DoQueryHeaders(void* httpRequest, std::shared_ptr<Aws::Http::HttpResponse>& response, Aws::StringStream& ss, uint64_t& read) const override;
5353
bool DoSendRequest(void* httpRequest) const override;
54-
bool DoSendRequest(void* httpRequest, const std::shared_ptr<HttpRequest>& request) const;
5554
bool DoQueryDataAvailable(void* hHttpRequest, uint64_t& available) const override;
5655
bool DoReadData(void* hHttpRequest, char* body, uint64_t size, uint64_t& read) const override;
5756
void* GetClientModule() const override;

src/aws-cpp-sdk-core/include/aws/core/http/windows/WinINetSyncHttpClient.h

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ namespace Aws
4949
bool DoReceiveResponse(void* hHttpRequest) const override;
5050
bool DoQueryHeaders(void* hHttpRequest, std::shared_ptr<Aws::Http::HttpResponse>& response, Aws::StringStream& ss, uint64_t& read) const override;
5151
bool DoSendRequest(void* hHttpRequest) const override;
52-
bool DoSendRequest(void* hHttpRequest, const std::shared_ptr<HttpRequest>& request) const override;
5352
bool DoQueryDataAvailable(void* hHttpRequest, uint64_t& available) const override;
5453
bool DoReadData(void* hHttpRequest, char* body, uint64_t size, uint64_t& read) const override;
5554
void* GetClientModule() const override;

src/aws-cpp-sdk-core/include/aws/core/http/windows/WinSyncHttpClient.h

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@
1111
#include <aws/core/auth/AWSAuthSigner.h>
1212
#include <aws/core/http/HttpClient.h>
1313
#include <aws/core/http/standard/StandardHttpResponse.h>
14-
#include <aws/core/utils/UnreferencedParam.h>
1514

1615
namespace Aws
1716
{
@@ -93,10 +92,6 @@ namespace Aws
9392
virtual bool DoReceiveResponse(void* hHttpRequest) const = 0;
9493
virtual bool DoQueryHeaders(void* hHttpRequest, std::shared_ptr<Aws::Http::HttpResponse>& response, Aws::StringStream& ss, uint64_t& read) const = 0;
9594
virtual bool DoSendRequest(void* hHttpRequest) const = 0;
96-
virtual bool DoSendRequest(void* hHttpRequest, const std::shared_ptr<HttpRequest>& request) const {
97-
AWS_UNREFERENCED_PARAM(request);
98-
return DoSendRequest(hHttpRequest);
99-
}
10095
virtual bool DoQueryDataAvailable(void* hHttpRequest, uint64_t& available) const = 0;
10196
virtual bool DoReadData(void* hHttpRequest, char* body, uint64_t size, uint64_t& read) const = 0;
10297
virtual void* GetClientModule() const = 0;

src/aws-cpp-sdk-core/source/http/windows/WinHttpSyncHttpClient.cpp

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -735,25 +735,6 @@ bool WinHttpSyncHttpClient::DoSendRequest(void* hHttpRequest) const
735735
return success;
736736
}
737737

738-
bool WinHttpSyncHttpClient::DoSendRequest(void* hHttpRequest, const std::shared_ptr<HttpRequest>& request) const
739-
{
740-
// Check if this is a Transfer-Encoding: chunked request
741-
if (request->HasTransferEncoding() && request->GetTransferEncoding().find("chunked") != Aws::String::npos) {
742-
// For chunked requests, use WINHTTP_IGNORE_REQUEST_TOTAL_LENGTH
743-
bool success = WinHttpSendRequest(hHttpRequest, NULL, 0, NULL, 0, 0xFFFFFFFF, 0) != 0;
744-
if (!success)
745-
{
746-
DWORD lastError = GetLastError();
747-
AWS_LOGSTREAM_ERROR(GetLogTag(), "WinHttpSendRequest failed for chunked request. Error: " << lastError << " (0x" << std::hex << lastError << std::dec << ")");
748-
AzWinHttpLogLastError("WinHttpSendRequest");
749-
}
750-
return success;
751-
} else {
752-
// For regular requests, use the original method
753-
return DoSendRequest(hHttpRequest);
754-
}
755-
}
756-
757738
bool WinHttpSyncHttpClient::DoQueryDataAvailable(void* hHttpRequest, uint64_t& available) const
758739
{
759740
return (WinHttpQueryDataAvailable(hHttpRequest, (LPDWORD)&available) != 0);

src/aws-cpp-sdk-core/source/http/windows/WinINetSyncHttpClient.cpp

Lines changed: 0 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -216,21 +216,6 @@ bool WinINetSyncHttpClient::DoSendRequest(void* hHttpRequest) const
216216
return (HttpSendRequestEx(hHttpRequest, NULL, NULL, 0, 0) != 0);
217217
}
218218

219-
bool WinINetSyncHttpClient::DoSendRequest(void* hHttpRequest, const std::shared_ptr<HttpRequest>& request) const
220-
{
221-
// Check if this is a Transfer-Encoding: chunked request
222-
if (request->HasTransferEncoding() && request->GetTransferEncoding().find("chunked") != Aws::String::npos) {
223-
// For chunked encoding, use HttpSendRequestEx with unknown total length
224-
INTERNET_BUFFERSA buffers = {0};
225-
buffers.dwStructSize = sizeof(INTERNET_BUFFERSA);
226-
buffers.dwBufferTotal = 0; // Unknown total length for chunked
227-
return (HttpSendRequestExA(hHttpRequest, &buffers, NULL, 0, 0) != 0);
228-
} else {
229-
// For regular requests, use the simple HttpSendRequestEx
230-
return (HttpSendRequestExA(hHttpRequest, NULL, NULL, 0, 0) != 0);
231-
}
232-
}
233-
234219
bool WinINetSyncHttpClient::DoQueryDataAvailable(void* hHttpRequest, uint64_t& available) const
235220
{
236221
return (InternetQueryDataAvailable(hHttpRequest, (LPDWORD)&available, /*reserved*/ 0, /*reserved*/ 0) != 0);

src/aws-cpp-sdk-core/source/http/windows/WinSyncHttpClient.cpp

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -98,13 +98,10 @@ void WinSyncHttpClient::AddHeadersToRequest(const std::shared_ptr<HttpRequest>&
9898
bool WinSyncHttpClient::StreamPayloadToRequest(const std::shared_ptr<HttpRequest>& request, void* hHttpRequest, Aws::Utils::RateLimits::RateLimiterInterface* writeLimiter) const
9999
{
100100
bool success = true;
101+
bool isChunked = request->HasTransferEncoding() && request->GetTransferEncoding() == Aws::Http::CHUNKED_VALUE;
101102
auto payloadStream = request->GetContentBody();
102103
if(payloadStream)
103104
{
104-
// Check if this is AWS chunked encoding
105-
bool isChunked = request->HasHeader("content-encoding") &&
106-
request->GetHeaderValue("content-encoding").find("aws-chunked") != Aws::String::npos;
107-
108105
uint64_t bytesWritten;
109106
uint64_t bytesToRead = HTTP_REQUEST_WRITE_BUFFER_LENGTH;
110107
auto startingPos = payloadStream->tellg();
@@ -148,10 +145,9 @@ bool WinSyncHttpClient::StreamPayloadToRequest(const std::shared_ptr<HttpRequest
148145
payloadStream->seekg(startingPos, payloadStream->beg);
149146
}
150147

151-
// For chunked requests, finalize the transfer
152-
if (success && request->HasTransferEncoding() && request->GetTransferEncoding().find("chunked") != Aws::String::npos)
148+
if (success && isChunked)
153149
{
154-
FinalizeWriteData(hHttpRequest);
150+
FinalizeWriteData(hHttpRequest);
155151
}
156152

157153
if(success)
@@ -360,7 +356,7 @@ std::shared_ptr<HttpResponse> WinSyncHttpClient::MakeRequest(const std::shared_p
360356

361357
AddHeadersToRequest(request, hHttpRequest);
362358
OverrideOptionsOnRequestHandle(hHttpRequest);
363-
if (DoSendRequest(hHttpRequest, request) && StreamPayloadToRequest(request, hHttpRequest, writeLimiter))
359+
if (DoSendRequest(hHttpRequest) && StreamPayloadToRequest(request, hHttpRequest, writeLimiter))
364360
{
365361
success = BuildSuccessResponse(request, response, hHttpRequest, readLimiter);
366362
}

0 commit comments

Comments
 (0)