Fixed #411 (very big DNS result over DoH).
This commit is contained in:
@@ -166,6 +166,9 @@ impl VectorPacketBuffer {
|
|||||||
|
|
||||||
impl PacketBuffer for VectorPacketBuffer {
|
impl PacketBuffer for VectorPacketBuffer {
|
||||||
fn read(&mut self) -> Result<u8> {
|
fn read(&mut self) -> Result<u8> {
|
||||||
|
if self.pos >= self.buffer.len() {
|
||||||
|
return Err(BufferError::EndOfBuffer);
|
||||||
|
}
|
||||||
let res = self.buffer[self.pos];
|
let res = self.buffer[self.pos];
|
||||||
self.pos += 1;
|
self.pos += 1;
|
||||||
|
|
||||||
@@ -173,10 +176,16 @@ impl PacketBuffer for VectorPacketBuffer {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn get(&mut self, pos: usize) -> Result<u8> {
|
fn get(&mut self, pos: usize) -> Result<u8> {
|
||||||
|
if pos >= self.buffer.len() {
|
||||||
|
return Err(BufferError::EndOfBuffer);
|
||||||
|
}
|
||||||
Ok(self.buffer[pos])
|
Ok(self.buffer[pos])
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_range(&mut self, start: usize, len: usize) -> Result<&[u8]> {
|
fn get_range(&mut self, start: usize, len: usize) -> Result<&[u8]> {
|
||||||
|
if start + len > self.buffer.len() {
|
||||||
|
return Err(BufferError::EndOfBuffer);
|
||||||
|
}
|
||||||
Ok(&self.buffer[start..start + len as usize])
|
Ok(&self.buffer[start..start + len as usize])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -617,7 +617,7 @@ impl DnsClient for HttpsDnsClient {
|
|||||||
Ok(size) => {
|
Ok(size) => {
|
||||||
let mut bytes: Vec<u8> = Vec::with_capacity(size);
|
let mut bytes: Vec<u8> = Vec::with_capacity(size);
|
||||||
response.into_body().into_reader()
|
response.into_body().into_reader()
|
||||||
.take(4096)
|
.take(65535)
|
||||||
.read_to_end(&mut bytes)?;
|
.read_to_end(&mut bytes)?;
|
||||||
let mut buffer = VectorPacketBuffer::new();
|
let mut buffer = VectorPacketBuffer::new();
|
||||||
buffer.buffer.extend_from_slice(bytes.as_slice());
|
buffer.buffer.extend_from_slice(bytes.as_slice());
|
||||||
|
|||||||
Reference in New Issue
Block a user