[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[tor-commits] [flashproxy/master] Turn "broken pipe" facilitator errors into a one-line log message.



commit 545b33f21b1db659f80fd1109469d25ce5ab6533
Author: David Fifield <david@xxxxxxxxxxxxxxx>
Date:   Thu Jul 28 16:34:16 2011 +0000

    Turn "broken pipe" facilitator errors into a one-line log message.
---
 facilitator.py |   14 ++++++++++++++
 1 files changed, 14 insertions(+), 0 deletions(-)

diff --git a/facilitator.py b/facilitator.py
index 287602d..b2f8304 100755
--- a/facilitator.py
+++ b/facilitator.py
@@ -3,6 +3,7 @@
 import BaseHTTPServer
 import SocketServer
 import cgi
+import errno
 import getopt
 import os
 import re
@@ -302,6 +303,19 @@ class Handler(BaseHTTPServer.BaseHTTPRequestHandler):
         data["relay"] = options.relay_spec
         self.request.send(urllib.urlencode(data))
 
+    # Catch "broken pipe" errors that otherwise cause a stack trace in the log.
+    def catch_epipe(fn):
+        def ret(self, *args):
+            try:
+                fn(self, *args)
+            except socket.error, e:
+                if e.errno != errno.EPIPE:
+                    raise
+                log(u"%s broken pipe" % format_addr(self.client_address))
+        return ret
+    handle = catch_epipe(BaseHTTPServer.BaseHTTPRequestHandler.handle)
+    finish = catch_epipe(BaseHTTPServer.BaseHTTPRequestHandler.finish)
+
 REGS = RegSet()
 
 opts, args = getopt.gnu_getopt(sys.argv[1:], "dhl:r:",

_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits