diff --git a/winixd/core/sessionmanager.cpp b/winixd/core/sessionmanager.cpp index 70a0d15..3afb29f 100644 --- a/winixd/core/sessionmanager.cpp +++ b/winixd/core/sessionmanager.cpp @@ -652,26 +652,34 @@ void SessionManager::LoadSessions() SessionParser sp; SessionContainer::Iterator i; - sp.set_dependency(this); - - // sessions will be overwritten (pointers are invalidated) - cur->session = &temporary_session; - - sp.SetUsers(&system->users); - sp.Parse(config->session_file, session_tab); - - for(i=session_tab.Begin() ; i != session_tab.End() ; ++i) + if( !config->session_file.empty() ) { - i->plugin_data.Resize(plugin->Size()); - plugin->Call(&(*i), WINIX_SESSION_CREATED); + sp.set_dependency(this); - /* - !! IMPROVE ME - we do not add it to the last_container (we don't have IP address stored yet) - */ + // sessions will be overwritten (pointers are invalidated) + cur->session = &temporary_session; - if( i->puser ) - plugin->Call(&(*i), WINIX_USER_LOGGED); + sp.SetUsers(&system->users); + sp.Parse(config->session_file, session_tab); + + for(i=session_tab.Begin() ; i != session_tab.End() ; ++i) + { + i->plugin_data.Resize(plugin->Size()); + plugin->Call(&(*i), WINIX_SESSION_CREATED); + + /* + !! IMPROVE ME + we do not add it to the last_container (we don't have IP address stored yet) + */ + + if( i->puser ) + plugin->Call(&(*i), WINIX_USER_LOGGED); + } + } + else + { + // FIXME this log is not printed, why? + main_log << log1 << "SM: session_file config parameter is empty, not loading sessions" << logend; } cur->session = &temporary_session; @@ -686,7 +694,10 @@ void SessionManager::SaveSessions() char file_path[WINIX_OS_PATH_SIZE]; if( config->session_file.empty() ) + { + main_log << log1 << "SM: session_file config parameter is empty, not saving sessions - sessions lost" << logend; return; + } if( !wide_to_utf8(config->session_file, file_path, WINIX_OS_PATH_SIZE) ) return;