diff --git a/CHANGELOG.md b/CHANGELOG.md index 0545544d..06b81ea5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,3 +6,5 @@ All notable changes to this project will be documented in this file. - Deprecated `SharedState::new` (since 0.2.0); construct via `inner.into()` instead. +- Breaking: Marked `ServerError` as `#[non_exhaustive]`. Downstream consumers + must add a wildcard arm when matching it. diff --git a/src/server/config/binding.rs b/src/server/config/binding.rs index fdadc041..75334ada 100644 --- a/src/server/config/binding.rs +++ b/src/server/config/binding.rs @@ -1,6 +1,5 @@ //! Binding configuration for [`WireframeServer`]. -use core::marker::PhantomData; use std::{ net::{SocketAddr, TcpListener as StdTcpListener}, sync::Arc, @@ -92,7 +91,7 @@ where state: Bound { listener: Arc::new(tokio), }, - _preamble: PhantomData, + _preamble: self._preamble, }) } } @@ -177,7 +176,7 @@ where state: Bound { listener: Arc::new(tokio), }, - _preamble: PhantomData, + _preamble: self._preamble, }) } } diff --git a/src/server/config/preamble.rs b/src/server/config/preamble.rs index 308b8f1c..449961f2 100644 --- a/src/server/config/preamble.rs +++ b/src/server/config/preamble.rs @@ -55,6 +55,7 @@ where /// Register a handler invoked when the connection preamble decodes successfully. /// /// The handler must implement [`crate::server::PreambleSuccessHandler`]. + /// See [`crate::server::PreambleHandler`] for a ready-to-use alias. /// /// # Examples /// diff --git a/src/server/connection.rs b/src/server/connection.rs index dae0c8d0..fff07a62 100644 --- a/src/server/connection.rs +++ b/src/server/connection.rs @@ -64,7 +64,12 @@ async fn process_stream( if let Some(handler) = on_success.as_ref() && let Err(e) = handler(&preamble, &mut stream).await { - tracing::error!(error = ?e, ?peer_addr, "preamble handler error"); + tracing::error!( + error = %e, + error_debug = ?e, + ?peer_addr, + "preamble handler error", + ); } let stream = RewindStream::new(leftover, stream); let app = (factory)(); diff --git a/src/server/error.rs b/src/server/error.rs index 1da12fae..0ba68d3d 100644 --- a/src/server/error.rs +++ b/src/server/error.rs @@ -5,6 +5,7 @@ use std::io; use thiserror::Error; /// Errors that may occur while configuring or running the server. +#[non_exhaustive] #[derive(Debug, Error)] pub enum ServerError { /// Binding or configuring the listener failed. diff --git a/src/server/mod.rs b/src/server/mod.rs index 1177e77d..5c97cac1 100644 --- a/src/server/mod.rs +++ b/src/server/mod.rs @@ -56,7 +56,7 @@ impl PreambleSuccessHandler for F where { } -/// Handler invoked when a connection preamble decodes successfully. +/// [`PreambleSuccessHandler`] wrapped in `Arc`. pub type PreambleHandler = Arc>; /// Handler invoked when decoding a connection preamble fails.