From 37b4ab935dc6ff521e5a82162914d77dbf53e326 Mon Sep 17 00:00:00 2001 From: houseme Date: Tue, 24 Jun 2025 23:51:08 +0800 Subject: [PATCH] improve code for tls --- rustfs/src/main.rs | 52 +++++++++++++++++++++++++++++++++------------- 1 file changed, 38 insertions(+), 14 deletions(-) diff --git a/rustfs/src/main.rs b/rustfs/src/main.rs index 512ce37ab..6f6b1fc5c 100644 --- a/rustfs/src/main.rs +++ b/rustfs/src/main.rs @@ -425,20 +425,44 @@ async fn run(opt: config::Opt) -> Result<()> { if has_tls_certs { debug!("TLS certificates found, starting with SIGINT"); - let tls_socket = match tls_acceptor - .as_ref() - .ok_or_else(|| rustfs_utils::certs_error("TLS not configured".to_string())) - .map_err(|e| { - error!("TLS panic error: {}", e); - e - }) - .unwrap() - .accept(socket) - .await - { - Ok(tls_socket) => tls_socket, - Err(err) => { - error!("TLS handshake failed {}", err); + // let tls_socket = match tls_acceptor + // .as_ref() + // .ok_or_else(|| rustfs_utils::certs_error("TLS not configured".to_string())) + // .map_err(|e| { + // error!("TLS panic error: {}", e); + // e + // }) + // .unwrap() + // .accept(socket) + // .await + // { + // Ok(tls_socket) => tls_socket, + // Err(err) => { + // error!("TLS handshake failed {}", err); + // continue; + // } + // }; + + let peer_addr_str = socket.peer_addr().map(|a| a.to_string()).unwrap_or_else(|e| { + warn!("Could not get peer address: {}", e); + "unknown".to_string() + }); + let tls_socket = match tls_acceptor.as_ref() { + Some(acceptor) => match acceptor.accept(socket).await { + Ok(tls_socket) => { + info!("TLS handshake successful with peer: {}", peer_addr_str); + tls_socket + } + Err(err) => { + error!("TLS handshake with peer {} failed: {}", peer_addr_str, err); + continue; + } + }, + None => { + error!( + "TLS acceptor is not available, but TLS is enabled. This is a bug. Dropping connection from {}", + peer_addr_str + ); continue; } };