Code

Handle OPTIONS http request method in wsgi handler, fixes issue2550587.
authorschlatterbeck <schlatterbeck@57a73879-2fb5-44c3-a270-3262357dd7e2>
Tue, 1 Dec 2009 09:09:11 +0000 (09:09 +0000)
committerschlatterbeck <schlatterbeck@57a73879-2fb5-44c3-a270-3262357dd7e2>
Tue, 1 Dec 2009 09:09:11 +0000 (09:09 +0000)
Thanks to Thomas Arendsen Hein for reporting and to Intevation for
funding the fix.

git-svn-id: http://svn.roundup-tracker.org/svnroot/roundup/roundup/trunk@4396 57a73879-2fb5-44c3-a270-3262357dd7e2

CHANGES.txt
roundup/cgi/wsgi_handler.py

index 6c85c1706940fe1dd21eb696b480ed5a351bacc5..d219cdd51e3c1986602b0365ff6353459ed8767a 100644 (file)
@@ -23,8 +23,11 @@ Fixes:
   fix.
 - Fix traceback on .../msgN/ url, this requests the file content and for
   apache mod_wsgi produced a traceback because the mime type is None for
-  messages, fixes issue2550586, thanks to ThomasAH for reporting and to
-  Intevation for funding the fix.
+  messages, fixes issue2550586, thanks to Thomas Arendsen Hein for
+  reporting and to Intevation for funding the fix.
+- Handle OPTIONS http request method in wsgi handler, fixes issue2550587.
+  Thanks to Thomas Arendsen Hein for reporting and to Intevation for
+  funding the fix.
 
 
 2009-10-09 1.4.10 (r4374)
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 '/'