From ab2793aa966d3a40a89fe4b392d3cc286721f36d Mon Sep 17 00:00:00 2001 From: Roger Meier Date: Mon, 21 Apr 2014 21:20:00 +0200 Subject: [PATCH] THRIFT-2466: Improper error handling for SSL/TLS connections that don't complete a handshake Client: Python Patch: Benoit Sigoure --- lib/py/src/server/TProcessPoolServer.py | 2 ++ lib/py/src/server/TServer.py | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/lib/py/src/server/TProcessPoolServer.py b/lib/py/src/server/TProcessPoolServer.py index 7a695a88..73694663 100644 --- a/lib/py/src/server/TProcessPoolServer.py +++ b/lib/py/src/server/TProcessPoolServer.py @@ -56,6 +56,8 @@ class TProcessPoolServer(TServer): while self.isRunning.value: try: client = self.serverTransport.accept() + if not client: + continue self.serveClient(client) except (KeyboardInterrupt, SystemExit): return 0 diff --git a/lib/py/src/server/TServer.py b/lib/py/src/server/TServer.py index 2f24842c..976a8f37 100644 --- a/lib/py/src/server/TServer.py +++ b/lib/py/src/server/TServer.py @@ -75,6 +75,8 @@ class TSimpleServer(TServer): self.serverTransport.listen() while True: client = self.serverTransport.accept() + if not client: + continue itrans = self.inputTransportFactory.getTransport(client) otrans = self.outputTransportFactory.getTransport(client) iprot = self.inputProtocolFactory.getProtocol(itrans) @@ -103,6 +105,8 @@ class TThreadedServer(TServer): while True: try: client = self.serverTransport.accept() + if not client: + continue t = threading.Thread(target=self.handle, args=(client,)) t.setDaemon(self.daemon) t.start() @@ -182,6 +186,8 @@ class TThreadPoolServer(TServer): while True: try: client = self.serverTransport.accept() + if not client: + continue self.clients.put(client) except Exception, x: logging.exception(x) @@ -214,6 +220,8 @@ class TForkingServer(TServer): self.serverTransport.listen() while True: client = self.serverTransport.accept() + if not client: + continue try: pid = os.fork() -- 2.17.1