From 36f916ac18ab09b283f188ded1d50f8ada3fd80f Mon Sep 17 00:00:00 2001 From: Brian Hawley Date: Thu, 22 Sep 2022 16:08:59 -0700 Subject: [PATCH] Net::HTTPResponse nil checking Fix nil handling in read_body and stream_check. Fixes: #70 --- lib/net/http/response.rb | 3 ++- test/net/http/test_httpresponse.rb | 35 ++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/lib/net/http/response.rb b/lib/net/http/response.rb index f8b522f1..aaf39636 100644 --- a/lib/net/http/response.rb +++ b/lib/net/http/response.rb @@ -231,6 +231,7 @@ def read_body(dest = nil, &block) @body = nil end @read = true + return if @body.nil? case enc = @body_encoding when Encoding, false, nil @@ -504,7 +505,7 @@ def read_chunked(dest, chunk_data_io) # :nodoc: end def stream_check - raise IOError, 'attempt to read body out of block' if @socket.closed? + raise IOError, 'attempt to read body out of block' if @socket.nil? || @socket.closed? end def procdest(dest, block) diff --git a/test/net/http/test_httpresponse.rb b/test/net/http/test_httpresponse.rb index 394b4c5b..5c48a48e 100644 --- a/test/net/http/test_httpresponse.rb +++ b/test/net/http/test_httpresponse.rb @@ -589,6 +589,41 @@ def test_read_body_string assert_equal 'hello', body end + def test_read_body_receiving_no_body + io = dummy_io(<