[issue8108] test_ftplib fails with OpenSSL 0.9.8m
Antoine Pitrou
report at bugs.python.org
Tue Apr 6 15:10:57 CEST 2010
Antoine Pitrou <pitrou at free.fr> added the comment:
> - ftplib.FTP_TLS.quit: I wouldn't call unwrap() here as RFC-4217 does
> that only when dealing with CCC command which is not implemented by
> ftplib.py.
Ok.
> - I'd be for calling _do_ssl_shutdown() from handle_close() instead of
> from close() (reasons explained in my previous message)
This provokes test failures such as:
======================================================================
ERROR: test_dir (test.test_ftplib.TestTLS_FTPClassMixin)
----------------------------------------------------------------------
Traceback (most recent call last):
File "/home/antoine/cpython/newssl/Lib/test/test_ftplib.py", line 537, in test_dir
self.client.dir(lambda x: l.append(x))
File "/home/antoine/cpython/newssl/Lib/ftplib.py", line 511, in dir
self.retrlines(cmd, func)
File "/home/antoine/cpython/newssl/Lib/ftplib.py", line 714, in retrlines
return self.voidresp()
File "/home/antoine/cpython/newssl/Lib/ftplib.py", line 224, in voidresp
resp = self.getresp()
File "/home/antoine/cpython/newssl/Lib/ftplib.py", line 210, in getresp
resp = self.getmultiline()
File "/home/antoine/cpython/newssl/Lib/ftplib.py", line 196, in getmultiline
line = self.getline()
File "/home/antoine/cpython/newssl/Lib/ftplib.py", line 183, in getline
line = self.file.readline()
File "/home/antoine/cpython/newssl/Lib/socket.py", line 445, in readline
data = self._sock.recv(self._rbufsize)
File "/home/antoine/cpython/newssl/Lib/ssl.py", line 98, in <lambda>
self.recv = lambda buflen=1024, flags=0: SSLSocket.recv(self, buflen, flags)
File "/home/antoine/cpython/newssl/Lib/ssl.py", line 217, in recv
return self.read(buflen)
File "/home/antoine/cpython/newssl/Lib/ssl.py", line 138, in read
return self._sslobj.read(len)
SSLError: The read operation timed out
I have already tested quite a bunch of possibilities (handle_close or
close, silencing EPIPE or not...)
> - If EPIPE is still raised I'd try to move the shutdown() code from
> SSLConnection.handle_close() to DummyTLS_DTPHandler.handle_close().
This only makes the server less respectful of the protocol...
I think it is fine to silence EPIPE and friends during SSL shutdown
since, as I've said, asyncore will call handle_close() when the remote
ends has closed the TCP connection.
----------
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue8108>
_______________________________________
More information about the Python-bugs-list
mailing list