]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Issue #8184: Fix a potential file descriptor leak when a
authorCharles-François Natali <neologix@free.fr>
Sat, 4 Feb 2012 13:55:53 +0000 (14:55 +0100)
committerCharles-François Natali <neologix@free.fr>
Sat, 4 Feb 2012 13:55:53 +0000 (14:55 +0100)
multiprocessing.Connection socket can't be bound.

Lib/multiprocessing/connection.py

index d6c23fb0ecdfe4da0c9b85afd0781696bf13dd28..df00f1d90664ce3a4cf9d55d9f2bf4d63e6737c4 100644 (file)
@@ -249,10 +249,14 @@ class SocketListener(object):
     '''
     def __init__(self, address, family, backlog=1):
         self._socket = socket.socket(getattr(socket, family))
-        self._socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
-        self._socket.bind(address)
-        self._socket.listen(backlog)
-        self._address = self._socket.getsockname()
+        try:
+            self._socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
+            self._socket.bind(address)
+            self._socket.listen(backlog)
+            self._address = self._socket.getsockname()
+        except socket.error:
+            self._socket.close()
+            raise
         self._family = family
         self._last_accepted = None