mercurial/hgweb/server.py
changeset 41462 9b2b8794f801
parent 41430 52a4a3e7cc6a
child 41479 6bbb12cba5a8
equal deleted inserted replaced
41461:c67f55b02f02 41462:9b2b8794f801
    99 
    99 
   100     def do_POST(self):
   100     def do_POST(self):
   101         try:
   101         try:
   102             self.do_write()
   102             self.do_write()
   103         except Exception:
   103         except Exception:
   104             self._start_response(r"500 Internal Server Error", [])
   104             # I/O below could raise another exception. So log the original
   105             self._write(b"Internal Server Error")
   105             # exception first to ensure it is recorded.
   106             self._done()
       
   107             tb = r"".join(traceback.format_exception(*sys.exc_info()))
   106             tb = r"".join(traceback.format_exception(*sys.exc_info()))
   108             # We need a native-string newline to poke in the log
   107             # We need a native-string newline to poke in the log
   109             # message, because we won't get a newline when using an
   108             # message, because we won't get a newline when using an
   110             # r-string. This is the easy way out.
   109             # r-string. This is the easy way out.
   111             newline = chr(10)
   110             newline = chr(10)
   112             self.log_error(r"Exception happened during processing "
   111             self.log_error(r"Exception happened during processing "
   113                            r"request '%s':%s%s", self.path, newline, tb)
   112                            r"request '%s':%s%s", self.path, newline, tb)
       
   113 
       
   114             self._start_response(r"500 Internal Server Error", [])
       
   115             self._write(b"Internal Server Error")
       
   116             self._done()
   114 
   117 
   115     def do_PUT(self):
   118     def do_PUT(self):
   116         self.do_POST()
   119         self.do_POST()
   117 
   120 
   118     def do_GET(self):
   121     def do_GET(self):