about summary refs log tree commit homepage
path: root/lib/rainbows/ev_core.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rainbows/ev_core.rb')
-rw-r--r--lib/rainbows/ev_core.rb14
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/rainbows/ev_core.rb b/lib/rainbows/ev_core.rb
index 5ca693b..dbcdeba 100644
--- a/lib/rainbows/ev_core.rb
+++ b/lib/rainbows/ev_core.rb
@@ -6,6 +6,7 @@ module Rainbows
   module EvCore
     include Unicorn
     include Rainbows::Const
+    include Rainbows::Response
     G = Rainbows::G
     NULL_IO = Unicorn::HttpRequest::NULL_IO
 
@@ -33,6 +34,19 @@ module Rainbows
         quit
     end
 
+    # returns whether to enable response chunking for autochunk models
+    def stream_response_headers(status, headers)
+      if headers['Content-Length']
+        rv = false
+      else
+        rv = !!(headers['Transfer-Encoding'] =~ %r{\Achunked\z}i)
+        rv = false if headers.delete('X-Rainbows-Autochunk') == 'no'
+      end
+      headers[CONNECTION] = CLOSE # TODO: allow keep-alive
+      write(response_header(status, headers))
+      rv
+    end
+
     # TeeInput doesn't map too well to this right now...
     def on_read(data)
       case @state