def send_chunks
			send_headers unless @sent_headers
			while chunk = @chunks.shift
				raise "last chunk already sent" if @last_chunk_sent
				text = chunk.is_a?(Hash) ? chunk[:text] : chunk.to_s
				send_data "#{format("%x", text.length).upcase}\r\n#{text}\r\n"
				@last_chunk_sent = true if text.length == 0
			end
		end
def send_chunks
			send_headers unless @sent_headers
			while chunk = @chunks.shift
				raise "last chunk already sent" if @last_chunk_sent
				text = chunk.is_a?(Hash) ? chunk[:text] : chunk.to_s
				send_data "#{format("%x", text.length).upcase}\r\n#{text}\r\n"
				@last_chunk_sent = true if text.length == 0
			end
		end
send the contents of the chunk list and clear it out.
 ASSUMES that headers have been sent.
 Does NOT close the connection.
 Can be called multiple times.
 According to RFC2616, phg 3.6.1, the last chunk will be zero length.
 But some caller could accidentally set a zero-length chunk in the middle
 of the stream. If that should happen, raise an exception.
 The reason for supporting chunks that are hashes instead of just strings
 is to enable someday supporting chunk-extension codes (cf the RFC).
 TODO!!! We're not supporting the final entity-header that may be
 transmitted after the last (zero-length) chunk.