summaryrefslogtreecommitdiff
path: root/src/SaveSessionCommand.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/SaveSessionCommand.cc')
-rw-r--r--src/SaveSessionCommand.cc15
1 files changed, 13 insertions, 2 deletions
diff --git a/src/SaveSessionCommand.cc b/src/SaveSessionCommand.cc
index d94815ad..7e557f27 100644
--- a/src/SaveSessionCommand.cc
+++ b/src/SaveSessionCommand.cc
@@ -60,12 +60,23 @@ void SaveSessionCommand::preProcess()
void SaveSessionCommand::process()
{
+ auto& rgman = getDownloadEngine()->getRequestGroupMan();
+
+ if(!rgman->getRequireSaveSession()) {
+ A2_LOG_INFO("No change in queues since last serialization or startup. "
+ "No serialization is necessary this time.");
+ return;
+ }
+
const std::string& filename = getDownloadEngine()->getOption()
->get(PREF_SAVE_SESSION);
+
if(!filename.empty()) {
- SessionSerializer sessionSerializer(getDownloadEngine()->
- getRequestGroupMan().get());
+ SessionSerializer sessionSerializer(rgman.get());
+
if(sessionSerializer.save(filename)) {
+ rgman->clearRequireSaveSession();
+
A2_LOG_NOTICE(fmt(_("Serialized session to '%s' successfully."),
filename.c_str()));
} else {