diff options
Diffstat (limited to 'src/SessionSerializer.cc')
| -rw-r--r-- | src/SessionSerializer.cc | 17 |
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(), |
