From b475ad2c85e106a649b142549d8a31f7058d69ce Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Pascal=20Eng=C3=A9libert?= Date: Mon, 24 Aug 2026 09:12:13 +0200 Subject: [PATCH] Servername callback --- examples/basic.rs | 9 ++++----- src/lib.rs | 6 ++++++ src/relay.rs | 8 +++++++- 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/examples/basic.rs b/examples/basic.rs index 9a2da22..213838d 100644 --- a/examples/basic.rs +++ b/examples/basic.rs @@ -53,11 +53,10 @@ fn main() { server_name.map_or_else(|| panic!("NO HOST"), str::to_string) }, remote_port: "443".to_string(), - tls_config: - TLSConfig::FILE { - certificate_path: "/dev/shm/exp/certs/prime256v1/apple.com.crt".to_string(), - private_key_path: "/dev/shm/exp/certs/prime256v1/apple.com.key".to_string(), - }, + tls_config: TLSConfig::FILE { + certificate_path: "/dev/shm/exp/certs/prime256v1/apple.com.crt".to_string(), + private_key_path: "/dev/shm/exp/certs/prime256v1/apple.com.key".to_string(), + }, }, ); diff --git a/src/lib.rs b/src/lib.rs index b30a64e..394d256 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -146,6 +146,12 @@ pub enum TLSConfig { certificate: Vec, private_key: Vec, }, + CALLBACK { + servername_callback: fn( + &mut openssl::ssl::SslRef, + &mut openssl::ssl::SslAlert, + ) -> Result<(), openssl::ssl::SniError>, + }, NONE, } diff --git a/src/relay.rs b/src/relay.rs index c5be34c..0ee0d04 100644 --- a/src/relay.rs +++ b/src/relay.rs @@ -42,6 +42,7 @@ impl { @@ -50,7 +51,7 @@ impl { + acceptor.set_servername_callback(*servername_callback); + } TLSConfig::NONE => { panic!( "[SSLRelay Error] Specified NONE for TLSConfig and downstream_data_type as \