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)
}
}