Document ftp: improve exception handling, size may return 404
bzr revid: p_christ@hol.gr-20100713205418-8oe6svsdvw2yy4jn
This commit is contained in:
parent
766fd336d4
commit
a47be2ef0d
|
@ -163,6 +163,8 @@ class abstracted_fs(object):
|
|||
ret = child.open_data(cr, mode)
|
||||
cr.commit()
|
||||
return ret
|
||||
except EnvironmentError:
|
||||
raise
|
||||
except Exception,e:
|
||||
self._log.exception('Cannot create item %s at node %s', objname, repr(node))
|
||||
raise OSError(1, 'Operation not permited.')
|
||||
|
@ -432,7 +434,7 @@ class abstracted_fs(object):
|
|||
def getsize(self, datacr):
|
||||
"""Return the size of the specified file in bytes."""
|
||||
if not (datacr and datacr[1]):
|
||||
return 0L
|
||||
raise IOError(errno.ENOENT, "No such file or directory")
|
||||
if datacr[1].type in ('file', 'content'):
|
||||
return datacr[1].get_data_len(datacr[0]) or 0L
|
||||
return 0L
|
||||
|
|
|
@ -2565,9 +2565,12 @@ class FTPHandler(asynchat.async_chat):
|
|||
# return
|
||||
size = self.run_as_current_user(self.fs.getsize, datacr)
|
||||
except EnvironmentError, err:
|
||||
why = _strerror(err)
|
||||
why = err.strerror
|
||||
self.log('FAIL SIZE "%s". %s.' %(line, why))
|
||||
self.respond('550 %s.' %why)
|
||||
if err.errno == errno.ENOENT:
|
||||
self.respond("404 %s." % why)
|
||||
else:
|
||||
self.respond('550 %s.' % why)
|
||||
else:
|
||||
self.respond("213 %s" %size)
|
||||
self.log('OK SIZE "%s".' %line)
|
||||
|
@ -2640,10 +2643,13 @@ class FTPHandler(asynchat.async_chat):
|
|||
try:
|
||||
datacr = self.fs.get_crdata(line, mode='delete')
|
||||
self.run_as_current_user(self.fs.remove, datacr)
|
||||
except OSError, err:
|
||||
why = _strerror(err)
|
||||
except EnvironmentError, err:
|
||||
why = err.strerror
|
||||
self.log('FAIL DELE "%s". %s.' %(line, why))
|
||||
self.respond('550 %s.' %why)
|
||||
if err.errno == errno.ENOENT:
|
||||
self.respond('404 %s.' % why)
|
||||
else:
|
||||
self.respond('550 %s.' %why)
|
||||
else:
|
||||
self.log('OK DELE "%s".' %line)
|
||||
self.respond("250 File removed.")
|
||||
|
|
Loading…
Reference in New Issue