lib/kcar/response.rb in kcar-0.1.0 vs lib/kcar/response.rb in kcar-0.1.1
- old
+ new
@@ -105,13 +105,12 @@
end
# since Rack does not provide a way to explicitly send trailers
# in the response, we'll just yield a stringified version to our
# server and pretend it's part of the body.
- if trailers = parser.extract_trailers(hdr)
- yield(trailers.map! { |k,v| "#{k}: #{v}\r\n" }.join("") << "\r\n")
- end
+ trailers = parser.extract_trailers(hdr)
+ yield(trailers.map! { |k,v| "#{k}: #{v}\r\n" }.join("") << CRLF)
end
def each_until_eof(&block)
yield buf unless buf.empty?
# easy, just read and write everything until EOFError
@@ -138,12 +137,16 @@
end
len -= dst.size
yield dst
end
- while len > 0
- len -= sock.readpartial(len > READ_SIZE ? CHUNK_SIZE : len, dst).size
- yield dst
+
+ if len > 0
+ begin
+ len -= sock.readpartial(len > READ_SIZE ? READ_SIZE : len, dst).size
+ yield dst
+ end while len > 0
+ dst.respond_to?(:clear) ? dst.clear : self.buf = ''
end
end
end
def each_unchunk(&block)