imaplib: IMAP4 constructor closes the socket on error
Fix a ResourceWarning(unclosed socket) if an exception is raised in the
constructor after the creation of the socket. Patch written by Nadeem Vawda.
diff --git a/Lib/imaplib.py b/Lib/imaplib.py
index 9c38e1c..8c14728 100644
--- a/Lib/imaplib.py
+++ b/Lib/imaplib.py
@@ -169,6 +169,17 @@
self.open(host, port)
+ try:
+ self._connect()
+ except Exception:
+ try:
+ self.shutdown()
+ except socket.error:
+ pass
+ raise
+
+
+ def _connect(self):
# Create unique tag for this session,
# and compile tagged response matcher.