Fixed #10470 -- Fixed a race condition in middleware initialization.

Thanks to Travis Terry and mrts.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@10036 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Malcolm Tredinnick 2009-03-12 07:27:47 +00:00
parent a152909069
commit 6483fdf1fa
1 changed files with 6 additions and 1 deletions

View File

@ -24,10 +24,11 @@ class BaseHandler(object):
""" """
from django.conf import settings from django.conf import settings
from django.core import exceptions from django.core import exceptions
self._request_middleware = []
self._view_middleware = [] self._view_middleware = []
self._response_middleware = [] self._response_middleware = []
self._exception_middleware = [] self._exception_middleware = []
request_middleware = []
for middleware_path in settings.MIDDLEWARE_CLASSES: for middleware_path in settings.MIDDLEWARE_CLASSES:
try: try:
dot = middleware_path.rindex('.') dot = middleware_path.rindex('.')
@ -57,6 +58,10 @@ class BaseHandler(object):
if hasattr(mw_instance, 'process_exception'): if hasattr(mw_instance, 'process_exception'):
self._exception_middleware.insert(0, mw_instance.process_exception) self._exception_middleware.insert(0, mw_instance.process_exception)
# We only assign to this when initialization is complete as it is used
# as a flag for initialization being complete.
self._request_middleware = request_middleware
def get_response(self, request): def get_response(self, request):
"Returns an HttpResponse object for the given HttpRequest" "Returns an HttpResponse object for the given HttpRequest"
from django.core import exceptions, urlresolvers from django.core import exceptions, urlresolvers