From bb063aa9e6a993587ec786fb8bfb082721f131ca Mon Sep 17 00:00:00 2001 From: Ivan Nikulin Date: Thu, 3 Aug 2023 14:28:00 +0100 Subject: [PATCH] Fix Diplay panics for HandshakeError with `rpk` (fixes #140) --- boring/src/ssl/error.rs | 6 ++++++ tokio-boring/tests/rpk.rs | 7 +++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/boring/src/ssl/error.rs b/boring/src/ssl/error.rs index f7772916..5fb91659 100644 --- a/boring/src/ssl/error.rs +++ b/boring/src/ssl/error.rs @@ -169,6 +169,12 @@ fn fmt_mid_handshake_error( f: &mut fmt::Formatter, prefix: &str, ) -> fmt::Result { + #[cfg(feature = "rpk")] + if s.ssl().ssl_context().is_rpk() { + write!(f, "{}", prefix)?; + return write!(f, " {}", s.error()); + } + match s.ssl().verify_result() { X509VerifyResult::OK => write!(f, "{}", prefix)?, verify => write!(f, "{}: cert verification failed - {}", prefix, verify)?, diff --git a/tokio-boring/tests/rpk.rs b/tokio-boring/tests/rpk.rs index 2fb90862..5492767a 100644 --- a/tokio-boring/tests/rpk.rs +++ b/tokio-boring/tests/rpk.rs @@ -96,9 +96,12 @@ mod test_rpk { let stream = TcpStream::connect(&addr).await.unwrap(); - assert!(tokio_boring::connect(config, "localhost", stream) + let err = tokio_boring::connect(config, "localhost", stream) .await - .is_err()); + .unwrap_err(); + + // NOTE: smoke test for https://github.com/cloudflare/boring/issues/140 + let _ = err.to_string(); }; future::join(server, client).await;