From 6741febc2e5f74135941ab61164ae958287431e9 Mon Sep 17 00:00:00 2001 From: Bjoern Sikora Date: Tue, 16 Jul 2013 11:21:18 +0200 Subject: [PATCH] Don't exit program if state file could not be pared (for example corrupted or empty). This fixes mantis-bug#1739. --- src/logger.cpp | 2 +- src/serviceholder.cpp | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/logger.cpp b/src/logger.cpp index 37bc68d..dec7077 100644 --- a/src/logger.cpp +++ b/src/logger.cpp @@ -867,7 +867,7 @@ void Logger::print_exception_deserialize(const string& errMsg) const if ( level <= Loglevel ) { ostringstream msg; - msg << "Error while trying to de-serialize Serviceholder object: " << errMsg << endl; + msg << "Error while trying to de-serialize Serviceholder object: " << errMsg << ". Continue without recovering state from old services!" << endl; log_error(msg.str()); } } diff --git a/src/serviceholder.cpp b/src/serviceholder.cpp index c1c02e7..7f7968f 100644 --- a/src/serviceholder.cpp +++ b/src/serviceholder.cpp @@ -132,10 +132,12 @@ int Serviceholder::deserialize_services() } catch( const boost::archive::archive_exception& e ) { + // There is a corrupted object file, continue without recovering old Services' state. Log->print_exception_deserialize(e.what()); ifs.close(); - return -1; + return 0; } + SerializeServiceContainer::Ptr service_container(_service_container); IPAddrHelp = IPAddrHelper::Ptr(_ip_addr_helper); ifs.close(); -- 1.7.1