From fb1772f019b42bc60f667c37a5f6963d869a4ce6 Mon Sep 17 00:00:00 2001 From: Chocobo1 Date: Tue, 14 Jul 2015 15:59:15 +0800 Subject: [PATCH 1/3] Rewrite TrackerList::reannounceSelected(), now it can force reannounce DHT --- src/gui/properties/trackerlist.cpp | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/src/gui/properties/trackerlist.cpp b/src/gui/properties/trackerlist.cpp index 398430b28..c8bfafabf 100644 --- a/src/gui/properties/trackerlist.cpp +++ b/src/gui/properties/trackerlist.cpp @@ -400,16 +400,23 @@ void TrackerList::editSelectedTracker() { #if LIBTORRENT_VERSION_NUM >= 10000 void TrackerList::reannounceSelected() { + QList selected_items = selectedItems(); + if (selected_items.isEmpty()) return; + BitTorrent::TorrentHandle *const torrent = properties->getCurrentTorrent(); if (!torrent) return; + QList trackers = torrent->trackers(); - QList selected_items = getSelectedTrackerItems(); - if (selected_items.isEmpty()) return; + foreach (QTreeWidgetItem* item, selected_items) { + // DHT case + if (item == dht_item) { + torrent->forceDHTAnnounce(); + continue; + } - QList trackers = torrent->trackers(); - for (int i = 0; i < trackers.size(); ++i) { - foreach (QTreeWidgetItem* w, selected_items) { - if (w->text(COL_URL) == trackers[i].url()) { + // Trackers case + for (int i = 0; i < trackers.size(); ++i) { + if (item->text(COL_URL) == trackers[i].url()) { torrent->forceReannounce(i); break; } From 4d6bde973119c5d906a036923cb967fb9464b690 Mon Sep 17 00:00:00 2001 From: Chocobo1 Date: Tue, 14 Jul 2015 16:18:16 +0800 Subject: [PATCH 2/3] Remove announce to DHT after editing tracker list --- src/gui/properties/trackerlist.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/gui/properties/trackerlist.cpp b/src/gui/properties/trackerlist.cpp index c8bfafabf..6013463ab 100644 --- a/src/gui/properties/trackerlist.cpp +++ b/src/gui/properties/trackerlist.cpp @@ -394,7 +394,6 @@ void TrackerList::editSelectedTracker() { torrent->replaceTrackers(trackers); if (!torrent->isPaused()) { torrent->forceReannounce(); - torrent->forceDHTAnnounce(); } } From 8873900df346af3cd14892eff60020ca090fcf8c Mon Sep 17 00:00:00 2001 From: Chocobo1 Date: Tue, 14 Jul 2015 16:14:17 +0800 Subject: [PATCH 3/3] Also reannounce to DHT when "Force reannounce to all trackers" is selected --- src/gui/properties/trackerlist.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/gui/properties/trackerlist.cpp b/src/gui/properties/trackerlist.cpp index 6013463ab..70cf0e07f 100644 --- a/src/gui/properties/trackerlist.cpp +++ b/src/gui/properties/trackerlist.cpp @@ -474,7 +474,9 @@ void TrackerList::showTrackerListMenu(QPoint) { } #endif if (act == reannounceAct) { - properties->getCurrentTorrent()->forceReannounce(); + BitTorrent::TorrentHandle *h = properties->getCurrentTorrent(); + h->forceReannounce(); + h->forceDHTAnnounce(); return; } if (act == editAct) {