summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-ruby/actionpack/files/actionpack-2.3.8-custom-cookie-fix.patch')
-rw-r--r--dev-ruby/actionpack/files/actionpack-2.3.8-custom-cookie-fix.patch81
1 files changed, 81 insertions, 0 deletions
diff --git a/dev-ruby/actionpack/files/actionpack-2.3.8-custom-cookie-fix.patch b/dev-ruby/actionpack/files/actionpack-2.3.8-custom-cookie-fix.patch
new file mode 100644
index 000000000000..ecfe4d68546c
--- /dev/null
+++ b/dev-ruby/actionpack/files/actionpack-2.3.8-custom-cookie-fix.patch
@@ -0,0 +1,81 @@
+From 09e81c7069341ab219ddbd74817feea4a09b8172 Mon Sep 17 00:00:00 2001
+From: Jesse Storimer <jstorimer@gmail.com>
+Date: Tue, 1 Jun 2010 08:35:25 -0400
+Subject: [PATCH] CookieStore should preserve the Set-Cookie header Array [#4743 state:resolved]
+
+---
+ .../lib/action_controller/session/cookie_store.rb | 7 ++-----
+ .../test/controller/session/cookie_store_test.rb | 18 ++++++++++++++++--
+ 2 files changed, 18 insertions(+), 7 deletions(-)
+
+diff --git a/actionpack/lib/action_controller/session/cookie_store.rb b/actionpack/lib/action_controller/session/cookie_store.rb
+index 3d21e81..2fcee56 100644
+--- a/actionpack/lib/action_controller/session/cookie_store.rb
++++ b/actionpack/lib/action_controller/session/cookie_store.rb
+@@ -114,11 +114,8 @@ module ActionController
+ end
+
+ cookie = build_cookie(@key, cookie.merge(options))
+- unless headers[HTTP_SET_COOKIE].blank?
+- headers[HTTP_SET_COOKIE] << "\n#{cookie}"
+- else
+- headers[HTTP_SET_COOKIE] = cookie
+- end
++ headers[HTTP_SET_COOKIE] = [] if headers[HTTP_SET_COOKIE].blank?
++ headers[HTTP_SET_COOKIE] << cookie
+ end
+
+ [status, headers, body]
+diff --git a/actionpack/test/controller/session/cookie_store_test.rb b/actionpack/test/controller/session/cookie_store_test.rb
+index 5ef8eec..02e9ed2 100644
+--- a/actionpack/test/controller/session/cookie_store_test.rb
++++ b/actionpack/test/controller/session/cookie_store_test.rb
+@@ -44,6 +44,12 @@ class CookieStoreTest < ActionController::IntegrationTest
+ head :ok
+ end
+
++ def set_session_value_and_cookie
++ cookies["foo"] = "bar"
++ session[:foo] = "bar"
++ render :text => Rack::Utils.escape(Verifier.generate(session.to_hash))
++ end
++
+ def rescue_action(e) raise end
+ end
+
+@@ -96,7 +102,7 @@ class CookieStoreTest < ActionController::IntegrationTest
+ with_test_route_set do
+ get '/set_session_value'
+ assert_response :success
+- assert_equal "_myapp_session=#{response.body}; path=/; HttpOnly",
++ assert_equal ["_myapp_session=#{response.body}; path=/; HttpOnly"],
+ headers['Set-Cookie']
+ end
+ end
+@@ -164,7 +170,7 @@ class CookieStoreTest < ActionController::IntegrationTest
+ get '/set_session_value'
+ assert_response :success
+ session_payload = response.body
+- assert_equal "_myapp_session=#{response.body}; path=/; HttpOnly",
++ assert_equal ["_myapp_session=#{response.body}; path=/; HttpOnly"],
+ headers['Set-Cookie']
+
+ get '/call_reset_session'
+@@ -193,6 +199,14 @@ class CookieStoreTest < ActionController::IntegrationTest
+ end
+ end
+
++ def test_setting_session_value_and_cookie
++ with_test_route_set do
++ get '/set_session_value_and_cookie'
++ assert_response :success
++ assert_equal({"_myapp_session" => response.body, "foo" => "bar"}, cookies)
++ end
++ end
++
+ private
+ def with_test_route_set
+ with_routing do |set|
+--
+1.7.1
+