summary refs log tree commit
path: root/lib/rack/methodoverride.rb
diff options
context:
space:
mode:
authorChris Griego <cgriego@gmail.com>2011-12-06 17:59:31 -0600
committerChris Griego <cgriego@gmail.com>2011-12-06 17:59:31 -0600
commit5f4bb6022a10cab144e4485e61e842b8d14a7936 (patch)
treedc8b2ccae9c4474bc0f0bbee5a5834695485964e /lib/rack/methodoverride.rb
parent39e858d9ab638772f0489bceb94b1f8b1bc212be (diff)
downloadrack-5f4bb6022a10cab144e4485e61e842b8d14a7936.tar.gz
Handle EOFError exception from malformed multipart in MethodOverride middleware
Diffstat (limited to 'lib/rack/methodoverride.rb')
-rw-r--r--lib/rack/methodoverride.rb14
1 files changed, 10 insertions, 4 deletions
diff --git a/lib/rack/methodoverride.rb b/lib/rack/methodoverride.rb
index e1bca56d..48d6afdd 100644
--- a/lib/rack/methodoverride.rb
+++ b/lib/rack/methodoverride.rb
@@ -11,10 +11,7 @@ module Rack
 
     def call(env)
       if env["REQUEST_METHOD"] == "POST"
-        req = Request.new(env)
-        method = req.POST[METHOD_OVERRIDE_PARAM_KEY] ||
-          env[HTTP_METHOD_OVERRIDE_HEADER]
-        method = method.to_s.upcase
+        method = method_override(env)
         if HTTP_METHODS.include?(method)
           env["rack.methodoverride.original_method"] = env["REQUEST_METHOD"]
           env["REQUEST_METHOD"] = method
@@ -23,5 +20,14 @@ module Rack
 
       @app.call(env)
     end
+
+    def method_override(env)
+      req = Request.new(env)
+      method = req.POST[METHOD_OVERRIDE_PARAM_KEY] ||
+        env[HTTP_METHOD_OVERRIDE_HEADER]
+      method.to_s.upcase
+    rescue EOFError
+      ""
+    end
   end
 end