diff --git a/src/gui/properties/trackerlist.cpp b/src/gui/properties/trackerlist.cpp index 398430b28..70cf0e07f 100644 --- a/src/gui/properties/trackerlist.cpp +++ b/src/gui/properties/trackerlist.cpp @@ -394,22 +394,28 @@ void TrackerList::editSelectedTracker() { torrent->replaceTrackers(trackers); if (!torrent->isPaused()) { torrent->forceReannounce(); - torrent->forceDHTAnnounce(); } } #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; } @@ -468,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) {