fix(http): fix encoding when buffer is full
This commit is contained in:
		| @@ -803,6 +803,8 @@ mod tests { | ||||
|  | ||||
|     #[test] | ||||
|     fn test_conn_body_write_length() { | ||||
|         extern crate pretty_env_logger; | ||||
|         let _ = pretty_env_logger::init(); | ||||
|         let _: Result<(), ()> = future::lazy(|| { | ||||
|             let io = AsyncIo::new_buf(vec![], 0); | ||||
|             let mut conn = Conn::<_, http::Chunk, ServerTransaction>::new(io, Default::default()); | ||||
|   | ||||
| @@ -54,9 +54,12 @@ impl Encoder { | ||||
|                 chunked.encode(w, msg) | ||||
|             }, | ||||
|             Kind::Length(ref mut remaining) => { | ||||
|                 if msg.is_empty() { | ||||
|                     return Ok(0); | ||||
|                 } | ||||
|                 let n = { | ||||
|                     let max = cmp::min(*remaining as usize, msg.len()); | ||||
|                     trace!("sized write, len = {}", max); | ||||
|                     trace!("sized write, len = {}, remaining = {}", max, remaining); | ||||
|                     let slice = &msg[..max]; | ||||
|  | ||||
|                     try!(w.write_atomic(&[slice])) | ||||
|   | ||||
| @@ -130,7 +130,12 @@ impl<T: AsyncRead + AsyncWrite> Buffered<T> { | ||||
|  | ||||
| impl<T: Write> Write for Buffered<T> { | ||||
|     fn write(&mut self, data: &[u8]) -> io::Result<usize> { | ||||
|         Ok(self.write_buf.buffer(data)) | ||||
|         let n = self.write_buf.buffer(data); | ||||
|         if n == 0 { | ||||
|             Err(io::Error::from(io::ErrorKind::WouldBlock)) | ||||
|         } else { | ||||
|             Ok(n) | ||||
|         } | ||||
|     } | ||||
|  | ||||
|     fn flush(&mut self) -> io::Result<()> { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user