diff options
| -rw-r--r-- | netlib/tcp.py | 24 | 
1 files changed, 14 insertions, 10 deletions
| diff --git a/netlib/tcp.py b/netlib/tcp.py index 6c5b4976..a265ef7a 100644 --- a/netlib/tcp.py +++ b/netlib/tcp.py @@ -118,14 +118,11 @@ class BaseHandler:      def finish(self):          self.finished = True -        try: -            if not getattr(self.wfile, "closed", False): -                self.wfile.flush() -            self.connection.close() -            self.wfile.close() -            self.rfile.close() -        except IOError: # pragma: no cover -            pass +        if not getattr(self.wfile, "closed", False): +            self.wfile.flush() +        self.connection.close() +        self.wfile.close() +        self.rfile.close()      def handle_sni(self, connection):          """ @@ -166,8 +163,15 @@ class TCPServer:              self.handle_connection(request, client_address)              request.close()          except: -            self.handle_error(request, client_address) -            request.close() +            try: +                self.handle_error(request, client_address) +                request.close() +            # Why a blanket except here? In some circumstances, a thread can +            # persist until the interpreter exits. When this happens, all modules +            # and builtins are set to None, and things balls up indeterminate +            # ways. +            except: +                pass      def serve_forever(self, poll_interval=0.1):          self.__is_shut_down.clear() | 
