fix(http): keep flushing until WOULDBLOCK is received
This commit is contained in:
@@ -129,14 +129,13 @@ impl<T: Write> Write for Buffered<T> {
|
|||||||
if self.write_buf.remaining() == 0 {
|
if self.write_buf.remaining() == 0 {
|
||||||
Ok(())
|
Ok(())
|
||||||
} else {
|
} else {
|
||||||
self.write_buf.write_into(&mut self.io).and_then(|n| {
|
loop {
|
||||||
|
let n = try!(self.write_buf.write_into(&mut self.io));
|
||||||
debug!("flushed {} bytes", n);
|
debug!("flushed {} bytes", n);
|
||||||
if self.write_buf.remaining() == 0 {
|
if self.write_buf.remaining() == 0 {
|
||||||
Ok(())
|
return Ok(())
|
||||||
} else {
|
|
||||||
Err(io::Error::new(io::ErrorKind::WouldBlock, "wouldblock"))
|
|
||||||
}
|
}
|
||||||
})
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -295,7 +294,6 @@ impl WriteBuf {
|
|||||||
trace!("WriteBuf reserving initial {}", init);
|
trace!("WriteBuf reserving initial {}", init);
|
||||||
vec.reserve(init);
|
vec.reserve(init);
|
||||||
} else if cap < MAX_BUFFER_SIZE {
|
} else if cap < MAX_BUFFER_SIZE {
|
||||||
trace!("maybe_reserve MAX={}, needed={}, cap={}", MAX_BUFFER_SIZE, needed, cap);
|
|
||||||
vec.reserve(cmp::min(needed, MAX_BUFFER_SIZE - cap));
|
vec.reserve(cmp::min(needed, MAX_BUFFER_SIZE - cap));
|
||||||
trace!("WriteBuf reserved {}", vec.capacity() - cap);
|
trace!("WriteBuf reserved {}", vec.capacity() - cap);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user