From b4564f5f4eef9bee64796768068355d845a076c0 Mon Sep 17 00:00:00 2001 From: Chocobo1 Date: Sun, 2 Dec 2018 14:22:03 +0800 Subject: [PATCH] Use ip parameter from tracker request if provided Closes #9949. --- src/base/bittorrent/tracker.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/base/bittorrent/tracker.cpp b/src/base/bittorrent/tracker.cpp index dbb8bb7db..e519e4f7b 100644 --- a/src/base/bittorrent/tracker.cpp +++ b/src/base/bittorrent/tracker.cpp @@ -148,7 +148,9 @@ void Tracker::respondToAnnounceRequest() TrackerAnnounceRequest annonceReq; // IP - annonceReq.peer.ip = m_env.clientAddress; + // Use the "ip" parameter provided from tracker request first, then fall back to client IP if invalid + const QHostAddress paramIP {QString::fromLatin1(queryParams.value("ip"))}; + annonceReq.peer.ip = paramIP.isNull() ? m_env.clientAddress : paramIP; // 1. Get info_hash if (!queryParams.contains("info_hash")) {