From d96173453df3c3813920680da453f741e4708709 Mon Sep 17 00:00:00 2001 From: rakshasa Date: Sat, 7 May 2005 00:15:54 +0000 Subject: [PATCH] Fixed minor bugs in the resume save and start torrent code. git-svn-id: svn://rakshasa.no/libtorrent/trunk/rtorrent@434 e378c898-3ddf-0310-93e7-cc216c733640 --- doc/faq.xml | 5 ++--- src/core/manager.cc | 14 +++++++++++++- src/core/manager.h | 2 ++ src/ui/download_list.cc | 2 +- 4 files changed, 18 insertions(+), 5 deletions(-) diff --git a/doc/faq.xml b/doc/faq.xml index dcdac99c..52e7dd16 100644 --- a/doc/faq.xml +++ b/doc/faq.xml @@ -25,15 +25,14 @@ How does the session feature work? - + When you start the client you can use the "-s" switch to specify a session directory. The client will save all currently running torrents in the session directory and fast resume data will be written when the client exits. Upon restarting the client it will resume all the torrents in the - session directory. Note that the filenames must be in the - ".torrent" format. + session directory. diff --git a/src/core/manager.cc b/src/core/manager.cc index 3b7ca688..e46d440e 100644 --- a/src/core/manager.cc +++ b/src/core/manager.cc @@ -106,10 +106,22 @@ Manager::stop(Download* d) { d->stop(); - d->get_download().hash_save(); + if (d->get_download().is_hash_checked()) + d->get_download().hash_save(); + m_downloadStore.save(d); } +void +Manager::start_safe(Download* d) { + try { + start(d); + } catch (torrent::local_error& e) { + m_logImportant.push_front(e.what()); + m_logComplete.push_front(e.what()); + } +} + void Manager::set_dns(const std::string& dns) { unsigned int a, b, c, d; diff --git a/src/core/manager.h b/src/core/manager.h index 5f03723c..2253cf57 100644 --- a/src/core/manager.h +++ b/src/core/manager.h @@ -64,6 +64,8 @@ public: void start(Download* d); void stop(Download* d); + void start_safe(Download* d); + const std::string& get_dns() { return m_dns; } void set_dns(const std::string& dns); diff --git a/src/ui/download_list.cc b/src/ui/download_list.cc index 8c36eaeb..7a429e4d 100644 --- a/src/ui/download_list.cc +++ b/src/ui/download_list.cc @@ -187,7 +187,7 @@ DownloadList::receive_start_download() { if (m_downloadList.get_focus() == m_downloadList.end()) return; - m_control->get_core().start(*m_downloadList.get_focus()); + m_control->get_core().start_safe(*m_downloadList.get_focus()); } void