From ed0a496c6f4a2674dbc7bf0680df29e018eede25 Mon Sep 17 00:00:00 2001 From: David Cook Date: Fri, 10 Feb 2023 17:46:44 -0600 Subject: [PATCH 1/5] Fix domain name in early-data test --- tokio-rustls/tests/early-data.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tokio-rustls/tests/early-data.rs b/tokio-rustls/tests/early-data.rs index fe98290..828b14a 100644 --- a/tokio-rustls/tests/early-data.rs +++ b/tokio-rustls/tests/early-data.rs @@ -46,7 +46,7 @@ async fn send( ) -> io::Result> { let connector = TlsConnector::from(config).early_data(true); let stream = TcpStream::connect(&addr).await?; - let domain = rustls::ServerName::try_from("testserver.com").unwrap(); + let domain = rustls::ServerName::try_from("foobar.com").unwrap(); let stream = connector.connect(domain, stream).await?; let (mut rd, mut wd) = split(stream); From 5f3b59d0620418584b520414f60cac9f3dd2d50c Mon Sep 17 00:00:00 2001 From: David Cook Date: Sat, 11 Feb 2023 10:15:54 -0600 Subject: [PATCH 2/5] Run early data test in CI --- .github/workflows/CI.yml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index 2e6541a..cf372a3 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -45,7 +45,9 @@ jobs: toolchain: ${{ matrix.rust }} - name: Test - run: cargo test --all + run: | + cargo test --all + cargo test -p tokio-rustls --features early-data lints: name: Lints From 2a6828195be0b3403a649f85679ce344eb4048b0 Mon Sep 17 00:00:00 2001 From: David Cook Date: Sat, 18 Feb 2023 12:41:01 -0600 Subject: [PATCH 3/5] Add missing wake call --- tokio-rustls/tests/early-data.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/tokio-rustls/tests/early-data.rs b/tokio-rustls/tests/early-data.rs index 828b14a..5de795b 100644 --- a/tokio-rustls/tests/early-data.rs +++ b/tokio-rustls/tests/early-data.rs @@ -34,6 +34,7 @@ impl Future for Read1 { if buf.filled().is_empty() { Poll::Ready(Ok(())) } else { + cx.waker().wake_by_ref(); Poll::Pending } } From cbe7fcf9f8f1c6346c6d03b3eee499d09877ef37 Mon Sep 17 00:00:00 2001 From: David Cook Date: Sat, 18 Feb 2023 14:09:30 -0600 Subject: [PATCH 4/5] Workaround: write to OpenSSL's input This is necessary to work around an issue that only appears on Windows. --- tokio-rustls/tests/early-data.rs | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/tokio-rustls/tests/early-data.rs b/tokio-rustls/tests/early-data.rs index 5de795b..5a6368b 100644 --- a/tokio-rustls/tests/early-data.rs +++ b/tokio-rustls/tests/early-data.rs @@ -9,6 +9,7 @@ use std::pin::Pin; use std::process::{Child, Command, Stdio}; use std::sync::Arc; use std::task::{Context, Poll}; +use std::thread; use std::time::Duration; use tokio::io::{split, AsyncRead, AsyncWriteExt, ReadBuf}; use tokio::net::TcpStream; @@ -141,6 +142,17 @@ async fn test_0rtt() -> io::Result<()> { let config = Arc::new(config); let addr = SocketAddr::from(([127, 0, 0, 1], 12354)); + // workaround: write to openssl s_server standard input periodically, to + // get it unstuck on Windows + let stdin = handle.0.stdin.take().unwrap(); + thread::spawn(move || { + let mut stdin = stdin; + loop { + thread::sleep(std::time::Duration::from_secs(5)); + std::io::Write::write_all(&mut stdin, b"\n").unwrap(); + } + }); + let io = send(config.clone(), addr, b"hello").await?; assert!(!io.get_ref().1.is_early_data_accepted()); From 5241396b1adf2c8b5085a008ce042b2b2f81a754 Mon Sep 17 00:00:00 2001 From: David Cook Date: Sat, 18 Feb 2023 16:22:33 -0600 Subject: [PATCH 5/5] Don't rerun other tests in CI --- .github/workflows/CI.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/CI.yml b/.github/workflows/CI.yml index cf372a3..27a8ef5 100644 --- a/.github/workflows/CI.yml +++ b/.github/workflows/CI.yml @@ -47,7 +47,7 @@ jobs: - name: Test run: | cargo test --all - cargo test -p tokio-rustls --features early-data + cargo test -p tokio-rustls --features early-data --test early-data lints: name: Lints