解决本地的dns的解析问题

This commit is contained in:
anlicheng 2026-04-10 15:31:38 +08:00
parent f22e962bd7
commit 70f8b1c3e2

View File

@ -81,26 +81,25 @@ final class DNSLocalClient {
} }
private func handleResponse(data: Data) { private func handleResponse(data: Data) {
let dnsParser = DNSParser(data: data, offset: 0) guard data.count > 2 else {
if let message = dnsParser.parse() { return
let tranId = message.transactionID }
locker.lock() let tranId = UInt16(data[0]) << 8 | UInt16(data[1])
let items = self.trackers.removeValue(forKey: tranId)
locker.unlock()
if let items { locker.lock()
items.forEach { tracker in let items = self.trackers.removeValue(forKey: tranId)
let packet = Self.createDNSResponse( locker.unlock()
payload: data,
srcIP: DNSHelper.dnsDestIpAddr, items?.forEach { tracker in
srcPort: 53, let packet = Self.createDNSResponse(
destIP: tracker.clientIP, payload: data,
destPort: tracker.clientPort srcIP: DNSHelper.dnsDestIpAddr,
) srcPort: 53,
self.packetContinuation.yield(packet) destIP: tracker.clientIP,
} destPort: tracker.clientPort
} )
self.packetContinuation.yield(packet)
} }
} }