diff -ur m2crypto/M2Crypto/m2urllib2.py m2crypto-0.16/M2Crypto/m2urllib2.py --- m2crypto/M2Crypto/m2urllib2.py 2009-04-07 13:40:53.000000000 +0200 +++ m2crypto-0.16/M2Crypto/m2urllib2.py 2009-04-07 13:41:02.000000000 +0200 @@ -11,12 +11,28 @@ * Add the M2Crypto HTTPSHandler when building a default opener. """ +import socket from urllib2 import * import urlparse import SSL import httpslib + +class _closing_fileobject(socket._fileobject): + '''socket._fileobject that propagates self.close() to the socket. + + Python 2.5 provides this as socket._fileobject(sock, close=True). + ''' + + def __init__(self, sock): + socket._fileobject.__init__(self, sock) + + def close(self): + sock = self._sock + socket._fileobject.close(self) + sock.close() + class HTTPSHandler(AbstractHTTPHandler): def __init__(self, ssl_context = None): AbstractHTTPHandler.__init__(self) @@ -80,7 +96,7 @@ # out of socket._fileobject() and into a base class. r.recv = r.read - fp = socket._fileobject(r) + fp = _closing_fileobject(r) resp = addinfourl(fp, r.msg, req.get_full_url()) resp.code = r.status