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")) {