comparison mercurial/hgweb/server.py @ 4015:769be3c57564

Handle exceptions in do_hgweb: Send "Internal Server Error", log traceback
author Thomas Arendsen Hein <thomas@intevation.de>
date Tue, 02 Jan 2007 22:12:38 +0100
parents 925b1816c746
children a195f11ed1a2 40c9710e8182
comparison
equal deleted inserted replaced
4014:509342f95564 4015:769be3c57564
6 # This software may be used and distributed according to the terms 6 # This software may be used and distributed according to the terms
7 # of the GNU General Public License, incorporated herein by reference. 7 # of the GNU General Public License, incorporated herein by reference.
8 8
9 from mercurial.demandload import demandload 9 from mercurial.demandload import demandload
10 import os, sys, errno 10 import os, sys, errno
11 demandload(globals(), "urllib BaseHTTPServer socket SocketServer") 11 demandload(globals(), "urllib BaseHTTPServer socket SocketServer traceback")
12 demandload(globals(), "mercurial:ui,hg,util,templater") 12 demandload(globals(), "mercurial:ui,hg,util,templater")
13 demandload(globals(), "hgweb_mod:hgweb hgwebdir_mod:hgwebdir request:wsgiapplication") 13 demandload(globals(), "hgweb_mod:hgweb hgwebdir_mod:hgwebdir request:wsgiapplication")
14 from mercurial.i18n import gettext as _ 14 from mercurial.i18n import gettext as _
15 15
16 def _splitURI(uri): 16 def _splitURI(uri):
53 self.log_date_time_string(), 53 self.log_date_time_string(),
54 format % args)) 54 format % args))
55 55
56 def do_POST(self): 56 def do_POST(self):
57 try: 57 try:
58 self.do_hgweb() 58 try:
59 except socket.error, inst: 59 self.do_hgweb()
60 if inst[0] != errno.EPIPE: 60 except socket.error, inst:
61 raise 61 if inst[0] != errno.EPIPE:
62 raise
63 except StandardError, inst:
64 self._start_response("500 Internal Server Error", [])
65 self._write("Internal Server Error")
66 tb = "".join(traceback.format_exception(*sys.exc_info()))
67 self.log_error("Exception happened during processing request '%s':\n%s",
68 self.path, tb)
62 69
63 def do_GET(self): 70 def do_GET(self):
64 self.do_POST() 71 self.do_POST()
65 72
66 def do_hgweb(self): 73 def do_hgweb(self):