aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller/response.rb
diff options
context:
space:
mode:
authorPratik Naik <pratiknaik@gmail.com>2008-10-23 17:44:02 +0530
committerPratik Naik <pratiknaik@gmail.com>2008-10-23 17:44:02 +0530
commit079b5bf7a5e95c9e9c106b1ad460cc91a00e7b53 (patch)
treeb816993d25044128b9f6e2c78868622a0181e76d /actionpack/lib/action_controller/response.rb
parent50820a9de1dbcc1568b4404cf358a1acf9ee39aa (diff)
parent896058b485653bc8a1b5ccbc1248267880a8c911 (diff)
downloadrails-079b5bf7a5e95c9e9c106b1ad460cc91a00e7b53.tar.gz
rails-079b5bf7a5e95c9e9c106b1ad460cc91a00e7b53.tar.bz2
rails-079b5bf7a5e95c9e9c106b1ad460cc91a00e7b53.zip
Merge commit 'mainstream/master'
Diffstat (limited to 'actionpack/lib/action_controller/response.rb')
-rw-r--r--actionpack/lib/action_controller/response.rb33
1 files changed, 21 insertions, 12 deletions
diff --git a/actionpack/lib/action_controller/response.rb b/actionpack/lib/action_controller/response.rb
index b440065482..559c38efd0 100644
--- a/actionpack/lib/action_controller/response.rb
+++ b/actionpack/lib/action_controller/response.rb
@@ -106,8 +106,14 @@ module ActionController # :nodoc:
headers['Last-Modified'] = utc_time.httpdate
end
- def etag; headers['ETag'] end
- def etag?; headers.include?('ETag') end
+ def etag
+ headers['ETag']
+ end
+
+ def etag?
+ headers.include?('ETag')
+ end
+
def etag=(etag)
headers['ETag'] = %("#{Digest::MD5.hexdigest(ActiveSupport::Cache.expand_cache_key(etag))}")
end
@@ -135,16 +141,19 @@ module ActionController # :nodoc:
end
private
- def handle_conditional_get!
- if nonempty_ok_response?
- self.etag ||= body
- if request && request.etag_matches?(etag)
- self.status = '304 Not Modified'
- self.body = ''
- end
- end
-
- set_conditional_cache_control! if etag? || last_modified?
+ def handle_conditional_get!
+ if etag? || last_modified?
+ set_conditional_cache_control!
+ elsif nonempty_ok_response?
+ self.etag = body
+
+ if request && request.etag_matches?(etag)
+ self.status = '304 Not Modified'
+ self.body = ''
+ end
+
+ set_conditional_cache_control!
+ end
end
def nonempty_ok_response?