diff options
author | Chmouel Boudjnah <chmouel@enovance.com> | 2013-02-18 11:46:15 +0100 |
---|---|---|
committer | Chmouel Boudjnah <chmouel@enovance.com> | 2013-02-22 13:55:47 +0100 |
commit | 0b4ee31f0f71d62c4955847ec775dc0541e5a2c6 (patch) | |
tree | b5ee93f0139473199f9c99d3197db64e95a0bc6b /keystone/common/wsgi.py | |
parent | 9ec12e2e54e3cca84fda0fcc63a849eebcaafe96 (diff) | |
download | keystone-0b4ee31f0f71d62c4955847ec775dc0541e5a2c6.tar.gz keystone-0b4ee31f0f71d62c4955847ec775dc0541e5a2c6.tar.xz keystone-0b4ee31f0f71d62c4955847ec775dc0541e5a2c6.zip |
catch errors in wsgi.Middleware.
- Catch errors in wsgi.Middleware like done in wsgi.Applications.
- Add tests for test_middleware.
- Fixes bug 1128379.
Change-Id: I2e95595c392631aebf2682d4506e4dde78cd6d69
Diffstat (limited to 'keystone/common/wsgi.py')
-rw-r--r-- | keystone/common/wsgi.py | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/keystone/common/wsgi.py b/keystone/common/wsgi.py index 4c9a90bf..72133f40 100644 --- a/keystone/common/wsgi.py +++ b/keystone/common/wsgi.py @@ -347,11 +347,21 @@ class Middleware(Application): @webob.dec.wsgify(RequestClass=Request) def __call__(self, request): - response = self.process_request(request) - if response: - return response - response = request.get_response(self.application) - return self.process_response(request, response) + try: + response = self.process_request(request) + if response: + return response + response = request.get_response(self.application) + return self.process_response(request, response) + except exception.Error as e: + LOG.warning(e) + return render_exception(e) + except TypeError as e: + LOG.exception(e) + return render_exception(exception.ValidationError(e)) + except Exception as e: + LOG.exception(e) + return render_exception(exception.UnexpectedError(exception=e)) class Debug(Middleware): |