Skip to content

Commit

Permalink
bpo-31853: Replaced socket.method calls with super() in SSLSocket. (p…
Browse files Browse the repository at this point in the history
  • Loading branch information
atombrella authored and tiran committed Jan 27, 2018
1 parent d0e31b9 commit 746cc75
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 20 deletions.
39 changes: 19 additions & 20 deletions Lib/ssl.py
Original file line number Diff line number Diff line change
Expand Up @@ -786,17 +786,16 @@ def __init__(self, sock=None, keyfile=None, certfile=None,
self.do_handshake_on_connect = do_handshake_on_connect
self.suppress_ragged_eofs = suppress_ragged_eofs
if sock is not None:
socket.__init__(self,
family=sock.family,
type=sock.type,
proto=sock.proto,
fileno=sock.fileno())
super().__init__(family=sock.family,
type=sock.type,
proto=sock.proto,
fileno=sock.fileno())
self.settimeout(sock.gettimeout())
sock.detach()
elif fileno is not None:
socket.__init__(self, fileno=fileno)
super().__init__(fileno=fileno)
else:
socket.__init__(self, family=family, type=type, proto=proto)
super().__init__(family=family, type=type, proto=proto)

# See if we are connected
try:
Expand Down Expand Up @@ -952,17 +951,17 @@ def send(self, data, flags=0):
self.__class__)
return self._sslobj.write(data)
else:
return socket.send(self, data, flags)
return super().send(data, flags)

def sendto(self, data, flags_or_addr, addr=None):
self._checkClosed()
if self._sslobj:
raise ValueError("sendto not allowed on instances of %s" %
self.__class__)
elif addr is None:
return socket.sendto(self, data, flags_or_addr)
return super().sendto(data, flags_or_addr)
else:
return socket.sendto(self, data, flags_or_addr, addr)
return super().sendto(data, flags_or_addr, addr)

def sendmsg(self, *args, **kwargs):
# Ensure programs don't send data unencrypted if they try to
Expand All @@ -984,7 +983,7 @@ def sendall(self, data, flags=0):
v = self.send(byte_view[count:])
count += v
else:
return socket.sendall(self, data, flags)
return super().sendall(data, flags)

def sendfile(self, file, offset=0, count=None):
"""Send a file, possibly by using os.sendfile() if this is a
Expand All @@ -1005,7 +1004,7 @@ def recv(self, buflen=1024, flags=0):
self.__class__)
return self.read(buflen)
else:
return socket.recv(self, buflen, flags)
return super().recv(buflen, flags)

def recv_into(self, buffer, nbytes=None, flags=0):
self._checkClosed()
Expand All @@ -1020,23 +1019,23 @@ def recv_into(self, buffer, nbytes=None, flags=0):
self.__class__)
return self.read(nbytes, buffer)
else:
return socket.recv_into(self, buffer, nbytes, flags)
return super().recv_into(buffer, nbytes, flags)

def recvfrom(self, buflen=1024, flags=0):
self._checkClosed()
if self._sslobj:
raise ValueError("recvfrom not allowed on instances of %s" %
self.__class__)
else:
return socket.recvfrom(self, buflen, flags)
return super().recvfrom(buflen, flags)

def recvfrom_into(self, buffer, nbytes=None, flags=0):
self._checkClosed()
if self._sslobj:
raise ValueError("recvfrom_into not allowed on instances of %s" %
self.__class__)
else:
return socket.recvfrom_into(self, buffer, nbytes, flags)
return super().recvfrom_into(buffer, nbytes, flags)

def recvmsg(self, *args, **kwargs):
raise NotImplementedError("recvmsg not allowed on instances of %s" %
Expand All @@ -1056,7 +1055,7 @@ def pending(self):
def shutdown(self, how):
self._checkClosed()
self._sslobj = None
socket.shutdown(self, how)
super().shutdown(how)

def unwrap(self):
if self._sslobj:
Expand All @@ -1068,7 +1067,7 @@ def unwrap(self):

def _real_close(self):
self._sslobj = None
socket._real_close(self)
super()._real_close()

def do_handshake(self, block=False):
"""Perform a TLS/SSL handshake."""
Expand All @@ -1093,10 +1092,10 @@ def _real_connect(self, addr, connect_ex):
session=self._session)
try:
if connect_ex:
rc = socket.connect_ex(self, addr)
rc = super().connect_ex(addr)
else:
rc = None
socket.connect(self, addr)
super().connect(addr)
if not rc:
self._connected = True
if self.do_handshake_on_connect:
Expand All @@ -1121,7 +1120,7 @@ def accept(self):
a tuple containing that new connection wrapped with a server-side
SSL channel, and the address of the remote client."""

newsock, addr = socket.accept(self)
newsock, addr = super().accept()
newsock = self.context.wrap_socket(newsock,
do_handshake_on_connect=self.do_handshake_on_connect,
suppress_ragged_eofs=self.suppress_ragged_eofs,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
Use super().method instead of socket.method in SSLSocket. They were
there most likely for legacy reasons.

0 comments on commit 746cc75

Please sign in to comment.