diff --git a/src/session_impl.cpp b/src/session_impl.cpp index ba3dd13a4..f05fcfd6e 100644 --- a/src/session_impl.cpp +++ b/src/session_impl.cpp @@ -3507,9 +3507,9 @@ namespace aux { if (t->state() == torrent_status::checking_files || t->state() == torrent_status::queued_for_checking) continue; - TORRENT_ASSERT(t->m_resume_data_loaded); if (t->is_auto_managed() && !t->has_error()) { + TORRENT_ASSERT(t->m_resume_data_loaded || !t->valid_metadata()); // this torrent is auto managed, add it to // the list (depending on if it's a seed or not) if (t->is_finished()) @@ -3519,6 +3519,7 @@ namespace aux { } else if (!t->is_paused()) { + TORRENT_ASSERT(t->m_resume_data_loaded || !t->valid_metadata()); --hard_limit; if (is_active(t, settings())) { diff --git a/src/torrent.cpp b/src/torrent.cpp index 4766f6c9d..0df0928ba 100644 --- a/src/torrent.cpp +++ b/src/torrent.cpp @@ -628,22 +628,22 @@ namespace libtorrent session_impl::torrent_map::iterator i = m_ses.m_torrents.find(m_torrent_file->info_hash()); if (i != m_ses.m_torrents.end()) { - if (!m_uuid.empty() && i->second->uuid().empty()) - i->second->set_uuid(m_uuid); - if (!m_url.empty() && i->second->url().empty()) - i->second->set_url(m_url); - if (!m_source_feed_url.empty() && i->second->source_feed_url().empty()) - i->second->set_source_feed_url(m_source_feed_url); + if (!m_uuid.empty() && i->second->uuid().empty()) + i->second->set_uuid(m_uuid); + if (!m_url.empty() && i->second->url().empty()) + i->second->set_url(m_url); + if (!m_source_feed_url.empty() && i->second->source_feed_url().empty()) + i->second->set_source_feed_url(m_source_feed_url); - // insert this torrent in the uuid index - if (!m_uuid.empty() || !m_url.empty()) - { - m_ses.m_uuids.insert(std::make_pair(m_uuid.empty() - ? m_url : m_uuid, i->second)); - } - set_error(error_code(errors::duplicate_torrent, get_libtorrent_category()), ""); - abort(); - return; + // insert this torrent in the uuid index + if (!m_uuid.empty() || !m_url.empty()) + { + m_ses.m_uuids.insert(std::make_pair(m_uuid.empty() + ? m_url : m_uuid, i->second)); + } + set_error(error_code(errors::duplicate_torrent, get_libtorrent_category()), ""); + abort(); + return; } m_ses.m_torrents.insert(std::make_pair(m_torrent_file->info_hash(), me)); @@ -1315,6 +1315,9 @@ namespace libtorrent m_ses.m_io_service.post(boost::bind(&torrent::files_checked, shared_from_this())); std::vector().swap(m_resume_data); lazy_entry().swap(m_resume_entry); +#ifdef TORRENT_DEBUG + m_resume_data_loaded = true; +#endif return; }