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 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