From 70f8b1c3e291b835e94033e7716d72ec0054158d Mon Sep 17 00:00:00 2001 From: anlicheng <244108715@qq.com> Date: Fri, 10 Apr 2026 15:31:38 +0800 Subject: [PATCH] =?UTF-8?q?=E8=A7=A3=E5=86=B3=E6=9C=AC=E5=9C=B0=E7=9A=84dn?= =?UTF-8?q?s=E7=9A=84=E8=A7=A3=E6=9E=90=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Tun/Punchnet/DNS/DNSLocalClient.swift | 39 +++++++++++++-------------- 1 file changed, 19 insertions(+), 20 deletions(-) diff --git a/Tun/Punchnet/DNS/DNSLocalClient.swift b/Tun/Punchnet/DNS/DNSLocalClient.swift index 282d2cb..76b0d90 100644 --- a/Tun/Punchnet/DNS/DNSLocalClient.swift +++ b/Tun/Punchnet/DNS/DNSLocalClient.swift @@ -81,26 +81,25 @@ final class DNSLocalClient { } private func handleResponse(data: Data) { - let dnsParser = DNSParser(data: data, offset: 0) - if let message = dnsParser.parse() { - let tranId = message.transactionID - - locker.lock() - let items = self.trackers.removeValue(forKey: tranId) - locker.unlock() - - if let items { - items.forEach { tracker in - let packet = Self.createDNSResponse( - payload: data, - srcIP: DNSHelper.dnsDestIpAddr, - srcPort: 53, - destIP: tracker.clientIP, - destPort: tracker.clientPort - ) - self.packetContinuation.yield(packet) - } - } + guard data.count > 2 else { + return + } + + let tranId = UInt16(data[0]) << 8 | UInt16(data[1]) + + locker.lock() + let items = self.trackers.removeValue(forKey: tranId) + locker.unlock() + + items?.forEach { tracker in + let packet = Self.createDNSResponse( + payload: data, + srcIP: DNSHelper.dnsDestIpAddr, + srcPort: 53, + destIP: tracker.clientIP, + destPort: tracker.clientPort + ) + self.packetContinuation.yield(packet) } }