lib/excon/response.rb in excon-0.6.1 vs lib/excon/response.rb in excon-0.6.2
- old
+ new
@@ -22,11 +22,11 @@
response = new(:status => socket.readline[9, 11].to_i)
block_given = block_given?
until ((data = socket.readline).chop!).empty?
key, value = data.split(': ', 2)
- response.headers[key] = value
+ response.headers[key] = ([*response.headers[key]] << value).compact.join(', ')
if key.casecmp('Content-Length') == 0
content_length = value.to_i
elsif (key.casecmp('Transfer-Encoding') == 0) && (value.casecmp('chunked') == 0)
transfer_encoding_chunked = true
elsif (key.casecmp('Connection') == 0) && (value.casecmp('close') == 0)
@@ -47,10 +47,11 @@
while (chunk_size = socket.readline.chop!.to_i(16)) > 0
yield(socket.read(chunk_size + 2).chop!, nil, content_length)
end
socket.read(2)
elsif connection_close
- yield(socket.read, remaining, content_length)
+ remaining = socket.read
+ yield(remaining, remaining.length, content_length)
else
remaining = content_length
while remaining > 0
yield(socket.read([CHUNK_SIZE, remaining].min), [remaining - CHUNK_SIZE, 0].max, content_length)
remaining -= CHUNK_SIZE