Compare commits

4 Commits
imp ... master

Author SHA1 Message Date
4JX
b088466fea Switch pseudo header order to mimic chrome
Some checks failed
CI / Check Style (push) Has been cancelled
CI / Test (beta) (push) Has been cancelled
CI / Test (nightly) (push) Has been cancelled
CI / Test (stable) (push) Has been cancelled
CI / Check MSRV (1.56) (push) Has been cancelled
2022-08-17 19:06:56 +02:00
4JX
7c45fd1657 Merge branch 'hyperium:master' into master 2022-08-17 15:40:32 +00:00
4JX
ee6d3fd5e1 Add a setter for header_table_size 2022-08-17 17:13:12 +02:00
4JX
d05d0a7a93 Uncomment set_header_table_size 2022-08-16 16:34:15 +02:00
8 changed files with 4 additions and 84 deletions

3
.gitignore vendored
View File

@@ -1,10 +1,11 @@
target
Cargo.lock
h2spec
.history
# These are backup files generated by rustfmt
**/*.rs.bk
# Files generated by honggfuzz
hfuzz_target
hfuzz_workspace
hfuzz_workspace

View File

@@ -1022,34 +1022,7 @@ impl Builder {
self
}
/// Sets the header table size.
///
/// This setting informs the peer of the maximum size of the header compression
/// table used to encode header blocks, in octets. The encoder may select any value
/// equal to or less than the header table size specified by the sender.
///
/// The default value is 4,096.
///
/// # Examples
///
/// ```
/// # use tokio::io::{AsyncRead, AsyncWrite};
/// # use h2::client::*;
/// # use bytes::Bytes;
/// #
/// # async fn doc<T: AsyncRead + AsyncWrite + Unpin>(my_io: T)
/// # -> Result<((SendRequest<Bytes>, Connection<T, Bytes>)), h2::Error>
/// # {
/// // `client_fut` is a future representing the completion of the HTTP/2
/// // handshake.
/// let client_fut = Builder::new()
/// .header_table_size(1_000_000)
/// .handshake(my_io);
/// # client_fut.await
/// # }
/// #
/// # pub fn main() {}
/// ```
/// Sets the header table size
pub fn header_table_size(&mut self, size: u32) -> &mut Self {
self.settings.set_header_table_size(Some(size));
self

View File

@@ -88,12 +88,6 @@ impl<T> FramedRead<T> {
pub fn set_max_header_list_size(&mut self, val: usize) {
self.max_header_list_size = val;
}
/// Update the header table size setting.
#[inline]
pub fn set_header_table_size(&mut self, val: usize) {
self.hpack.queue_size_update(val);
}
}
/// Decodes a frame.

View File

@@ -95,11 +95,6 @@ impl<T, B> Codec<T, B> {
self.framed_write().set_header_table_size(val)
}
/// Set the decoder header table size size.
pub fn set_recv_header_table_size(&mut self, val: usize) {
self.inner.set_header_table_size(val)
}
/// Set the max header list size that can be received.
pub fn set_max_recv_header_list_size(&mut self, val: usize) {
self.inner.set_max_header_list_size(val);

View File

@@ -120,7 +120,7 @@ impl Settings {
pub fn header_table_size(&self) -> Option<u32> {
self.header_table_size
}
pub fn set_header_table_size(&mut self, size: Option<u32>) {
self.header_table_size = size;
}

View File

@@ -60,10 +60,6 @@ impl Settings {
codec.set_max_recv_header_list_size(max as usize);
}
if let Some(val) = local.header_table_size() {
codec.set_recv_header_table_size(val as usize);
}
streams.apply_local_settings(local)?;
self.local = Local::Synced;
Ok(())

View File

@@ -372,11 +372,6 @@ impl Mock<frame::Settings> {
self.0.set_enable_connect_protocol(Some(val));
self
}
pub fn header_table_size(mut self, val: u32) -> Self {
self.0.set_header_table_size(Some(val));
self
}
}
impl From<Mock<frame::Settings>> for frame::Settings {

View File

@@ -1452,40 +1452,6 @@ async fn extended_connect_request() {
join(srv, h2).await;
}
#[tokio::test]
async fn client_builder_header_table_size() {
h2_support::trace_init!();
let (io, mut srv) = mock::new();
let mut settings = frame::Settings::default();
settings.set_header_table_size(Some(10000));
let srv = async move {
let recv_settings = srv.assert_client_handshake().await;
assert_frame_eq(recv_settings, settings);
srv.recv_frame(
frames::headers(1)
.request("GET", "https://example.com/")
.eos(),
)
.await;
srv.send_frame(frames::headers(1).response(200).eos()).await;
};
let mut builder = client::Builder::new();
builder.header_table_size(10000);
let h2 = async move {
let (mut client, mut h2) = builder.handshake::<_, Bytes>(io).await.unwrap();
let request = Request::get("https://example.com/").body(()).unwrap();
let (response, _) = client.send_request(request, true).unwrap();
h2.drive(response).await.unwrap();
};
join(srv, h2).await;
}
const SETTINGS: &'static [u8] = &[0, 0, 0, 4, 0, 0, 0, 0, 0];
const SETTINGS_ACK: &'static [u8] = &[0, 0, 0, 4, 1, 0, 0, 0, 0];