From 81c87c5e9a81728f4c7b022e3786ce11d53ed3c9 Mon Sep 17 00:00:00 2001 From: Antoine Pitrou Date: Wed, 10 Nov 2010 08:59:25 +0000 Subject: [PATCH] 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 94f4e8fdf5d..77806db4e14 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"] @@ -260,8 +260,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):