diff options
author | Bernard Potocki <bernard.potocki@imanel.org> | 2013-03-14 09:13:10 +0100 |
---|---|---|
committer | Bernard Potocki <bernard.potocki@imanel.org> | 2013-03-14 09:13:10 +0100 |
commit | 2651b597f2491303e143aa063f3f231bf751c382 (patch) | |
tree | cb94d5f2c7a8e5c83517c6b1481f7192057b14ff /actionpack | |
parent | 36f7732e820ce4d3c4a46bd0a1b15fd8902467b3 (diff) | |
download | rails-2651b597f2491303e143aa063f3f231bf751c382.tar.gz rails-2651b597f2491303e143aa063f3f231bf751c382.tar.bz2 rails-2651b597f2491303e143aa063f3f231bf751c382.zip |
Handle conditional get in live requests - this will prevent error when using stale on live streams(issue #9636)
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/lib/action_controller/metal/live.rb | 4 | ||||
-rw-r--r-- | actionpack/test/controller/live_stream_test.rb | 15 |
2 files changed, 19 insertions, 0 deletions
diff --git a/actionpack/lib/action_controller/metal/live.rb b/actionpack/lib/action_controller/metal/live.rb index 9d628c916f..fb664a69dd 100644 --- a/actionpack/lib/action_controller/metal/live.rb +++ b/actionpack/lib/action_controller/metal/live.rb @@ -98,6 +98,10 @@ module ActionController def merge_default_headers(original, default) Header.new self, super end + + def handle_conditional_get! + super unless committed? + end end def process(name) diff --git a/actionpack/test/controller/live_stream_test.rb b/actionpack/test/controller/live_stream_test.rb index 3b1a07d7af..5755444a65 100644 --- a/actionpack/test/controller/live_stream_test.rb +++ b/actionpack/test/controller/live_stream_test.rb @@ -48,6 +48,10 @@ module ActionController end response.stream.close end + + def with_stale + render :text => 'stale' if stale?(:etag => "123") + end end tests TestController @@ -117,5 +121,16 @@ module ActionController assert_equal 'zomg', response.body assert response.stream.closed?, 'stream should be closed' end + + def test_stale_without_etag + get :with_stale + assert_equal 200, @response.status.to_i + end + + def test_stale_with_etag + @request.if_none_match = Digest::MD5.hexdigest("123") + get :with_stale + assert_equal 304, @response.status.to_i + end end end |