提交 86abd688 编写于 作者: J Jeremy Kemper

Ensure rack.multithread is set back to original value. Accept external lock.

上级 788ab845
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
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册