From b9f7ef3eee3ecc998d155d1a34c3093879f2aab8 Mon Sep 17 00:00:00 2001 From: Richard Wang Date: Tue, 26 May 2026 12:50:15 -0700 Subject: [PATCH 1/2] Rewind after truncate --- gems/smithy-client/lib/smithy-client/http/response.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/gems/smithy-client/lib/smithy-client/http/response.rb b/gems/smithy-client/lib/smithy-client/http/response.rb index aca58c34b..e354fcbe0 100644 --- a/gems/smithy-client/lib/smithy-client/http/response.rb +++ b/gems/smithy-client/lib/smithy-client/http/response.rb @@ -151,6 +151,7 @@ def reset @status_code = 0 @headers.clear @body.truncate(0) + @body.rewind @error = nil end From 06b35927f0de13c2899b4fcad591c754c72183d4 Mon Sep 17 00:00:00 2001 From: Richard Wang Date: Tue, 26 May 2026 13:25:54 -0700 Subject: [PATCH 2/2] Add unit test --- .../spec/smithy-client/http/response_spec.rb | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/gems/smithy-client/spec/smithy-client/http/response_spec.rb b/gems/smithy-client/spec/smithy-client/http/response_spec.rb index e8dc75e7b..f619d2b49 100644 --- a/gems/smithy-client/spec/smithy-client/http/response_spec.rb +++ b/gems/smithy-client/spec/smithy-client/http/response_spec.rb @@ -72,6 +72,16 @@ module Http expect(response.status_code).to eq(0) expect(response.error).to be_nil end + + it 'rewinds the body position so subsequent writes start at the beginning' do + subject.signal_data('first response body') + subject.signal_done + subject.body.read + subject.reset + subject.signal_data('second response body') + subject.signal_done + expect(subject.body.read).to eq('second response body') + end end describe '#signal_headers' do