Skip to content

Commit c72d802

Browse files
committed
fix window integration test
1 parent 09954a3 commit c72d802

File tree

1 file changed

+15
-3
lines changed

1 file changed

+15
-3
lines changed

src/aws-cpp-sdk-core/source/http/interceptor/ChunkingInterceptor.cpp

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@ namespace Http {
1414
class AwsChunkedIOStream : public Aws::IOStream {
1515
public:
1616
AwsChunkedIOStream(const std::shared_ptr<Aws::IOStream>& originalBody, Aws::Http::HttpRequest* request)
17-
: Aws::IOStream(&m_streambuf), m_chunkStream(request, originalBody) {}
17+
: Aws::IOStream(nullptr), m_chunkStream(request, originalBody), m_streambuf(m_chunkStream) {
18+
rdbuf(&m_streambuf);
19+
}
1820

1921
private:
2022
class ChunkedStreamBuf : public std::streambuf {
@@ -42,7 +44,7 @@ class AwsChunkedIOStream : public Aws::IOStream {
4244
};
4345

4446
Aws::Utils::Stream::AwsChunkedStream<> m_chunkStream;
45-
ChunkedStreamBuf m_streambuf{m_chunkStream};
47+
ChunkedStreamBuf m_streambuf;
4648
};
4749

4850
ChunkingInterceptor::ModifyRequestOutcome ChunkingInterceptor::ModifyBeforeSigning(
@@ -62,7 +64,14 @@ ChunkingInterceptor::ModifyRequestOutcome ChunkingInterceptor::ModifyBeforeSigni
6264

6365
request->AddContentBody(chunkedBody);
6466

65-
smithy::client::Utils::AppendHeaderValueToRequest(request, CONTENT_ENCODING_HEADER, AWS_CHUNKED_VALUE);
67+
// Only remove Content-Length if it wasn't explicitly set
68+
// If Content-Length exists, keep it and don't use Transfer-Encoding: chunked
69+
if (!request->HasHeader(Aws::Http::CONTENT_LENGTH_HEADER)) {
70+
request->SetHeaderValue("Transfer-Encoding", "chunked");
71+
}
72+
73+
// Always set aws-chunked content encoding for checksum validation
74+
smithy::client::Utils::AppendHeaderValueToRequest(request, Aws::Http::CONTENT_ENCODING_HEADER, Aws::Http::AWS_CHUNKED_VALUE);
6675

6776
return request;
6877
}
@@ -76,6 +85,9 @@ bool ChunkingInterceptor::ShouldApplyAwsChunking(const std::shared_ptr<Aws::Http
7685
if (!request || !request->GetContentBody()) {
7786
return false;
7887
}
88+
89+
// Apply aws-chunked encoding for all requests with checksums
90+
// This replaces the aws-chunked logic removed from HTTP clients
7991
const auto& hashPair = request->GetRequestHash();
8092
return hashPair.second != nullptr;
8193
}

0 commit comments

Comments
 (0)