From: W. Trevor King Date: Mon, 3 Sep 2012 13:34:35 +0000 (-0400) Subject: util:wsgi: add HandlerErrorApp to return HTTP errors. X-Git-Tag: 1.1.0~97 X-Git-Url: http://git.tremily.us/?a=commitdiff_plain;h=7c1db6f55380c3511ac305a6fe3c16315216b527;p=be.git util:wsgi: add HandlerErrorApp to return HTTP errors. --- diff --git a/libbe/util/wsgi.py b/libbe/util/wsgi.py index 0a3ebf9..0753295 100644 --- a/libbe/util/wsgi.py +++ b/libbe/util/wsgi.py @@ -267,6 +267,18 @@ class ExceptionApp (WSGI_Middleware): raise +class HandlerErrorApp (WSGI_Middleware): + """Catch HandlerErrors and return HTTP error pages. + """ + def _call(self, environ, start_response): + try: + return self.app(environ, start_response) + except HandlerError, e: + self.log_request(environ, status=str(e), bytes=0) + start_response('{} {}'.format(e.code, e.msg), e.headers) + return [] + + class BEExceptionApp (WSGI_Middleware): """Translate BE-specific exceptions """ @@ -620,6 +632,7 @@ class ServerCommand (libbe.command.base.Command): 'port':params['port'], } app = BEExceptionApp(app, logger=self.logger) + app = HandlerErrorApp(app, logger=self.logger) app = ExceptionApp(app, logger=self.logger) if params['ssl'] == True: details['protocol'] = 'HTTPS'