From 9d91145f0a85a97037e239d6122a157595ea3362 Mon Sep 17 00:00:00 2001 From: Simon Wicky Date: Wed, 26 Jul 2023 16:18:40 +0200 Subject: [PATCH] somewhat working stream --- common/nymnoise/src/lib.rs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/common/nymnoise/src/lib.rs b/common/nymnoise/src/lib.rs index 6da4b6f266..a0d3c0f37e 100644 --- a/common/nymnoise/src/lib.rs +++ b/common/nymnoise/src/lib.rs @@ -23,6 +23,7 @@ use tokio::{ const NOISE_HS_PATTERN: &str = "Noise_XKpsk3_25519_AESGCM_SHA256"; const MAXMSGLEN: usize = 65535; +const TAGLEN: usize = 16; const HEADER_SIZE: usize = 2; /// Wrapper around a TcpStream @@ -113,7 +114,18 @@ impl AsyncWrite for NoiseStream { .unwrap(); let to_send = [&[(len >> 8) as u8, (len & 0xff) as u8], &noise_buf[..len]].concat(); - projected_self.inner_stream.poll_write(cx, &to_send) + match projected_self.inner_stream.poll_write(cx, &to_send) { + Poll::Pending => return Poll::Pending, + Poll::Ready(Err(err)) => return Poll::Ready(Err(err)), + Poll::Ready(Ok(n)) => { + //We must guarantee that the return number is <= buf.len() + if n >= HEADER_SIZE + TAGLEN { + return Poll::Ready(Ok(n - HEADER_SIZE - TAGLEN)); + } + //We didn't write any meaningful info + return Poll::Ready(Ok(0)); + } + } } fn poll_flush(