diff options
| author | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2013-02-04 21:50:09 +0900 |
|---|---|---|
| committer | Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com> | 2013-02-04 21:50:09 +0900 |
| commit | 3fc45edaa7eeb944c42b099f66d5eec6a9382bc2 (patch) | |
| tree | 1f221fa721e4679b69bc53d2351fbcb5657ccdfc /src/SessionSerializer.cc | |
| parent | d1c88fbabf8ecf82111fb03495c0246958661903 (diff) | |
Fix bug that active downloads are not saved with --save-session-interval
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(), |
