解决本地的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) {
let dnsParser = DNSParser(data: data, offset: 0)
if let message = dnsParser.parse() {
let tranId = message.transactionID
guard data.count > 2 else {
return
}
locker.lock()
let items = self.trackers.removeValue(forKey: tranId)
locker.unlock()
let tranId = UInt16(data[0]) << 8 | UInt16(data[1])
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)
}
}
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)
}
}