From 4e1808230e83f4878a3783882cacb7637e9ba0be Mon Sep 17 00:00:00 2001 From: Pat Hickey Date: Wed, 14 Jan 2026 17:52:14 -0800 Subject: [PATCH] wstd::http_server: don't panic after setting responder.fail passing the error out to the host via responder.fail is all thats needed here - the host is responsible for reporting that error, so theres no need for the guest to panic afterwards. So, Responder::fail no longer needs a return value, and the macro no longer needs to unwrap it --- macro/src/lib.rs | 4 ++-- src/http/server.rs | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/macro/src/lib.rs b/macro/src/lib.rs index a2de9d4..6498377 100644 --- a/macro/src/lib.rs +++ b/macro/src/lib.rs @@ -138,9 +138,9 @@ pub fn attr_macro_http_server(_attr: TokenStream, item: TokenStream) -> TokenStr match ::wstd::http::request::try_from_incoming(request) { Ok(request) => match __run(request) #run_await { Ok(response) => { responder.respond(response).await.unwrap() }, - Err(err) => responder.fail(err).unwrap(), + Err(err) => responder.fail(err), } - Err(err) => responder.fail(err).unwrap(), + Err(err) => responder.fail(err), } }) } diff --git a/src/http/server.rs b/src/http/server.rs index 3ac12df..9fb6ff4 100644 --- a/src/http/server.rs +++ b/src/http/server.rs @@ -77,12 +77,11 @@ impl Responder { /// This is used by the `http_server` macro. #[doc(hidden)] - pub fn fail(self, err: Error) -> Result<(), Error> { + pub fn fail(self, err: Error) { let e = match err.downcast_ref::() { Some(e) => e.clone(), None => ErrorCode::InternalError(Some(format!("{err:?}"))), }; ResponseOutparam::set(self.outparam, Err(e)); - Err(err) } }