From ec2f2f6f2e3df9aa76b9e0e5c823095d1cd5d814 Mon Sep 17 00:00:00 2001 From: Simon Cruanes Date: Tue, 11 Jul 2023 10:01:33 -0400 Subject: [PATCH] add `Server.run_exn` --- src/Tiny_httpd_server.ml | 23 +++++++++++------------ src/Tiny_httpd_server.mli | 6 +++++- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/src/Tiny_httpd_server.ml b/src/Tiny_httpd_server.ml index f4f1f07a..3edc1068 100644 --- a/src/Tiny_httpd_server.ml +++ b/src/Tiny_httpd_server.ml @@ -1085,15 +1085,14 @@ let is_ipv6 (self : t) = let (module B) = self.backend in is_ipv6_str (B.init_addr ()) -(* TODO: init TCP server *) -let run ?(after_init = ignore) (self : t) : (unit, _) result = - try - let (module B) = self.backend in - let server = B.tcp_server () in - server.serve - ~after_init:(fun tcp_server -> - self.tcp_server <- Some tcp_server; - after_init ()) - ~handle:(client_handler self) (); - Ok () - with e -> Error e +let run_exn ?(after_init = ignore) (self : t) : unit = + let (module B) = self.backend in + let server = B.tcp_server () in + server.serve + ~after_init:(fun tcp_server -> + self.tcp_server <- Some tcp_server; + after_init ()) + ~handle:(client_handler self) () + +let run ?after_init self : _ result = + try Ok (run_exn ?after_init self) with e -> Error e diff --git a/src/Tiny_httpd_server.mli b/src/Tiny_httpd_server.mli index 6a0e0157..b930e75a 100644 --- a/src/Tiny_httpd_server.mli +++ b/src/Tiny_httpd_server.mli @@ -606,9 +606,13 @@ val run : ?after_init:(unit -> unit) -> t -> (unit, exn) result it exits with an error. @param after_init is called after the server starts listening. since 0.13 . - *) +val run_exn : ?after_init:(unit -> unit) -> t -> unit +(** [run_exn s] is like [run s] but re-raises an exception if the server exits + with an error. + @since NEXT_RELEASE *) + (**/**) val _debug :