summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--netfs/fuse/fuseApp.cpp9
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;
}