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 { | ||||
|             Ok(()) | ||||
|         } 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); | ||||
|                 if self.write_buf.remaining() == 0 { | ||||
|                     Ok(()) | ||||
|                 } else { | ||||
|                     Err(io::Error::new(io::ErrorKind::WouldBlock, "wouldblock")) | ||||
|                     return Ok(()) | ||||
|                 } | ||||
|             }) | ||||
|             } | ||||
|         } | ||||
|     } | ||||
| } | ||||
| @@ -295,7 +294,6 @@ impl WriteBuf { | ||||
|             trace!("WriteBuf reserving initial {}", init); | ||||
|             vec.reserve(init); | ||||
|         } 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)); | ||||
|             trace!("WriteBuf reserved {}", vec.capacity() - cap); | ||||
|         } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user