From fb5d58de116f840f51ccb6b4a53d10e7e2ab09c1 Mon Sep 17 00:00:00 2001 From: Yann Leboulanger <asterix@lagaule.org> Date: Thu, 23 Aug 2012 11:36:51 +0200 Subject: [PATCH] don't do SSL over SSL and correctly shutdown SSL sockets. --- src/common/socks5.py | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/common/socks5.py b/src/common/socks5.py index d70ca33b56..addbd235cc 100644 --- a/src/common/socks5.py +++ b/src/common/socks5.py @@ -770,7 +770,10 @@ class Socks5: if self.queue.listener.connections == []: self.queue.listener.disconnect() try: - self._sock.shutdown(socket.SHUT_RDWR) + if isinstance(self._sock, OpenSSL.SSL.Connection): + self._sock.shutdown() + else: + self._sock.shutdown(socket.SHUT_RDWR) self._sock.close() except Exception: # socket is already closed @@ -901,7 +904,8 @@ class Socks5Sender(IdleObject): self._sock = _sock if _sock is not None: - if self.fingerprint is not None: + if self.fingerprint is not None and not isinstance(self._sock, + OpenSSL.SSL.Connection): self._sock = OpenSSL.SSL.Connection( jingle_xtls.get_context('server'), _sock) else: @@ -938,7 +942,7 @@ class Socks5Sender(IdleObject): if self.fingerprint is not None: self._sock = OpenSSL.SSL.Connection( - jingle_xtls.get_context('client'), self._sock) + jingle_xtls.get_context('client'), _sock) else: self._sock.setblocking(False) -- GitLab