summaryrefslogtreecommitdiffstats
path: root/Lib/httplib.py
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2015-04-10 10:24:10 (GMT)
committerSerhiy Storchaka <storchaka@gmail.com>2015-04-10 10:24:10 (GMT)
commit1aa2c0f073bdbed4fa824591d53e20bbf3d01add (patch)
tree30091bc4164edcf2d192126e5db59392a3078793 /Lib/httplib.py
parentc26afcc8fce54b8c920c21e2faf1259a92f4aa1f (diff)
downloadcpython-1aa2c0f073bdbed4fa824591d53e20bbf3d01add.zip
cpython-1aa2c0f073bdbed4fa824591d53e20bbf3d01add.tar.gz
cpython-1aa2c0f073bdbed4fa824591d53e20bbf3d01add.tar.bz2
Issue #23865: close() methods in multiple modules now are idempotent and more
robust at shutdown. If needs to release multiple resources, they are released even if errors are occured.
Diffstat (limited to 'Lib/httplib.py')
-rw-r--r--Lib/httplib.py21
1 files changed, 13 insertions, 8 deletions
diff --git a/Lib/httplib.py b/Lib/httplib.py
index 5406e77..9f1e088 100644
--- a/Lib/httplib.py
+++ b/Lib/httplib.py
@@ -560,9 +560,10 @@ class HTTPResponse:
return True
def close(self):
- if self.fp:
- self.fp.close()
+ fp = self.fp
+ if fp:
self.fp = None
+ fp.close()
def isclosed(self):
# NOTE: it is possible that we will not ever call self.close(). This
@@ -835,13 +836,17 @@ class HTTPConnection:
def close(self):
"""Close the connection to the HTTP server."""
- if self.sock:
- self.sock.close() # close it manually... there may be other refs
- self.sock = None
- if self.__response:
- self.__response.close()
- self.__response = None
self.__state = _CS_IDLE
+ try:
+ sock = self.sock
+ if sock:
+ self.sock = None
+ sock.close() # close it manually... there may be other refs
+ finally:
+ response = self.__response
+ if response:
+ self.__response = None
+ response.close()
def send(self, data):
"""Send `data' to the server."""