Comment 1 for bug 281325

Revision history for this message
John A Meinel (jameinel) wrote :

This is a known problem with some FTP servers. Basically, instead of returning the empty list when there are no files in a directory, they instead raise a 550 error. The problem is that they strings are not generally helpful as they vary wildly based on the ftp server, and 550 can mean a lot of things. For example:
550 Permission denied
http://support.ipswitch.com/kb/WS-20000817-DM02.htm
versus
550 No such file
http://support.ipswitch.com/kb/WS-20010403-DM01.htm

According to the second link 550 is supposed to be a permission error. And it is a bit rude of them to treat "no files in directory" as a permission problem.

Do you know the FTP server which is on "rhonwyn"?

A while back we encountered this with a 450 error. We have this code in "bzrlib/transport/ftp/__init__.py"
except ftplib.error_temp, e:
    # xs4all's ftp server raises a 450 temp error when listing an empty
    # directory. Check for that and just return an empty list in that
    # case. See bug #215522
    if str(e).lower().startswith('450 no files found'):
        mutter('FTP Server returned "%s" for nlst.'
               ' Assuming it means empty directory',
               str(e))
        return []
    raise

So either
a) You have a permission issue on that directory or
b) It is given a bogus error rather than just saying there isn't anything ther.

I'm also really surprised that .bzr/branch/lock is failing. As we never have a cause (that *I* know of) to list that directory. We *do* a list on .bzr/repository/obsolete_packs which is where this came up in the past.