|
@@ -4,7 +4,7 @@ use managed::ManagedSlice;
|
|
|
|
|
|
use crate::socket::{Context, PollAt, Socket};
|
|
|
use crate::time::{Duration, Instant};
|
|
|
-use crate::wire::dns::{Flags, Opcode, Packet, Question, Record, RecordData, Repr, Type};
|
|
|
+use crate::wire::dns::{Flags, Opcode, Packet, Question, Rcode, Record, RecordData, Repr, Type};
|
|
|
use crate::wire::{IpAddress, IpEndpoint, IpProtocol, IpRepr, Ipv4Address, UdpRepr};
|
|
|
use crate::{rand, Error, Result};
|
|
|
|
|
@@ -238,6 +238,13 @@ impl<'a> DnsSocket<'a> {
|
|
|
continue;
|
|
|
}
|
|
|
|
|
|
+ if p.rcode() == Rcode::NXDomain {
|
|
|
+ net_trace!("rcode NXDomain");
|
|
|
+
|
|
|
+ q.state = State::Failure;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
let payload = p.payload();
|
|
|
let (mut payload, question) = Question::parse(payload)?;
|
|
|
|