From 7560c0946d4b9d17d907555350ec1d4cd69b8021 Mon Sep 17 00:00:00 2001
From: Noah Levitt <nlevitt@wbgrp-svc203.us.archive.org>
Date: Tue, 9 Apr 2019 21:16:45 +0000
Subject: [PATCH] avoid exception sending error to client

this is a slightly different approach to
https://github.com/internetarchive/warcprox/pull/121
---
 warcprox/mitmproxy.py | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/warcprox/mitmproxy.py b/warcprox/mitmproxy.py
index 5b24f30..a9e7e38 100644
--- a/warcprox/mitmproxy.py
+++ b/warcprox/mitmproxy.py
@@ -415,9 +415,13 @@ class MitmProxyHandler(http_server.BaseHTTPRequestHandler):
         try:
             return http_server.BaseHTTPRequestHandler.send_error(
                     self, code, message, explain)
-        except:
-            self.logger.error(
-                    'send_error(%r, %r, %r) raised exception', exc_info=True)
+        except Exception as e:
+            level = logging.ERROR
+            if isinstance(e, OSError) and e.errno == 9:
+                level = logging.TRACE
+            self.logger.log(
+                    level, 'send_error(%r, %r, %r) raised exception',
+                    exc_info=True)
             return None
 
     def _proxy_request(self, extra_response_headers={}):