diff --git a/doc/rtorrent.1.xml b/doc/rtorrent.1.xml index 3ec568d9..74e1385c 100644 --- a/doc/rtorrent.1.xml +++ b/doc/rtorrent.1.xml @@ -739,6 +739,16 @@ gives the client 128 sockets to use as it wishes. + + send_buffer_size = value + receive_buffer_size = value + + +Adjust the send and receive buffer size for socket. + + + + umask = 0644 diff --git a/src/core/download_list.cc b/src/core/download_list.cc index 3858e628..85853d50 100644 --- a/src/core/download_list.cc +++ b/src/core/download_list.cc @@ -432,11 +432,18 @@ void DownloadList::hash_clear(Download* download) { check_contains(download); + // Set hash failed so close_throw won't cause the hash queue to + // reopen this download. + download->set_hash_failed(true); + close_throw(download); download->download()->hash_resume_clear(); download->set_hash_failed(false); + if (download->is_open()) + throw torrent::internal_error("DownloadList::hash_clear(...) download still open."); + // If any more stuff is added here, make sure resume etc are still // correct. std::for_each(slot_map_hash_queued().begin(), slot_map_hash_queued().end(), download_list_call(download)); diff --git a/src/core/manager.cc b/src/core/manager.cc index 7a5992b1..36313109 100644 --- a/src/core/manager.cc +++ b/src/core/manager.cc @@ -385,6 +385,9 @@ Manager::receive_hashing_changed() { if ((*itr)->is_hash_checked()) throw torrent::client_error("core::Manager::receive_hashing_changed() hash already checked."); + if ((*itr)->is_hash_failed()) + continue; + m_downloadList->open_throw(*itr); (*itr)->download()->hash_check();