1
0
mirror of https://github.com/fafhrd91/actix-web synced 2024-11-30 10:42:55 +01:00

Fix buffer remaining capacity calcualtion

This commit is contained in:
Nikolay Kim 2019-12-09 21:44:26 +06:00
parent 0c1f5f9edc
commit 5132257b0d
3 changed files with 12 additions and 7 deletions

View File

@ -1,11 +1,13 @@
# Changes # Changes
## [1.0.0-alpha.5] - 2019-12-xx ## [1.0.0-alpha.5] - 2019-12-09
### Fixed ### Fixed
* Check `Upgrade` service readiness before calling it * Check `Upgrade` service readiness before calling it
* Fix buffer remaining capacity calcualtion
### Changed ### Changed
* Websockets: Ping and Pong should have binary data #1049 * Websockets: Ping and Pong should have binary data #1049

View File

@ -1,6 +1,6 @@
[package] [package]
name = "actix-http" name = "actix-http"
version = "1.0.0-alpha.4" version = "1.0.0-alpha.5"
authors = ["Nikolay Kim <fafhrd91@gmail.com>"] authors = ["Nikolay Kim <fafhrd91@gmail.com>"]
description = "Actix http primitives" description = "Actix http primitives"
readme = "README.md" readme = "README.md"

View File

@ -8,7 +8,7 @@ use actix_codec::{AsyncRead, AsyncWrite, Decoder, Encoder, Framed, FramedParts};
use actix_rt::time::{delay_until, Delay, Instant}; use actix_rt::time::{delay_until, Delay, Instant};
use actix_service::Service; use actix_service::Service;
use bitflags::bitflags; use bitflags::bitflags;
use bytes::{BufMut, BytesMut}; use bytes::BytesMut;
use log::{error, trace}; use log::{error, trace};
use crate::body::{Body, BodySize, MessageBody, ResponseBody}; use crate::body::{Body, BodySize, MessageBody, ResponseBody};
@ -751,8 +751,10 @@ where
}; };
loop { loop {
if inner.write_buf.remaining_mut() < LW_BUFFER_SIZE { let remaining =
inner.write_buf.reserve(HW_BUFFER_SIZE); inner.write_buf.capacity() - inner.write_buf.len();
if remaining < LW_BUFFER_SIZE {
inner.write_buf.reserve(HW_BUFFER_SIZE - remaining);
} }
let result = inner.poll_response(cx)?; let result = inner.poll_response(cx)?;
let drain = result == PollResponse::DrainWriteBuf; let drain = result == PollResponse::DrainWriteBuf;
@ -863,8 +865,9 @@ where
{ {
let mut read_some = false; let mut read_some = false;
loop { loop {
if buf.remaining_mut() < LW_BUFFER_SIZE { let remaining = buf.capacity() - buf.len();
buf.reserve(HW_BUFFER_SIZE); if remaining < LW_BUFFER_SIZE {
buf.reserve(HW_BUFFER_SIZE - remaining);
} }
match read(cx, io, buf) { match read(cx, io, buf) {