Author: rjollos
Date: Thu Jun 20 23:12:33 2013
New Revision: 1495232
URL: http://svn.apache.org/r1495232
Log:
Fixes #513: Fix HTTP protocol violation on factory misconfiguration. Patch by
Olemis.
Modified:
bloodhound/trunk/trac/trac/hooks.py
bloodhound/trunk/trac/trac/web/main.py
Modified: bloodhound/trunk/trac/trac/hooks.py
URL:
http://svn.apache.org/viewvc/bloodhound/trunk/trac/trac/hooks.py?rev=1495232&r1=1495231&r2=1495232&view=diff
==============================================================================
--- bloodhound/trunk/trac/trac/hooks.py (original)
+++ bloodhound/trunk/trac/trac/hooks.py Thu Jun 20 23:12:33 2013
@@ -215,7 +215,7 @@ class DefaultBootstrapHandler(BootstrapH
factory = None
try:
factory = request_factory(self.global_env)
- except AttributeError:
+ except Exception:
pass
return factory().create_request(env, environ, start_response) if
factory \
else RequestWithSession(environ, start_response)
Modified: bloodhound/trunk/trac/trac/web/main.py
URL:
http://svn.apache.org/viewvc/bloodhound/trunk/trac/trac/web/main.py?rev=1495232&r1=1495231&r2=1495232&view=diff
==============================================================================
--- bloodhound/trunk/trac/trac/web/main.py (original)
+++ bloodhound/trunk/trac/trac/web/main.py Thu Jun 20 23:12:33 2013
@@ -392,7 +392,7 @@ def dispatch_request(environ, start_resp
except Exception, e:
log = environ.get('wsgi.errors')
if log:
- log.write("[FAIL] [Trac] entry point '%s'. Reason %s" %
+ log.write("[FAIL] [Trac] Entry point '%s'. Reason %s" %
(bootstrap_ep, repr(exception_to_unicode(e))))
if bootstrap is None:
from trac.hooks import default_bootstrap_handler
@@ -405,8 +405,11 @@ def dispatch_request(environ, start_resp
env = bootstrap.open_environment(environ, start_response)
except RequestDone:
return []
- except EnvironmentError:
- raise
+ except EnvironmentError, e:
+ if e.__class__ is EnvironmentError:
+ raise
+ else:
+ env_error = e
except Exception, e:
env_error = e
else:
@@ -436,8 +439,19 @@ def dispatch_request(environ, start_resp
run_once = environ['wsgi.run_once']
- req = bootstrap.create_request(env, environ, start_response) \
- if env is not None else Request(environ, start_response)
+ req = None
+ if env_error is None:
+ try:
+ req = bootstrap.create_request(env, environ, start_response) \
+ if env is not None else Request(environ, start_response)
+ except Exception:
+ log = environ.get('wsgi.errors')
+ if log:
+ log.write("[FAIL] [Trac] Entry point '%s' "
+ "Method 'create_request' Reason %s" %
+ (bootstrap_ep, repr(exception_to_unicode(e))))
+ if req is None:
+ req = RequestWithSession(environ, start_response)
translation.make_activable(lambda: req.locale, env.path if env else None)
try:
return _dispatch_request(req, env, env_error)