summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/poplib.py9
-rw-r--r--Misc/NEWS3
2 files changed, 11 insertions, 1 deletions
diff --git a/Lib/poplib.py b/Lib/poplib.py
index d42d9dd..094aaa1 100644
--- a/Lib/poplib.py
+++ b/Lib/poplib.py
@@ -259,7 +259,14 @@ class POP3:
if self.file is not None:
self.file.close()
if self.sock is not None:
- 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()
self.file = self.sock = None
#__del__ = quit
diff --git a/Misc/NEWS b/Misc/NEWS
index 10a07cd..917f4d5 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -138,6 +138,9 @@ Core and Builtins
Library
-------
+- Issue #4473: Ensure the socket is shutdown cleanly in POP3.close().
+ Patch by Lorenzo Catucci.
+
- Issue #16522: added FAIL_FAST flag to doctest.
- Issue #15627: Add the importlib.abc.SourceLoader.compile_source() method.