From f3be78346bd8fc47d0377e6d4525a0bbe33369c2 Mon Sep 17 00:00:00 2001 From: Ansaf Ahmed Date: Fri, 30 Jan 2026 15:57:11 +1100 Subject: [PATCH] update: support reading with blocking sockets --- Cargo.toml | 1 + src/stream/tls.rs | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/Cargo.toml b/Cargo.toml index 3026c43..9de4a8b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -24,6 +24,7 @@ ktls = ["openssl", "dep:openssl-sys", "dep:foreign-types", "dep:libc", "dep:open http = ["dep:http", "httparse", "memchr", "itoa"] ws = ["rand", "base64", "dep:http", "httparse"] ext = [] +blocking_sockets = [] [dependencies] url = "2.5.0" diff --git a/src/stream/tls.rs b/src/stream/tls.rs index 9980e03..6491c7c 100644 --- a/src/stream/tls.rs +++ b/src/stream/tls.rs @@ -243,6 +243,21 @@ mod __rustls { } fn complete_io(&mut self) -> io::Result<(usize, usize)> { + // Write all pending TLS data + #[cfg(feature = "blocking_sockets")] + let wrote = { + let mut total_wrote = 0; + while self.tls.wants_write() { + let w = self.tls.write_tls(&mut self.inner)?; + total_wrote += w; + if w == 0 { + break; + } + } + total_wrote + }; + + #[cfg(not(feature = "blocking_sockets"))] let wrote = if self.tls.wants_write() { self.tls.write_tls(&mut self.inner)? } else {