diff options
-rw-r--r-- | netfs/fuse/fuseApp.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/netfs/fuse/fuseApp.cpp b/netfs/fuse/fuseApp.cpp index 133860a..bc5caf0 100644 --- a/netfs/fuse/fuseApp.cpp +++ b/netfs/fuse/fuseApp.cpp @@ -180,7 +180,8 @@ NetFS::FuseApp::verifyConnection() int NetFS::FuseApp::onError(const std::exception & e) throw() { - if (dynamic_cast<const Ice::ObjectNotExistException *>(&e)) { + if (dynamic_cast<const Ice::SocketException *>(&e) || dynamic_cast<const Ice::TimeoutException *>(&e)) { + log(LOG_ERR, e.what()); verifyConnection(); connectSession(); connectToService(); @@ -188,6 +189,12 @@ NetFS::FuseApp::onError(const std::exception & e) throw() connectHandles(); return 0; } + if (dynamic_cast<const Ice::RequestFailedException *>(&e)) { + volume = NULL; + connectToVolume(); + connectHandles(); + return 0; + } if (dynamic_cast<const NetFS::AuthError *>(&e)) { return -EPERM; } |