Эх сурвалжийг харах

Return internal server error if event handling fails

Mark Rousskov 6 жил өмнө
parent
commit
4a581fb79b
2 өөрчлөгдсөн 8 нэмэгдсэн , 1 устгасан
  1. 1 0
      src/main.rs
  2. 7 1
      src/registry.rs

+ 1 - 0
src/main.rs

@@ -67,6 +67,7 @@ impl<'r> rocket::response::Responder<'r> for WebhookError {
         let body = format!("{:?}", self.0);
         rocket::Response::build()
             .header(rocket::http::ContentType::Plain)
+            .status(rocket::http::Status::InternalServerError)
             .sized_body(std::io::Cursor::new(body))
             .ok()
     }

+ 7 - 1
src/registry.rs

@@ -17,15 +17,21 @@ impl HandleRegistry {
     }
 
     pub fn handle(&self, event: &Event) -> Result<(), Error> {
+        let mut last_error = None;
         for h in &self.handlers {
             match h.handle_event(event) {
                 Ok(()) => {}
                 Err(e) => {
                     eprintln!("event handling failed: {:?}", e);
+                    last_error = Some(e);
                 }
             }
         }
-        Ok(())
+        if let Some(err) = last_error {
+            Err(err)
+        } else {
+            Ok(())
+        }
     }
 }