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