JelteF / dokuwikifuse

A FUSE filesystem interface to dokuwiki systems
MIT License
5 stars 2 forks source link

Upload of forbidden extenstion breaks the mountpoint #2

Open maq123 opened 8 years ago

maq123 commented 8 years ago

When I upload the file with the forbidden extension the mountpoint is being disconnected.

[INFO] Saving /inr/task10.cfg                                                                                                                                                                      [38/243]
[ERROR] Something went wrong when saving /inr/task10.cfg: <Fault 1: 'Upload denied. This file extension is forbidden!'>
Traceback (most recent call last):
  File "/sne/home/lmakowski/dokuwikifuse/venv/src/dokuwiki/dokuwiki.py", line 55, in send
    return method(*args)
  File "/usr/lib/python3.4/xmlrpc/client.py", line 1098, in __call__
    return self.__send(self.__name, args)
  File "/usr/lib/python3.4/xmlrpc/client.py", line 1437, in __request
    verbose=self.__verbose
  File "/usr/lib/python3.4/xmlrpc/client.py", line 1140, in request
    return self.single_request(host, handler, request_body, verbose)
  File "/usr/lib/python3.4/xmlrpc/client.py", line 1156, in single_request
    return self.parse_response(resp)
  File "/usr/lib/python3.4/xmlrpc/client.py", line 1327, in parse_response
    return u.close()
  File "/usr/lib/python3.4/xmlrpc/client.py", line 657, in close
    raise Fault(**self._stack[0])
xmlrpc.client.Fault: <Fault 1: 'Upload denied. This file extension is forbidden!'>

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/sne/home/lmakowski/dokuwikifuse/venv/src/easyfuse/easyfuse/utils.py", line 18, in _convert_error_to_fuse_error
    yield
  File "/sne/home/lmakowski/dokuwikifuse/venv/src/easyfuse/easyfuse/filesystem.py", line 195, in fsync
    self.save()
  File "dokuwikifuse.py", line 133, in save
    dw.medias.set(self.doku_path, self.content, overwrite=True)
  File "/sne/home/lmakowski/dokuwikifuse/venv/src/dokuwiki/dokuwiki.py", line 204, in set
    b64encode(_bytes), ow=overwrite)
  File "/sne/home/lmakowski/dokuwikifuse/venv/src/dokuwiki/dokuwiki.py", line 61, in send
    raise DokuWikiError(err)
dokuwiki.DokuWikiError: <Fault 1: 'Upload denied. This file extension is forbidden!'>

During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "dokuwikifuse.py", line 274, in <module>
    llfuse.close()
  File "src/fuse_api.pxi", line 520, in llfuse.close (src/llfuse.c:37357)
  File "src/handlers.pxi", line 26, in llfuse.fuse_destroy (src/llfuse.c:7094)
  File "/sne/home/lmakowski/dokuwikifuse/venv/src/easyfuse/easyfuse/operations.py", line 98, in destroy
    self.fullsync()
  File "/sne/home/lmakowski/dokuwikifuse/venv/src/easyfuse/easyfuse/operations.py", line 70, in fullsync
    self.fsyncdir(ROOT_INODE, True)
  File "/sne/home/lmakowski/dokuwikifuse/venv/src/easyfuse/easyfuse/operations.py", line 325, in fsyncdir
    self.fs[fh].fsync()
  File "/sne/home/lmakowski/dokuwikifuse/venv/src/easyfuse/easyfuse/filesystem.py", line 314, in fsync
    c.fsync()
  File "/sne/home/lmakowski/dokuwikifuse/venv/src/easyfuse/easyfuse/filesystem.py", line 314, in fsync
    c.fsync()
  File "/sne/home/lmakowski/dokuwikifuse/venv/src/easyfuse/easyfuse/filesystem.py", line 195, in fsync
    self.save()
  File "/usr/lib/python3.4/contextlib.py", line 77, in __exit__
    self.gen.throw(type, value, traceback)
  File "/sne/home/lmakowski/dokuwikifuse/venv/src/easyfuse/easyfuse/utils.py", line 23, in _convert_error_to_fuse_error
    raise FUSEError(errno.EAGAIN)
llfuse.FUSEError: Resource temporarily unavailable
JelteF commented 8 years ago

Weird, an llfuse error should be passed on to the filesystem without crashing the script.