diff options
author | Bent Bisballe Nyeng <deva@aasimon.org> | 2011-10-07 14:02:06 +0200 |
---|---|---|
committer | Bent Bisballe Nyeng <deva@aasimon.org> | 2011-10-07 14:02:06 +0200 |
commit | 49fb23e82473d3e650ff4d3c2bf9e365455ef74c (patch) | |
tree | 80e0fd5f0f9e34087d7301acf9eae5f8b956faff /server/src | |
parent | 5843ee0f637be32b89ab5b8a17dd8b4427bf59b3 (diff) |
Dump sessions in session xml files before discard, when session_discard_path is in the config file.
Diffstat (limited to 'server/src')
-rw-r--r-- | server/src/configuration.cc | 1 | ||||
-rw-r--r-- | server/src/configuration.h | 1 | ||||
-rw-r--r-- | server/src/configurationparser.cc | 6 | ||||
-rw-r--r-- | server/src/session.cc | 7 |
4 files changed, 15 insertions, 0 deletions
diff --git a/server/src/configuration.cc b/server/src/configuration.cc index b222639..65eeae6 100644 --- a/server/src/configuration.cc +++ b/server/src/configuration.cc @@ -61,3 +61,4 @@ int Conf::connection_limit = 42; int Conf::connection_timeout = 0; std::string Conf::session_path = "/tmp"; +std::string Conf::session_discard_path = ""; diff --git a/server/src/configuration.h b/server/src/configuration.h index b6adadc..bf05572 100644 --- a/server/src/configuration.h +++ b/server/src/configuration.h @@ -69,6 +69,7 @@ namespace Conf { extern int connection_timeout; extern std::string session_path; + extern std::string session_discard_path; }; #endif/*__ARTEFACT_CONFIGURATION_H__*/ diff --git a/server/src/configurationparser.cc b/server/src/configurationparser.cc index 0796cb9..ca78c84 100644 --- a/server/src/configurationparser.cc +++ b/server/src/configurationparser.cc @@ -195,6 +195,12 @@ void ConfigurationParser::reload() Conf::session_path = s; } catch( ... ) { } + + try { + std::string s = lookup("session_discard_path"); + Conf::session_discard_path = s; + } catch( ... ) { + } } #ifdef TEST_CONFIGURATIONPARSER diff --git a/server/src/session.cc b/server/src/session.cc index e236416..8071d45 100644 --- a/server/src/session.cc +++ b/server/src/session.cc @@ -152,10 +152,17 @@ void Session::discard() { DEBUG(session, "[%p] discard(sessionid: '%s')\n", this, sessionid.c_str()); + // Store session file in discarded folder before deleting. + if(isreadonly == false && Conf::session_discard_path != "") { + SessionSerialiser ser(env, Conf::session_discard_path); + ser.save(this); + } + if(_journal) { delete _journal; _journal = NULL; } + if(isreadonly == false) { AutoBorrower<Database*> borrower(env->dbpool); Database *db = borrower.get(); |