From 86abd6887dac9ee233740399f9e5758309af512e Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Thu, 18 Dec 2008 14:48:53 -0800 Subject: [PATCH] Ensure rack.multithread is set back to original value. Accept external lock. --- actionpack/lib/action_controller/lock.rb | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/actionpack/lib/action_controller/lock.rb b/actionpack/lib/action_controller/lock.rb index b4b0902f18c87..c50762216e05b 100644 --- a/actionpack/lib/action_controller/lock.rb +++ b/actionpack/lib/action_controller/lock.rb @@ -1,18 +1,16 @@ module ActionController class Lock - def initialize(app) - @app = app - @lock = Mutex.new + FLAG = 'rack.multithread'.freeze + + def initialize(app, lock = Mutex.new) + @app, @lock = app, lock end def call(env) - old_multithread = env["rack.multithread"] - env["rack.multithread"] = false - response = @lock.synchronize do - @app.call(env) - end - env["rack.multithread"] = old_multithread - response + old, env[FLAG] = env[FLAG], false + @lock.synchronize { @app.call(env) } + ensure + env[FLAG] = old end end end