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)