Message102462
> - 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. |
|
Date |
User |
Action |
Args |
2010-04-06 13:10:57 | pitrou | set | recipients:
+ pitrou, jcea, janssen, vstinner, giampaolo.rodola, Arfrever, flox |
2010-04-06 13:10:55 | pitrou | link | issue8108 messages |
2010-04-06 13:10:55 | pitrou | create | |
|