bpo-30329: Catch Windows error 10022 on shutdown() (#1538) (#1624)
Catch the Windows socket WSAEINVAL error (code 10022) in imaplib
on shutdown(SHUT_RDWR): An invalid operation was attempted
This error occurs sometimes on SSL connections.
(cherry picked from commit 83a2c2879839da2e10037f5e4af1bd1dafbf1a52)
diff --git a/Lib/imaplib.py b/Lib/imaplib.py
index f813ece..220d6e1 100644
--- a/Lib/imaplib.py
+++ b/Lib/imaplib.py
@@ -264,8 +264,10 @@
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:
+ # The server might already have closed the connection.
+ # On Windows, this may result in WSAEINVAL (error 10022):
+ # An invalid operation was attempted.
+ if e.errno not in (errno.ENOTCONN, 10022):
raise
finally:
self.sock.close()