From 754c834d427bf3897a562ebe138310f891e70c7e Mon Sep 17 00:00:00 2001 From: "P. Christeas" Date: Mon, 26 Jul 2010 12:33:35 +0300 Subject: [PATCH] websrv_lib: improve sending of internal error bzr revid: p_christ@hol.gr-20100726093335-n8s6cpjmi2252myf --- bin/service/websrv_lib.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/bin/service/websrv_lib.py b/bin/service/websrv_lib.py index ee74512c5ef..e9d7bafdf12 100644 --- a/bin/service/websrv_lib.py +++ b/bin/service/websrv_lib.py @@ -169,6 +169,9 @@ class FixSendError: self.send_header('Connection', 'close') self.send_header('Content-Length', len(content) or 0) self.end_headers() + if hasattr(self, '_flush'): + self._flush() + if self.command != 'HEAD' and code >= 200 and code not in (204, 304): self.wfile.write(content) @@ -232,11 +235,15 @@ class MultiHTTPHandler(FixSendError,BaseHTTPRequestHandler): method = getattr(fore, mname) try: method() + except (AuthRejectedExc, AuthRequiredExc): + raise except Exception, e: self.log_error("Could not run %s: %s" % (mname, e)) - fore.send_error(500, "Internal error") + self._get_ignore_body(fore) + self.send_error(500, "Internal error") # may not work if method has already sent data fore.close_connection = 1 + self.close_connection = 1 if hasattr(fore, '_flush'): fore._flush() return