From 3fc45edaa7eeb944c42b099f66d5eec6a9382bc2 Mon Sep 17 00:00:00 2001 From: Tatsuhiro Tsujikawa Date: Mon, 4 Feb 2013 21:50:09 +0900 Subject: Fix bug that active downloads are not saved with --save-session-interval --- src/SessionSerializer.cc | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'src/SessionSerializer.cc') diff --git a/src/SessionSerializer.cc b/src/SessionSerializer.cc index 4cd0e170..519cf338 100644 --- a/src/SessionSerializer.cc +++ b/src/SessionSerializer.cc @@ -212,6 +212,23 @@ bool SessionSerializer::save(BufferedFile& fp) const } } } + { + // Save active downloads. + const RequestGroupList& groups = rgman_->getRequestGroups(); + for(RequestGroupList::SeqType::const_iterator itr = groups.begin(), + eoi = groups.end(); itr != eoi; ++itr) { + const SharedHandle& rg = (*itr).second; + SharedHandle dr = rg->createDownloadResult(); + bool stopped = dr->result == error_code::FINISHED || + dr->result == error_code::REMOVED; + if((!stopped && saveInProgress_) || + (stopped && dr->option->getAsBool(PREF_FORCE_SAVE))) { + if(!writeDownloadResult(fp, metainfoCache, dr)) { + return false; + } + } + } + } if(saveWaiting_) { const RequestGroupList& groups = rgman_->getReservedGroups(); for(RequestGroupList::SeqType::const_iterator itr = groups.begin(), -- cgit