diff options
Diffstat (limited to 'Lib/xmlrpclib.py')
-rw-r--r-- | Lib/xmlrpclib.py | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/Lib/xmlrpclib.py b/Lib/xmlrpclib.py index 340dc51..db185a6 100644 --- a/Lib/xmlrpclib.py +++ b/Lib/xmlrpclib.py @@ -558,8 +558,13 @@ else: self._parser.Parse(data, 0) def close(self): - self._parser.Parse("", 1) # end of data - del self._target, self._parser # get rid of circular references + try: + parser = self._parser + except AttributeError: + pass + else: + del self._target, self._parser # get rid of circular references + parser.Parse("", 1) # end of data class SlowParser: """Default XML parser (based on xmllib.XMLParser).""" @@ -1214,8 +1219,10 @@ class GzipDecodedResponse(gzip.GzipFile if gzip else object): gzip.GzipFile.__init__(self, mode="rb", fileobj=self.stringio) def close(self): - gzip.GzipFile.close(self) - self.stringio.close() + try: + gzip.GzipFile.close(self) + finally: + self.stringio.close() # -------------------------------------------------------------------- @@ -1384,9 +1391,10 @@ class Transport: # Used in the event of socket errors. # def close(self): - if self._connection[1]: - self._connection[1].close() + host, connection = self._connection + if connection: self._connection = (None, None) + connection.close() ## # Send request header. |