summaryrefslogtreecommitdiff
path: root/src/SessionSerializer.cc
diff options
context:
space:
mode:
Diffstat (limited to 'src/SessionSerializer.cc')
-rw-r--r--src/SessionSerializer.cc17
1 files changed, 17 insertions, 0 deletions
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<RequestGroup>& rg = (*itr).second;
+ SharedHandle<DownloadResult> 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(),