Browse Source

Fixed #15672 -- Refined changes made in r15918. Thanks, vung.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@16082 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Jannis Leidel 14 years ago
parent
commit
12265410ac

+ 1 - 2
django/core/handlers/modpython.py

@@ -179,11 +179,10 @@ class ModPythonHandler(BaseHandler):
             try:
                 request = self.request_class(req)
             except UnicodeDecodeError:
-                logger.warning('Bad Request (UnicodeDecodeError): %s' % request.path,
+                logger.warning('Bad Request (UnicodeDecodeError)',
                     exc_info=sys.exc_info(),
                     extra={
                         'status_code': 400,
-                        'request': request
                     }
                 )
                 response = http.HttpResponseBadRequest()

+ 0 - 1
django/core/handlers/wsgi.py

@@ -265,7 +265,6 @@ class WSGIHandler(base.BaseHandler):
                     exc_info=sys.exc_info(),
                     extra={
                         'status_code': 400,
-                        'request': request
                     }
                 )
                 response = http.HttpResponseBadRequest()

+ 9 - 0
tests/regressiontests/handlers/tests.py

@@ -1,6 +1,8 @@
 from django.utils import unittest
 from django.conf import settings
 from django.core.handlers.wsgi import WSGIHandler
+from django.test import RequestFactory
+
 
 class HandlerTests(unittest.TestCase):
 
@@ -23,3 +25,10 @@ class HandlerTests(unittest.TestCase):
         # Reset settings
         settings.MIDDLEWARE_CLASSES = old_middleware_classes
 
+    def test_bad_path_info(self):
+        """Tests for bug #15672 ('request' referenced before assignment)"""
+        environ = RequestFactory().get('/').environ
+        environ['PATH_INFO'] = '\xed'
+        handler = WSGIHandler()
+        response = handler(environ, lambda *a, **k: None)
+        self.assertEqual(response.status_code, 400)