Merged updates from trunk into stable branch
[feedcatcher.git] / vendor / rails / actionpack / lib / action_controller / vendor / rack-1.0 / rack / lock.rb
diff --git a/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/lock.rb b/vendor/rails/actionpack/lib/action_controller/vendor/rack-1.0/rack/lock.rb
new file mode 100644 (file)
index 0000000..9323852
--- /dev/null
@@ -0,0 +1,16 @@
+module Rack
+  class Lock
+    FLAG = 'rack.multithread'.freeze
+
+    def initialize(app, lock = Mutex.new)
+      @app, @lock = app, lock
+    end
+
+    def call(env)
+      old, env[FLAG] = env[FLAG], false
+      @lock.synchronize { @app.call(env) }
+    ensure
+      env[FLAG] = old
+    end
+  end
+end