summaryrefslogtreecommitdiff
path: root/lib/net
diff options
context:
space:
mode:
Diffstat (limited to 'lib/net')
-rw-r--r--lib/net/http.rb2
-rw-r--r--lib/net/protocol.rb27
2 files changed, 18 insertions, 11 deletions
diff --git a/lib/net/http.rb b/lib/net/http.rb
index 8925c498a2..5b387f3a7e 100644
--- a/lib/net/http.rb
+++ b/lib/net/http.rb
@@ -597,8 +597,8 @@ S
key = canonical(k)
if tmp.key? key then
$stderr.puts "WARNING: duplicated HTTP header: #{k}" if $VERBOSE
- tmp[ key ] = v.strip
end
+ tmp[ key ] = v.strip
end
@u_header.update tmp
end
diff --git a/lib/net/protocol.rb b/lib/net/protocol.rb
index e2bb1f47ca..7f99a64f97 100644
--- a/lib/net/protocol.rb
+++ b/lib/net/protocol.rb
@@ -504,9 +504,13 @@ module Net
@pipe << "reading #{len} bytes...\n" if @pipe; pipeoff
rsize = 0
- while rsize + @buffer.size < len do
- rsize += writeinto( dest, @buffer.size )
- fill_rbuf
+ begin
+ while rsize + @buffer.size < len do
+ rsize += writeinto( dest, @buffer.size )
+ fill_rbuf
+ end
+ rescue EOFError
+ len = rsize
end
writeinto( dest, len - rsize )
@@ -534,14 +538,17 @@ module Net
def readuntil( target )
- while true do
- idx = @buffer.index( target )
- break if idx
- fill_rbuf
- end
-
dest = ''
- writeinto( dest, idx + target.size )
+ begin
+ while true do
+ idx = @buffer.index( target )
+ break if idx
+ fill_rbuf
+ end
+ writeinto( dest, idx + target.size )
+ rescue EOFError
+ writeinto( dest, @buffer.size )
+ end
dest
end