New submission from Jonathan <bugrepo...@lightpear.com>:

Using Python 3.6.3.

The below issue only happens with FTP_TLS. It works fine via a plain FTP 
connection.

I am connecting to an FTP to using `ftplib` via FTP_TLS.

        ftps = ftplib.FTP_TLS('example.com', timeout=5)

        # TLS is more secure than SSL
        ftps.ssl_version = ssl.PROTOCOL_TLS

        # login before securing control channel
        ftps.login('usern...@example.com', 'password')

        # switch to secure data connection
        ftps.prot_p()

        # Explicitly set Passive mode
        ftps.set_pasv(True)

This all works. I can send `ftps.mkd('mydir')` (make directory) and 
`ftps.cwd('mydir')` (change working dir), and both work fine.

But if I send **any** of these (they're all basically synonyms as far as I can 
tell):

                        ftps.dir()
                        ftps.nlst()
                        ftps.retrlines('LIST')
                        ftps.retrlines('MLSD')

Then I get back an exception (below also includes all ftplib debug info as 
well; generally matches up with what FileZilla shows too):

        *cmd* 'AUTH TLS'
        *put* 'AUTH TLS\r\n'
        *get* '234 AUTH TLS OK.\n'
        *resp* '234 AUTH TLS OK.'
        *cmd* 'USER usern...@example.com'
        *put* 'USER usern...@example.com\r\n'
        *get* '331 User usern...@example.com OK. Password required\n'
        *resp* '331 User usern...@example.com OK. Password required'
        *cmd* 'PASS ******************************'
        *put* 'PASS ******************************\r\n'
        *get* '230 OK. Current restricted directory is /\n'
        *resp* '230 OK. Current restricted directory is /'
        *cmd* 'PBSZ 0'
        *put* 'PBSZ 0\r\n'
        *get* '200 PBSZ=0\n'
        *resp* '200 PBSZ=0'
        *cmd* 'PROT P'
        *put* 'PROT P\r\n'
        *get* '200 Data protection level set to "private"\n'
        *resp* '200 Data protection level set to "private"'
        *cmd* 'MKD mydir'
        *put* 'MKD mydir\r\n'
        *get* '257 "mydir" : The directory was successfully created\n'
        *resp* '257 "mydir" : The directory was successfully created'
        *cmd* 'CWD mydir'
        *put* 'CWD mydir\r\n'
        *get* '250 OK. Current directory is /mydir\n'
        *resp* '250 OK. Current directory is /mydir'
        *cmd* 'TYPE A'
        *put* 'TYPE A\r\n'
        *get* '200 TYPE is now ASCII\n'
        *resp* '200 TYPE is now ASCII'
        *cmd* 'PASV'
        *put* 'PASV\r\n'
        *get* '227 Entering Passive Mode (8,8,8,8,8,8)\n'
        *resp* '227 Entering Passive Mode (8,8,8,8,8,8)'
        *cmd* 'MLSD'
        *put* 'MLSD\r\n'
        *get* '150 Accepted data connection\n'
        *resp* '150 Accepted data connection'
        Traceback (most recent call last):
          File "c:\my_script.py", line 384, in run_ftps
                ftps.retrlines('MLSD')
          File "c:\libs\Python36\lib\ftplib.py", line 485, in retrlines
                conn.unwrap()
          File "C:\libs\Python36\lib\ssl.py", line 1051, in unwrap
                s = self._sslobj.unwrap()
          File "C:\libs\Python36\lib\ssl.py", line 698, in unwrap
                return self._sslobj.shutdown()
        OSError: [Errno 0] Error

The same FTP command (LIST) works fine via filezilla.

The closest thing I can find with googling is this: 
https://bugs.python.org/msg253161 - and I'm not sure if it's related or 
relevant.

Short version: What does "OSError: [Errno 0] Error" actually mean, and how do I 
list my directory contents?

----------
messages: 303914
nosy: jonathan-lp
priority: normal
severity: normal
status: open
title: FTP_TLS errors when
versions: Python 3.6

_______________________________________
Python tracker <rep...@bugs.python.org>
<https://bugs.python.org/issue31727>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to