From 065de8e85f5007b93253b685c8c90a06ed1b2b58 Mon Sep 17 00:00:00 2001 From: Toshit Chawda Date: Mon, 21 Oct 2024 17:38:50 -0700 Subject: [PATCH] use h2-wasm --- Cargo.lock | 19 ++++++++++++++++--- Cargo.toml | 1 + client/Cargo.toml | 6 +++++- client/build.sh | 2 +- client/package.json | 2 +- client/publish.sh | 2 +- client/src/lib.rs | 10 ++++++++-- 7 files changed, 33 insertions(+), 9 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index cbfed96..dc6c814 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -683,7 +683,7 @@ dependencies = [ [[package]] name = "epoxy-client" -version = "2.1.13" +version = "2.1.14" dependencies = [ "async-compression", "async-trait", @@ -699,6 +699,7 @@ dependencies = [ "http-body-util", "hyper", "hyper-util-wasm", + "instant", "js-sys", "parking_lot_core", "pin-project-lite", @@ -1015,8 +1016,7 @@ dependencies = [ [[package]] name = "h2" version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "524e8ac6999421f49a846c2d4411f337e53497d8ec55d67753beffa43c5d9205" +source = "git+https://github.com/r58Playz/h2-wasm#5f06b28102b5e41771c5e3951bfffe8acba9da56" dependencies = [ "atomic-waker", "bytes", @@ -1025,6 +1025,7 @@ dependencies = [ "futures-sink", "http", "indexmap 2.6.0", + "instant", "slab", "tokio", "tokio-util", @@ -1297,6 +1298,18 @@ dependencies = [ "hashbrown 0.15.0", ] +[[package]] +name = "instant" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + [[package]] name = "ipconfig" version = "0.3.2" diff --git a/Cargo.toml b/Cargo.toml index 5cff12f..8928a92 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,3 +11,4 @@ opt-level = 3 [patch.crates-io] fastwebsockets = { git = "https://github.com/r58Playz/fastwebsockets" } +h2 = { git = "https://github.com/r58Playz/h2-wasm" } diff --git a/client/Cargo.toml b/client/Cargo.toml index 72e7c31..7e5425a 100644 --- a/client/Cargo.toml +++ b/client/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "epoxy-client" -version = "2.1.13" +version = "2.1.14" edition = "2021" [lib] @@ -50,6 +50,10 @@ features = ["web"] version = "*" features = ["nightly"] +[dependencies.instant] +version = "*" +features = ["wasm-bindgen"] + [features] default = ["full"] full = ["dep:fastwebsockets", "dep:async-compression", "dep:rustls-webpki", "dep:rustls-pemfile", "hyper-util-wasm/http2"] diff --git a/client/build.sh b/client/build.sh index 47767d3..b5a3e29 100755 --- a/client/build.sh +++ b/client/build.sh @@ -30,7 +30,7 @@ else fi mv out/epoxy_client_bg.wasm out/epoxy_client_unoptimized.wasm -wasm-opt --signext-lowering out/epoxy_client_unoptimized.wasm -o out/epoxy_client_lowered.wasm +wasm-opt $WASMOPTFLAGS --signext-lowering out/epoxy_client_unoptimized.wasm -o out/epoxy_client_lowered.wasm if [ "${RELEASE:-0}" = "1" ]; then ( diff --git a/client/package.json b/client/package.json index 23f490e..cfb6400 100644 --- a/client/package.json +++ b/client/package.json @@ -1,6 +1,6 @@ { "name": "@mercuryworkshop/epoxy-tls", - "version": "2.1.13-1", + "version": "2.1.14-1", "description": "A wasm library for using raw encrypted tls/ssl/tcp/udp/https/websocket streams on the browser", "scripts": { "build": "./build.sh" diff --git a/client/publish.sh b/client/publish.sh index 90933df..f88ce6d 100755 --- a/client/publish.sh +++ b/client/publish.sh @@ -2,7 +2,7 @@ set -euo pipefail shopt -s inherit_errexit -export RELEASE=1 +export RELEASE="${RELEASE:-1}" rm -r full minimal || true diff --git a/client/src/lib.rs b/client/src/lib.rs index 6d0d8bd..5c6dc03 100644 --- a/client/src/lib.rs +++ b/client/src/lib.rs @@ -424,10 +424,16 @@ impl EpoxyClient { }; let service = StreamProviderService(stream_provider.clone()); - let client = Client::builder(WasmExecutor) + let mut builder = Client::builder(WasmExecutor); + builder .http09_responses(true) .http1_title_case_headers(options.title_case_headers) - .http1_max_headers(options.header_limit) + .http1_max_headers(options.header_limit); + + #[cfg(feature = "full")] + builder + .http2_max_concurrent_reset_streams(10); // set back to default, on wasm it is 0 + let client = builder .build(service); Ok(Self {