Previously, monotonic stream IDs (spec 5.1.1) for push promises were not enforced. This was due to push promises going through an entirely separate code path than normally initiated streams. This patch unifies the code path for initializing streams via both HEADERS and PUSH_PROMISE. This is done by first calling `recv.open` in both cases. Closes #272
38 lines
836 B
Rust
38 lines
836 B
Rust
mod connection;
|
|
mod error;
|
|
mod go_away;
|
|
mod peer;
|
|
mod ping_pong;
|
|
mod settings;
|
|
mod streams;
|
|
|
|
pub(crate) use self::connection::{Config, Connection};
|
|
pub(crate) use self::error::Error;
|
|
pub(crate) use self::peer::{Peer, Dyn as DynPeer};
|
|
pub(crate) use self::streams::{Key as StreamKey, StreamRef, OpaqueStreamRef, Streams};
|
|
pub(crate) use self::streams::{Prioritized, Open};
|
|
|
|
use codec::Codec;
|
|
|
|
use self::go_away::GoAway;
|
|
use self::ping_pong::PingPong;
|
|
use self::settings::Settings;
|
|
|
|
use frame::{self, Frame};
|
|
|
|
use futures::{task, Async, Poll};
|
|
use futures::task::Task;
|
|
|
|
use bytes::Buf;
|
|
|
|
use tokio_io::AsyncWrite;
|
|
|
|
pub type PingPayload = [u8; 8];
|
|
|
|
pub type WindowSize = u32;
|
|
|
|
// Constants
|
|
pub const MAX_WINDOW_SIZE: WindowSize = (1 << 31) - 1;
|
|
pub const DEFAULT_RESET_STREAM_MAX: usize = 10;
|
|
pub const DEFAULT_RESET_STREAM_SECS: u64 = 30;
|