hgweb: log headers only if headers were successfully parsed
The headers attribute is not initialized in certain error situations
(e.g. http 400 bad request). Check for self.headers before we attempt
to access it.
--- a/mercurial/hgweb/server.py Mon Oct 07 17:47:19 2013 -0400
+++ b/mercurial/hgweb/server.py Tue Oct 01 09:54:46 2013 +0200
@@ -60,7 +60,10 @@
self._log_any(self.server.accesslog, format, *args)
def log_request(self, code='-', size='-'):
- xheaders = [h for h in self.headers.items() if h[0].startswith('x-')]
+ xheaders = []
+ if util.safehasattr(self, 'headers'):
+ xheaders = [h for h in self.headers.items()
+ if h[0].startswith('x-')]
self.log_message('"%s" %s %s%s',
self.requestline, str(code), str(size),
''.join([' %s:%s' % h for h in sorted(xheaders)]))