解决本地的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() locker.lock()
let items = self.trackers.removeValue(forKey: tranId)
if let items { locker.unlock()
items.forEach { tracker in
let packet = Self.createDNSResponse( items?.forEach { tracker in
payload: data, let packet = Self.createDNSResponse(
srcIP: DNSHelper.dnsDestIpAddr, payload: data,
srcPort: 53, srcIP: DNSHelper.dnsDestIpAddr,
destIP: tracker.clientIP, srcPort: 53,
destPort: tracker.clientPort destIP: tracker.clientIP,
) destPort: tracker.clientPort
self.packetContinuation.yield(packet) )
} self.packetContinuation.yield(packet)
}
} }
} }