diff options
author | Pratik Naik <pratiknaik@gmail.com> | 2008-10-23 17:44:02 +0530 |
---|---|---|
committer | Pratik Naik <pratiknaik@gmail.com> | 2008-10-23 17:44:02 +0530 |
commit | 079b5bf7a5e95c9e9c106b1ad460cc91a00e7b53 (patch) | |
tree | b816993d25044128b9f6e2c78868622a0181e76d /actionpack/lib/action_controller/response.rb | |
parent | 50820a9de1dbcc1568b4404cf358a1acf9ee39aa (diff) | |
parent | 896058b485653bc8a1b5ccbc1248267880a8c911 (diff) | |
download | rails-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.rb | 33 |
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? |