解决本地的dns的解析问题
This commit is contained in:
parent
f22e962bd7
commit
70f8b1c3e2
@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user