Code

Handle OPTIONS http request method in wsgi handler, fixes issue2550587.
[roundup.git] / roundup / cgi / wsgi_handler.py
index 3415d8cedd2a0a33a4f270570bf91b9096bb9569..27bc890cc08f68ef4f600b74c5acdc8543932be3 100644 (file)
@@ -10,7 +10,7 @@ import weakref
 
 import roundup.instance
 from roundup.cgi import TranslationService
-from BaseHTTPServer import BaseHTTPRequestHandler
+from BaseHTTPServer import BaseHTTPRequestHandler, DEFAULT_ERROR_MESSAGE
 
 
 class Writer(object):
@@ -43,6 +43,14 @@ class RequestDispatcher(object):
         request.wfile = Writer(request)
         request.__wfile = None
 
+        if environ ['REQUEST_METHOD'] == 'OPTIONS':
+            code = 501
+            message, explain = BaseHTTPRequestHandler.responses[code]
+            request.start_response([('Content-Type', 'text/html'),
+                ('Connection', 'close')], code)
+            request.wfile.write(DEFAULT_ERROR_MESSAGE % locals())
+            return []
+
         tracker = roundup.instance.open(self.home, not self.debug)
 
         # need to strip the leading '/'