Commit 6d58d649 authored by Antoine Pitrou's avatar Antoine Pitrou

Issue #11127: Raise a TypeError when trying to pickle a socket object.

parent b938bcd2
...@@ -112,6 +112,9 @@ class socket(_socket.socket): ...@@ -112,6 +112,9 @@ class socket(_socket.socket):
s[7:]) s[7:])
return s return s
def __getstate__(self):
raise TypeError("Cannot serialize socket object")
def dup(self): def dup(self):
"""dup() -> socket object """dup() -> socket object
......
...@@ -18,6 +18,7 @@ import contextlib ...@@ -18,6 +18,7 @@ import contextlib
from weakref import proxy from weakref import proxy
import signal import signal
import math import math
import pickle
try: try:
import fcntl import fcntl
except ImportError: except ImportError:
...@@ -764,6 +765,12 @@ class GeneralModuleTests(unittest.TestCase): ...@@ -764,6 +765,12 @@ class GeneralModuleTests(unittest.TestCase):
fp.close() fp.close()
self.assertEqual(repr(fp), "<_io.BufferedReader name=-1>") self.assertEqual(repr(fp), "<_io.BufferedReader name=-1>")
def test_pickle(self):
sock = socket.socket()
with sock:
for protocol in range(pickle.HIGHEST_PROTOCOL + 1):
self.assertRaises(TypeError, pickle.dumps, sock, protocol)
@unittest.skipUnless(thread, 'Threading required for this test.') @unittest.skipUnless(thread, 'Threading required for this test.')
class BasicTCPTest(SocketConnectedTest): class BasicTCPTest(SocketConnectedTest):
......
...@@ -83,6 +83,8 @@ Library ...@@ -83,6 +83,8 @@ Library
- Issue #4391: Use proper gettext plural forms in optparse. - Issue #4391: Use proper gettext plural forms in optparse.
- Issue #11127: Raise a TypeError when trying to pickle a socket object.
- Issue #11563: Connection:close header is sent by requests using URLOpener - Issue #11563: Connection:close header is sent by requests using URLOpener
class which helps in closing of sockets after connection is over. Patch class which helps in closing of sockets after connection is over. Patch
contributions by Jeff McNeil and Nadeem Vawda. contributions by Jeff McNeil and Nadeem Vawda.
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment