work around odd problem (see comment in code)

This commit is contained in:
Noah Levitt 2018-04-03 11:12:25 -07:00
parent 7f1c7f532e
commit e989b2f667
2 changed files with 23 additions and 1 deletions

View File

@ -40,7 +40,7 @@ except:
setuptools.setup(
name='warcprox',
version='2.4b2.dev159',
version='2.4b2.dev160',
description='WARC writing MITM HTTP/S proxy',
url='https://github.com/internetarchive/warcprox',
author='Noah Levitt',

View File

@ -390,6 +390,28 @@ class MitmProxyHandler(http_server.BaseHTTPRequestHandler):
self.send_error(502, str(e))
return
def send_error(self, code, message=None, explain=None):
# BaseHTTPRequestHandler.send_response_only() in http/server.py
# does this:
# if not hasattr(self, '_headers_buffer'):
# self._headers_buffer = []
# but we sometimes see self._headers_buffer == None
# (This happened before! see commit dc9fdc34125dd2357)
# Workaround:
if hasattr(self, '_headers_buffer') and not self._headers_buffer:
self._headers_buffer = []
try:
return http_server.BaseHTTPRequestHandler.send_error(
self, code, message, explain)
except:
self.logger.error(
'''WTF: self=%r hasattr(self,'_headers_buffer')=%r''',
self, hasattr(self,'_headers_buffer'))
if hasattr(self,'_headers_buffer'):
self.logger.error(
'WTF: self._headers_buffer=%r', self._headers_buffer)
return None
def _proxy_request(self, extra_response_headers={}):
'''
Sends the request to the remote server, then uses a ProxyingRecorder to