From ae93389e0ac400924a5b196c3b0d7633104e9637 Mon Sep 17 00:00:00 2001 From: Antoine Pitrou Date: Wed, 10 Nov 2010 09:02:33 +0000 Subject: [PATCH] Merged revisions 86391 via svnmerge from svn+ssh://pythondev@svn.python.org/python/branches/py3k ........ r86391 | antoine.pitrou | 2010-11-10 09:59:25 +0100 (mer., 10 nov. 2010) | 4 lines Followup to r86383: it seems that in some cases (buildbots), the server closes the connection before we can call shutdown(). ........ --- Lib/imaplib.py | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Lib/imaplib.py b/Lib/imaplib.py index 357ba83891d..f66a83bae2a 100644 --- a/Lib/imaplib.py +++ b/Lib/imaplib.py @@ -22,7 +22,7 @@ Public functions: Internaldate2tuple __version__ = "2.58" -import binascii, random, re, socket, subprocess, sys, time +import binascii, errno, random, re, socket, subprocess, sys, time __all__ = ["IMAP4", "IMAP4_stream", "Internaldate2tuple", "Int2AP", "ParseFlags", "Time2Internaldate"] @@ -248,8 +248,14 @@ class IMAP4: def shutdown(self): """Close I/O established in "open".""" self.file.close() - self.sock.shutdown(socket.SHUT_RDWR) - self.sock.close() + try: + self.sock.shutdown(socket.SHUT_RDWR) + except socket.error as e: + # The server might already have closed the connection + if e.errno != errno.ENOTCONN: + raise + finally: + self.sock.close() def socket(self):