This commit is contained in:
Nikolay Kim 2018-05-08 15:44:50 -07:00
parent 40b01df846
commit 75861a21ae
5 changed files with 23 additions and 15 deletions

View File

@ -1,5 +1,10 @@
# Changes # Changes
## 0.5.7 (2018-05-09)
* Fix http/2 payload streaming #215
## 0.5.6 (2018-04-24) ## 0.5.6 (2018-04-24)
* Make flate2 crate optional #200 * Make flate2 crate optional #200

View File

@ -1,6 +1,6 @@
[package] [package]
name = "actix-web" name = "actix-web"
version = "0.5.6" version = "0.5.7"
authors = ["Nikolay Kim <fafhrd91@gmail.com>"] authors = ["Nikolay Kim <fafhrd91@gmail.com>"]
description = "Actix web is a simple, pragmatic and extremely fast web framework for Rust." description = "Actix web is a simple, pragmatic and extremely fast web framework for Rust."
readme = "README.md" readme = "README.md"

View File

@ -491,8 +491,8 @@ impl<S: 'static, H> ProcessResponse<S, H> {
if let Some(err) = self.resp.error() { if let Some(err) = self.resp.error() {
if self.resp.status().is_server_error() { if self.resp.status().is_server_error() {
error!( error!(
"Error occured during request handling: {}", "Error occured during request handling, status: {} {}",
err self.resp.status(), err
); );
} else { } else {
warn!( warn!(

View File

@ -343,24 +343,27 @@ impl<H: 'static> Entry<H> {
} }
fn poll_payload(&mut self) { fn poll_payload(&mut self) {
if !self.flags.contains(EntryFlags::REOF) { while !self.flags.contains(EntryFlags::REOF)
if self.payload.need_read() == PayloadStatus::Read { && self.payload.need_read() == PayloadStatus::Read
if let Err(err) = self.recv.release_capacity().release_capacity(32_768) { {
self.payload.set_error(PayloadError::Http2(err))
}
} else if let Err(err) = self.recv.release_capacity().release_capacity(0) {
self.payload.set_error(PayloadError::Http2(err))
}
match self.recv.poll() { match self.recv.poll() {
Ok(Async::Ready(Some(chunk))) => { Ok(Async::Ready(Some(chunk))) => {
let l = chunk.len();
self.payload.feed_data(chunk); self.payload.feed_data(chunk);
if let Err(err) = self.recv.release_capacity().release_capacity(l) {
self.payload.set_error(PayloadError::Http2(err));
break;
}
} }
Ok(Async::Ready(None)) => { Ok(Async::Ready(None)) => {
self.flags.insert(EntryFlags::REOF); self.flags.insert(EntryFlags::REOF);
self.payload.feed_eof();
}
Ok(Async::NotReady) => break,
Err(err) => {
self.payload.set_error(PayloadError::Http2(err));
break;
} }
Ok(Async::NotReady) => (),
Err(err) => self.payload.set_error(PayloadError::Http2(err)),
} }
} }
} }

View File

@ -814,7 +814,7 @@ fn test_h2() {
}) })
}); });
let _res = core.run(tcp); let _res = core.run(tcp);
// assert_eq!(res.unwrap(), Bytes::from_static(STR.as_ref())); // assert_eq!(_res.unwrap(), Bytes::from_static(STR.as_ref()));
} }
#[test] #[test]