summaryrefslogtreecommitdiff
path: root/addons/document_ftp/ftpserver/ftpserver.py
diff options
context:
space:
mode:
authorP. Christeas <p_christ@hol.gr>2010-07-13 23:54:18 +0300
committerP. Christeas <p_christ@hol.gr>2010-07-13 23:54:18 +0300
commita47be2ef0d72c5de183b9af1d44f33055c6c2dcc (patch)
tree03d0c54e54ed454858e56980e247d579ab16cd3e /addons/document_ftp/ftpserver/ftpserver.py
parent766fd336d4f8f0e17a05741542bf0a6e440e06bc (diff)
Document ftp: improve exception handling, size may return 404
bzr revid: p_christ@hol.gr-20100713205418-8oe6svsdvw2yy4jn
Diffstat (limited to 'addons/document_ftp/ftpserver/ftpserver.py')
-rw-r--r--addons/document_ftp/ftpserver/ftpserver.py16
1 files changed, 11 insertions, 5 deletions
diff --git a/addons/document_ftp/ftpserver/ftpserver.py b/addons/document_ftp/ftpserver/ftpserver.py
index e267216ddec..528ce057ff9 100644
--- a/addons/document_ftp/ftpserver/ftpserver.py
+++ b/addons/document_ftp/ftpserver/ftpserver.py
@@ -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.")