diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 5f56b5e6f6b..b6b241ea099 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -31,9 +31,6 @@ jobs: env: CRATE: ${{ matrix.crate }} steps: - - name: Install zlib for `libp2p-websocket` # https://github.com/paritytech/soketto/issues/72 - run: sudo apt-get install zlib1g-dev --yes - - uses: actions/checkout@v3 - uses: r7kamura/rust-problem-matchers@d58b70c4a13c4866d96436315da451d8106f8f08 #v1.3.0 diff --git a/Cargo.lock b/Cargo.lock index 21221f6eccb..329746059f0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1613,7 +1613,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3b9429470923de8e8cbd4d2dc513535400b4b3fef0319fb5c4e1f520a7bef743" dependencies = [ "crc32fast", - "libz-sys", "miniz_oxide", ] @@ -3230,17 +3229,6 @@ dependencies = [ "libsecp256k1-core", ] -[[package]] -name = "libz-sys" -version = "1.1.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9702761c3935f8cc2f101793272e202c72b99da8f4224a19ddcf1279a6450bbf" -dependencies = [ - "cc", - "pkg-config", - "vcpkg", -] - [[package]] name = "linked-hash-map" version = "0.5.6" @@ -3859,12 +3847,6 @@ dependencies = [ "spki 0.7.1", ] -[[package]] -name = "pkg-config" -version = "0.3.26" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" - [[package]] name = "platforms" version = "3.0.2" @@ -4834,7 +4816,6 @@ checksum = "41d1c5305e39e09653383c2c7244f2f78b3bcae37cf50c64cb4789c9f5096ec2" dependencies = [ "base64 0.13.1", "bytes", - "flate2", "futures", "httparse", "log", @@ -5382,12 +5363,6 @@ dependencies = [ "version_check", ] -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - [[package]] name = "version_check" version = "0.9.4" diff --git a/interop-tests/Dockerfile b/interop-tests/Dockerfile index e0a5ddfc31f..0d80a872f5c 100644 --- a/interop-tests/Dockerfile +++ b/interop-tests/Dockerfile @@ -1,12 +1,6 @@ # syntax=docker/dockerfile:1.5-labs FROM rust:1.67.0 as builder -# Install zlib as long as libp2p-websocket requires it: https://github.com/paritytech/soketto/issues/72 -RUN apt-get update && \ - apt-get download zlib1g && \ - mkdir /dpkg && \ - for deb in *.deb; do dpkg --extract $deb /dpkg || exit 10; done - # Run with access to the target cache to speed up builds WORKDIR /workspace ADD . . @@ -19,6 +13,5 @@ RUN --mount=type=cache,target=./target \ FROM gcr.io/distroless/cc COPY --from=builder /usr/local/bin/testplan /usr/local/bin/testplan -COPY --from=builder /dpkg / ENV RUST_BACKTRACE=1 ENTRYPOINT ["testplan"] diff --git a/transports/websocket/CHANGELOG.md b/transports/websocket/CHANGELOG.md index b8e795fd8d3..a952e082181 100644 --- a/transports/websocket/CHANGELOG.md +++ b/transports/websocket/CHANGELOG.md @@ -3,7 +3,12 @@ - Raise MSRV to 1.65. See [PR 3715]. +- Remove `WsConfig::use_deflate` option. + This allows us to remove the dependency on the `zlib` shared library. + See [PR 3949]. + [PR 3715]: https://github.com/libp2p/rust-libp2p/pull/3715 +[PR 3949]: https://github.com/libp2p/rust-libp2p/pull/3949 ## 0.41.0 diff --git a/transports/websocket/Cargo.toml b/transports/websocket/Cargo.toml index 643bf15b15f..14c093a7fb7 100644 --- a/transports/websocket/Cargo.toml +++ b/transports/websocket/Cargo.toml @@ -20,7 +20,7 @@ log = "0.4.8" parking_lot = "0.12.0" quicksink = "0.1" rw-stream-sink = { workspace = true } -soketto = { version = "0.7.0", features = ["deflate"] } +soketto = "0.7.0" url = "2.1" webpki-roots = "0.23" diff --git a/transports/websocket/src/framed.rs b/transports/websocket/src/framed.rs index a81f6d4553b..b5a0b1b98f1 100644 --- a/transports/websocket/src/framed.rs +++ b/transports/websocket/src/framed.rs @@ -32,7 +32,6 @@ use log::{debug, trace}; use parking_lot::Mutex; use soketto::{ connection::{self, CloseReason}, - extension::deflate::Deflate, handshake, }; use std::{collections::HashMap, ops::DerefMut, sync::Arc}; @@ -51,7 +50,6 @@ pub struct WsConfig { max_data_size: usize, tls_config: tls::Config, max_redirects: u8, - use_deflate: bool, /// Websocket protocol of the inner listener. /// /// This is the suffix of the address provided in `listen_on`. @@ -67,7 +65,6 @@ impl WsConfig { max_data_size: MAX_DATA_SIZE, tls_config: tls::Config::client(), max_redirects: 0, - use_deflate: false, listener_protos: HashMap::new(), } } @@ -99,12 +96,6 @@ impl WsConfig { self.tls_config = c; self } - - /// Should the deflate extension (RFC 7692) be used if supported? - pub fn use_deflate(&mut self, flag: bool) -> &mut Self { - self.use_deflate = flag; - self - } } type TlsOrPlain = future::Either, server::TlsStream>, T>; @@ -285,19 +276,12 @@ where let transport = self.transport.clone(); let tls_config = self.tls_config.clone(); - let use_deflate = self.use_deflate; let max_redirects = self.max_redirects; let future = async move { loop { - match Self::dial_once( - transport.clone(), - addr, - tls_config.clone(), - use_deflate, - role_override, - ) - .await + match Self::dial_once(transport.clone(), addr, tls_config.clone(), role_override) + .await { Ok(Either::Left(redirect)) => { if remaining_redirects == 0 { @@ -321,7 +305,6 @@ where transport: Arc>, addr: WsAddress, tls_config: tls::Config, - use_deflate: bool, role_override: Endpoint, ) -> Result>, Error> { trace!("Dialing websocket address: {:?}", addr); @@ -364,10 +347,6 @@ where let mut client = handshake::Client::new(stream, &addr.host_port, addr.path.as_ref()); - if use_deflate { - client.add_extension(Box::new(Deflate::new(connection::Mode::Client))); - } - match client .handshake() .map_err(|e| Error::Handshake(Box::new(e))) @@ -403,7 +382,6 @@ where let remote_addr2 = remote_addr.clone(); // used for logging let tls_config = self.tls_config.clone(); let max_size = self.max_data_size; - let use_deflate = self.use_deflate; async move { let stream = upgrade.map_err(Error::Transport).await?; @@ -440,10 +418,6 @@ where let mut server = handshake::Server::new(stream); - if use_deflate { - server.add_extension(Box::new(Deflate::new(connection::Mode::Server))); - } - let ws_key = { let request = server .receive_request() diff --git a/transports/websocket/src/lib.rs b/transports/websocket/src/lib.rs index fa12232244b..7462f281817 100644 --- a/transports/websocket/src/lib.rs +++ b/transports/websocket/src/lib.rs @@ -174,12 +174,6 @@ where self.transport.inner_mut().set_tls_config(c); self } - - /// Should the deflate extension (RFC 7692) be used if supported? - pub fn use_deflate(&mut self, flag: bool) -> &mut Self { - self.transport.inner_mut().use_deflate(flag); - self - } } impl Transport for WsConfig