diff --git a/async/httpun_ws_async.ml b/async/httpun_ws_async.ml index 8cd21fc6..7695d5bb 100644 --- a/async/httpun_ws_async.ml +++ b/async/httpun_ws_async.ml @@ -10,13 +10,11 @@ module Server = struct let create_connection_handler ?(config = Httpun.Config.default) ?error_handler - ?websocket_error_handler websocket_handler = fun client_addr socket -> let connection = Httpun_ws.Server_connection.create ~sha1 ?error_handler:(Option.map ~f:(fun f -> f client_addr) error_handler) - ?websocket_error_handler:(Option.map ~f:(fun f -> f client_addr) websocket_error_handler) (websocket_handler client_addr) in Gluten_async.Server.create_connection_handler diff --git a/async/httpun_ws_async.mli b/async/httpun_ws_async.mli index 3419ac88..57345a69 100644 --- a/async/httpun_ws_async.mli +++ b/async/httpun_ws_async.mli @@ -4,7 +4,6 @@ module Server : sig val create_connection_handler : ?config : Httpun.Config.t -> ?error_handler: ('a -> Httpun.Server_connection.error_handler) - -> ?websocket_error_handler: ('a -> Httpun_ws.Server_connection.error_handler) -> ('a -> Httpun_ws.Wsd.t -> Httpun_ws.Websocket_connection.input_handlers) diff --git a/eio/httpun_ws_eio.ml b/eio/httpun_ws_eio.ml index 5e48adde..e2023dca 100644 --- a/eio/httpun_ws_eio.ml +++ b/eio/httpun_ws_eio.ml @@ -4,20 +4,13 @@ let sha1 s = |> Digestif.SHA1.to_raw_string module Server = struct - (* TODO: should this error handler be a websocket error handler or an HTTP - * error handler?*) let create_connection_handler - ?(config = Httpun.Config.default) - ?error_handler - ?websocket_error_handler - ~sw - websocket_handler = + ?(config = Httpun.Config.default) ?error_handler ~sw websocket_handler = fun client_addr socket -> let connection = Httpun_ws.Server_connection.create ~sha1 ?error_handler:(Option.map (fun f -> f client_addr) error_handler) - ?websocket_error_handler:(Option.map (fun f -> f client_addr) websocket_error_handler) (websocket_handler client_addr) in Gluten_eio.Server.create_connection_handler diff --git a/eio/httpun_ws_eio.mli b/eio/httpun_ws_eio.mli index 6965d0de..6e714622 100644 --- a/eio/httpun_ws_eio.mli +++ b/eio/httpun_ws_eio.mli @@ -1,11 +1,9 @@ open Httpun_ws module Server : sig - val create_connection_handler - : ?config : Httpun.Config.t - -> ?error_handler : (Eio.Net.Sockaddr.stream -> Httpun.Server_connection.error_handler) - -> ?websocket_error_handler : (Eio.Net.Sockaddr.stream -> Server_connection.error_handler) + : ?config: Httpun.Config.t + -> ?error_handler: (Eio.Net.Sockaddr.stream -> Httpun.Server_connection.error_handler) -> sw:Eio.Switch.t -> (Eio.Net.Sockaddr.stream -> Wsd.t -> Websocket_connection.input_handlers) -> (Eio.Net.Sockaddr.stream -> _ Eio.Net.stream_socket -> unit) @@ -16,14 +14,14 @@ module Client : sig (* Perform HTTP/1.1 handshake and upgrade to WS. *) val connect - : ?config : Httpun.Config.t - -> sw : Eio.Switch.t - -> nonce : string - -> host : string - -> port : int - -> resource : string - -> error_handler : (Client_connection.error -> unit) - -> websocket_handler : (Wsd.t -> Websocket_connection.input_handlers) + : ?config:Httpun.Config.t + -> sw:Eio.Switch.t + -> nonce:string + -> host:string + -> port:int + -> resource:string + -> error_handler:(Client_connection.error -> unit) + -> websocket_handler:(Wsd.t -> Websocket_connection.input_handlers) -> Eio_unix.Net.stream_socket_ty Eio.Net.stream_socket -> t diff --git a/examples/async/echo_server.ml b/examples/async/echo_server.ml index 2682b5fa..aad3204d 100644 --- a/examples/async/echo_server.ml +++ b/examples/async/echo_server.ml @@ -26,26 +26,20 @@ let connection_handler : ([< Socket.Address.t] as 'a) -> ([`Active], 'a) Socket. | `Other _ -> () in - let eof () = - Log.Global.error "EOF\n%!"; - Httpun_ws.Wsd.close wsd + let eof ?error () = + match error with + | Some _ -> assert false + | None -> + Log.Global.error "EOF\n%!"; + Httpun_ws.Wsd.close wsd in { Httpun_ws.Websocket_connection.frame ; eof } in - let error_handler _client_address wsd (`Exn exn) = - let message = Exn.to_string exn in - let payload = Bytes.of_string message in - Httpun_ws.Wsd.send_bytes wsd ~kind:`Text payload ~off:0 - ~len:(Bytes.length payload); - Httpun_ws.Wsd.close wsd - in - Httpun_ws_async.Server.create_connection_handler ?config:None - ~websocket_error_handler:error_handler websocket_handler let main port max_accepts_per_batch () = diff --git a/examples/async/echo_server_upgrade.ml b/examples/async/echo_server_upgrade.ml index a58ddebf..f690b106 100644 --- a/examples/async/echo_server_upgrade.ml +++ b/examples/async/echo_server_upgrade.ml @@ -29,22 +29,18 @@ let connection_handler = | `Other _ -> () in - let eof () = - Format.eprintf "EOF\n%!"; - Httpun_ws.Wsd.close wsd + let eof ?error () = + match error with + | Some _ -> assert false + | None -> + Format.eprintf "EOF\n%!"; + Httpun_ws.Wsd.close wsd in { Httpun_ws.Websocket_connection.frame ; eof } in - let error_handler wsd (`Exn exn) = - let message = Exn.to_string exn in - let payload = Bytes.of_string message in - Httpun_ws.Wsd.send_bytes wsd ~kind:`Text payload ~off:0 - ~len:(Bytes.length payload); - Httpun_ws.Wsd.close wsd - in let http_error_handler _client_address ?request:_ error handle = let message = match error with @@ -57,9 +53,7 @@ let connection_handler = in let upgrade_handler addr upgrade () = let ws_conn = - Httpun_ws.Server_connection.create_websocket - ~error_handler - (websocket_handler addr) + Httpun_ws.Server_connection.create_websocket (websocket_handler addr) in upgrade (Gluten.make (module Httpun_ws.Server_connection) ws_conn) diff --git a/examples/async/wscat.ml b/examples/async/wscat.ml index ac601e2a..ebf4c2d9 100644 --- a/examples/async/wscat.ml +++ b/examples/async/wscat.ml @@ -23,8 +23,10 @@ let websocket_handler wsd = Log.Global.printf "%s\n%!" payload) in - let eof () = - Log.Global.error "[EOF]\n%!" + let eof ?error () = + match error with + | Some _ -> assert false + | None -> Log.Global.error "[EOF]\n%!" in { Httpun_ws.Websocket_connection.frame ; eof diff --git a/examples/eio/echo_server.ml b/examples/eio/echo_server.ml index 79921e23..52dda57b 100644 --- a/examples/eio/echo_server.ml +++ b/examples/eio/echo_server.ml @@ -28,27 +28,26 @@ let connection_handler ~sw : Eio.Net.Sockaddr.stream -> _ Eio.Net.stream_socket | `Other _ -> () in - let eof () = - Format.eprintf "EOF\n%!"; - Httpun_ws.Wsd.close wsd + let eof ?error () = + match error with + Some (`Exn exn) -> + let message = Printexc.to_string exn in + let payload = Bytes.of_string message in + Httpun_ws.Wsd.send_bytes wsd ~kind:`Text payload ~off:0 + ~len:(Bytes.length payload); + Httpun_ws.Wsd.close wsd + | None -> + Format.eprintf "EOF\n%!"; + Httpun_ws.Wsd.close wsd in { Httpun_ws.Websocket_connection.frame ; eof } in - let error_handler _client_address wsd (`Exn exn) = - let message = Printexc.to_string exn in - let payload = Bytes.of_string message in - Httpun_ws.Wsd.send_bytes wsd ~kind:`Text payload ~off:0 - ~len:(Bytes.length payload); - Httpun_ws.Wsd.close wsd - in - Httpun_ws_eio.Server.create_connection_handler ?config:None ~sw - ~websocket_error_handler:error_handler websocket_handler @@ -75,7 +74,7 @@ let () = Eio.Domain_manager.run domain_mgr (fun () -> Eio.Switch.run (fun sw -> while true do - Eio.Net.accept_fork socket ~sw ~on_error:(fun _ -> assert false) (fun client_sock client_addr -> + Eio.Net.accept_fork socket ~sw ~on_error:raise (fun client_sock client_addr -> (* let p, u = Eio.Promise.create () in *) connection_handler ~sw client_addr client_sock) done; diff --git a/examples/eio/echo_server_upgrade.ml b/examples/eio/echo_server_upgrade.ml index 6946adeb..81ed0bb3 100644 --- a/examples/eio/echo_server_upgrade.ml +++ b/examples/eio/echo_server_upgrade.ml @@ -26,22 +26,18 @@ let connection_handler = | `Other _ -> () in - let eof () = - Format.eprintf "EOF\n%!"; - Httpun_ws.Wsd.close wsd + let eof ?error () = + match error with + | Some _ -> assert false + | None -> + Format.eprintf "EOF\n%!"; + Httpun_ws.Wsd.close wsd in { Httpun_ws.Websocket_connection.frame ; eof } in - let error_handler wsd (`Exn exn) = - let message = Printexc.to_string exn in - let payload = Bytes.of_string message in - Httpun_ws.Wsd.send_bytes wsd ~kind:`Text payload ~off:0 - ~len:(Bytes.length payload); - Httpun_ws.Wsd.close wsd - in let http_error_handler _client_address ?request:_ error handle = let message = match error with @@ -54,9 +50,7 @@ let connection_handler = in let upgrade_handler addr upgrade () = let ws_conn = - Httpun_ws.Server_connection.create_websocket - ~error_handler - (websocket_handler addr) + Httpun_ws.Server_connection.create_websocket (websocket_handler addr) in upgrade (Gluten.make (module Httpun_ws.Server_connection) ws_conn) diff --git a/examples/eio/wscat.ml b/examples/eio/wscat.ml index baea8c35..ad6b6459 100644 --- a/examples/eio/wscat.ml +++ b/examples/eio/wscat.ml @@ -22,8 +22,7 @@ let websocket_handler env ~sw u wsd = Bigstringaf.blit_to_bytes bs ~src_off:off payload ~dst_off:0 ~len; Format.printf "%s@." (Bytes.unsafe_to_string payload);) in - - let eof () = + let eof ?error:_ () = Printf.eprintf "[EOF]\n%!"; Promise.resolve u () in diff --git a/examples/eio/wscat_upgrade.ml b/examples/eio/wscat_upgrade.ml index c2f7d99c..530e271b 100644 --- a/examples/eio/wscat_upgrade.ml +++ b/examples/eio/wscat_upgrade.ml @@ -23,9 +23,12 @@ let websocket_handler env ~sw u wsd = Format.printf "%s@." (Bytes.unsafe_to_string payload);) in - let eof () = - Printf.eprintf "[EOF]\n%!"; - Promise.resolve u () + let eof ?error () = + match error with + | Some _ -> assert false + | None -> + Printf.eprintf "[EOF]\n%!"; + Promise.resolve u () in { Httpun_ws.Websocket_connection.frame ; eof diff --git a/examples/lwt/echo_server.ml b/examples/lwt/echo_server.ml index 852e5aaf..a0a7cb6e 100644 --- a/examples/lwt/echo_server.ml +++ b/examples/lwt/echo_server.ml @@ -21,26 +21,20 @@ let connection_handler : Unix.sockaddr -> Lwt_unix.file_descr -> unit Lwt.t = | `Other _ -> () in - let eof () = - Format.eprintf "EOF\n%!"; - Httpun_ws.Wsd.close wsd + let eof ?error () = + match error with + | Some _ -> assert false + | None -> + Format.eprintf "EOF\n%!"; + Httpun_ws.Wsd.close wsd in { Httpun_ws.Websocket_connection.frame ; eof } in - let error_handler _client_address wsd (`Exn exn) = - let message = Printexc.to_string exn in - let payload = Bytes.of_string message in - Httpun_ws.Wsd.send_bytes wsd ~kind:`Text payload ~off:0 - ~len:(Bytes.length payload); - Httpun_ws.Wsd.close wsd - in - Httpun_ws_lwt_unix.Server.create_connection_handler ?config:None - ~websocket_error_handler:error_handler websocket_handler diff --git a/examples/lwt/echo_server_upgrade.ml b/examples/lwt/echo_server_upgrade.ml index e72fa869..2d67abb5 100644 --- a/examples/lwt/echo_server_upgrade.ml +++ b/examples/lwt/echo_server_upgrade.ml @@ -26,22 +26,18 @@ let connection_handler = | `Other _ -> () in - let eof () = - Format.eprintf "EOF\n%!"; - Httpun_ws.Wsd.close wsd + let eof ?error () = + match error with + | Some _ -> assert false + | None -> + Format.eprintf "EOF\n%!"; + Httpun_ws.Wsd.close wsd in { Httpun_ws.Websocket_connection.frame ; eof } in - let error_handler wsd (`Exn exn) = - let message = Printexc.to_string exn in - let payload = Bytes.of_string message in - Httpun_ws.Wsd.send_bytes wsd ~kind:`Text payload ~off:0 - ~len:(Bytes.length payload); - Httpun_ws.Wsd.close wsd - in let http_error_handler _client_address ?request:_ error handle = let message = match error with @@ -54,9 +50,7 @@ let connection_handler = in let upgrade_handler addr upgrade () = let ws_conn = - Httpun_ws.Server_connection.create_websocket - ~error_handler - (websocket_handler addr) + Httpun_ws.Server_connection.create_websocket (websocket_handler addr) in upgrade (Gluten.make (module Httpun_ws.Server_connection) ws_conn) diff --git a/examples/lwt/wscat.ml b/examples/lwt/wscat.ml index dd7b4af4..c033e06b 100644 --- a/examples/lwt/wscat.ml +++ b/examples/lwt/wscat.ml @@ -24,9 +24,12 @@ let websocket_handler u wsd = Format.printf "%s@." (Bytes.unsafe_to_string payload);) in - let eof () = - Printf.eprintf "[EOF]\n%!"; - Lwt.wakeup_later u () + let eof ?error () = + match error with + | Some _ -> assert false + | None -> + Printf.eprintf "[EOF]\n%!"; + Lwt.wakeup_later u () in { Httpun_ws.Websocket_connection.frame ; eof diff --git a/examples/lwt/wscat_upgrade.ml b/examples/lwt/wscat_upgrade.ml index de14a891..e9a28f58 100644 --- a/examples/lwt/wscat_upgrade.ml +++ b/examples/lwt/wscat_upgrade.ml @@ -23,9 +23,12 @@ let websocket_handler u wsd = len; Format.printf "%s@." (Bytes.unsafe_to_string payload);) in - let eof () = - Printf.eprintf "[EOF]\n%!"; - Lwt.wakeup_later u () + let eof ?error () = + match error with + | Some _ -> assert false + | None -> + Printf.eprintf "[EOF]\n%!"; + Lwt.wakeup_later u () in { Httpun_ws.Websocket_connection.frame ; eof diff --git a/lib/client_connection.ml b/lib/client_connection.ml index ffc3e678..b821a935 100644 --- a/lib/client_connection.ml +++ b/lib/client_connection.ml @@ -104,12 +104,11 @@ let connect in Lazy.force t -let create ?error_handler websocket_handler = +let create websocket_handler = { state = Websocket (Websocket_connection.create ~mode:(`Client Websocket_connection.random_int32) - ?error_handler websocket_handler) } let next_read_operation t = diff --git a/lib/httpun_ws.mli b/lib/httpun_ws.mli index 945ce98b..dca9f614 100644 --- a/lib/httpun_ws.mli +++ b/lib/httpun_ws.mli @@ -147,9 +147,11 @@ module Handshake : sig end module Websocket_connection : sig + type error = [ `Exn of exn ] + type input_handlers = { frame : opcode:Websocket.Opcode.t -> is_fin:bool -> len:int -> Payload.t -> unit - ; eof : unit -> unit } + ; eof : ?error:error -> unit -> unit } end module Client_connection : sig @@ -168,9 +170,7 @@ module Client_connection : sig -> string -> t - val create - : ?error_handler:(Wsd.t -> [`Exn of exn] -> unit) - -> (Wsd.t -> Websocket_connection.input_handlers) -> t + val create : (Wsd.t -> Websocket_connection.input_handlers) -> t val next_read_operation : t -> [ `Read | `Yield | `Close ] val next_write_operation @@ -196,22 +196,16 @@ end module Server_connection : sig type t - type error = [ `Exn of exn ] - - type error_handler = Wsd.t -> error -> unit - (* TODO: should take handshake error handler. *) val create : ?config : Httpun.Config.t -> ?error_handler : Httpun.Server_connection.error_handler - -> ?websocket_error_handler : error_handler -> sha1 : (string -> string) -> (Wsd.t -> Websocket_connection.input_handlers) -> t val create_websocket - : ?error_handler:error_handler - -> (Wsd.t -> Websocket_connection.input_handlers) + : (Wsd.t -> Websocket_connection.input_handlers) -> t val next_read_operation : t -> [ `Read | `Yield | `Close ] diff --git a/lib/server_connection.ml b/lib/server_connection.ml index 22fe1712..644ac584 100644 --- a/lib/server_connection.ml +++ b/lib/server_connection.ml @@ -20,12 +20,11 @@ let is_closed t = | Websocket websocket -> Websocket_connection.is_closed websocket -let create ?config ?error_handler ?websocket_error_handler ~sha1 websocket_handler = +let create ?config ?error_handler ~sha1 websocket_handler = let upgrade_handler t upgrade () = let ws_connection = Websocket_connection.create ~mode:`Server - ?error_handler:websocket_error_handler websocket_handler in t.state <- Websocket ws_connection; @@ -66,13 +65,10 @@ let create ?config ?error_handler ?websocket_error_handler ~sha1 websocket_handl in Lazy.force t -let create_websocket ?error_handler websocket_handler = +let create_websocket websocket_handler = { state = Websocket - (Websocket_connection.create - ~mode:`Server - ?error_handler - websocket_handler) + (Websocket_connection.create ~mode:`Server websocket_handler) ; websocket_handler } diff --git a/lib/websocket_connection.ml b/lib/websocket_connection.ml index 34cc9c69..e9378ecb 100644 --- a/lib/websocket_connection.ml +++ b/lib/websocket_connection.ml @@ -16,13 +16,13 @@ type t = { reader : [`Parse of string list * string] Reader.t ; wsd : Wsd.t ; frame_handler : frame_handler - ; eof : unit -> unit + ; eof : ?error:error -> unit -> unit ; frame_queue: (Parse.t * Payload.t) Queue.t } type input_handlers = { frame : frame_handler - ; eof : unit -> unit } + ; eof : ?error:error -> unit -> unit } (* TODO: this should be passed as an argument from the runtime, to allow for * cryptographically secure random number generation. *) @@ -36,17 +36,10 @@ type input_handlers = let random_int32 () = Random.int32 Int32.max_int -let default_error_handler wsd (`Exn exn) = - let message = Printexc.to_string exn in - let payload = Bytes.of_string message in - Wsd.send_bytes wsd ~kind:`Text payload ~off:0 ~len:(Bytes.length payload); - Wsd.close wsd -;; - let wakeup_reader t = Reader.wakeup t.reader -let create ~mode ?(error_handler = default_error_handler) websocket_handler = - let wsd = Wsd.create ~error_handler mode in +let create ~mode websocket_handler = + let wsd = Wsd.create mode in let { frame = frame_handler; eof } = websocket_handler wsd in let frame_queue = Queue.create () in let handler frame payload = @@ -78,7 +71,7 @@ let shutdown t = Wsd.close t.wsd let set_error_and_handle t error = - Wsd.report_error t.wsd error; + Wsd.report_error t.wsd error t.eof; shutdown t let advance_frame_queue t = diff --git a/lib/wsd.ml b/lib/wsd.ml index 460b30c9..941b2597 100644 --- a/lib/wsd.ml +++ b/lib/wsd.ml @@ -8,18 +8,15 @@ type t = { faraday : Faraday.t ; mode : mode ; mutable wakeup : Optional_thunk.t - ; error_handler: error_handler ; mutable error_code: [`Ok | error ] } -and error_handler = t -> error -> unit let default_ready_to_write = Sys.opaque_identity (fun () -> ()) -let create ~error_handler mode = +let create mode = { faraday = Faraday.create 0x1000 ; mode ; wakeup = Optional_thunk.none - ; error_handler ; error_code = `Ok } @@ -116,12 +113,12 @@ let error_code t = | #error as error -> Some error | `Ok -> None -let report_error t error = +let report_error t error (error_handler : ?error:error -> unit -> unit) = match t.error_code with | `Ok -> - t.error_code <- (error :> [`Ok | error]); + t.error_code <- (error :> [`Ok | error ]); if not (is_closed t) - then t.error_handler t error + then error_handler ~error () | `Exn _exn -> close ~code:`Abnormal_closure t diff --git a/lib_test/test_httpun_ws.ml b/lib_test/test_httpun_ws.ml index a73d468f..fcc2e9b2 100644 --- a/lib_test/test_httpun_ws.ml +++ b/lib_test/test_httpun_ws.ml @@ -127,19 +127,18 @@ module Websocket = struct | `Pong | `Other _ -> assert false in - let eof () = - Format.eprintf "EOF\n%!"; - Wsd.close wsd + let eof ?error () = + match error with + | Some _ -> assert false + | None -> + Format.eprintf "EOF\n%!"; + Wsd.close wsd in { Websocket_connection.frame ; eof } in - let t = - Server_connection.create_websocket - ~error_handler:(fun _ -> assert false) - websocket_handler - in + let t = Server_connection.create_websocket websocket_handler in let frame = serialize_frame ~is_fin:false "hello" in let frames = frame ^ frame in let len = String.length frames in @@ -170,11 +169,9 @@ module Websocket = struct in Client_connection.read t bs ~off:0 ~len - let default_error_handler _wsd _exn = assert false - let test_reading_ping_frame () = let t = - Client_connection.create ~error_handler:default_error_handler (fun wsd -> + Client_connection.create (fun wsd -> let frame ~opcode ~is_fin:_ ~len:_ _payload = match opcode with | `Text @@ -185,9 +182,12 @@ module Websocket = struct | `Other _ -> Alcotest.fail "expected to parse ping frame" | `Ping -> Alcotest.(check pass) "ping frame parsed" true true in - let eof () = - Format.eprintf "EOF\n%!"; - Wsd.close wsd + let eof ?error () = + match error with + | Some _ -> assert false + | None -> + Format.eprintf "EOF\n%!"; + Wsd.close wsd in { Websocket_connection.frame ; eof @@ -200,7 +200,7 @@ module Websocket = struct let test_reading_close_frame () = let handler_called = ref false in let t = - Client_connection.create ~error_handler:default_error_handler (fun wsd -> + Client_connection.create (fun wsd -> let frame ~opcode ~is_fin:_ ~len:_ _payload = handler_called := true; match opcode with @@ -212,9 +212,12 @@ module Websocket = struct | `Other _ -> Alcotest.fail "expected to parse close frame" | `Connection_close -> Alcotest.(check pass) "close frame parsed" true true in - let eof () = - Format.eprintf "EOF\n%!"; - Wsd.close wsd + let eof ?error () = + match error with + | Some _ -> assert false + | None -> + Format.eprintf "EOF\n%!"; + Wsd.close wsd in { Websocket_connection.frame ; eof @@ -253,16 +256,19 @@ module Websocket = struct | `Other _ | `Connection_close -> Alcotest.fail "expected to parse text frame" in - let eof () = - Format.eprintf "EOF\n%!"; - Wsd.close wsd + let eof ?error () = + match error with + | Some _ -> assert false + | None -> + Format.eprintf "EOF\n%!"; + Wsd.close wsd in { Websocket_connection.frame ; eof } in let t = - Client_connection.create ~error_handler:default_error_handler (ws_handler ["1234567890\n"]) + Client_connection.create (ws_handler ["1234567890\n"]) in let serialized_frame = "\129\139\086\057\046\216\103\011\029\236\099\015\025\224\111\009\036" @@ -283,7 +289,7 @@ module Websocket = struct in let t = - Client_connection.create ~error_handler:default_error_handler (ws_handler ["4567890\n"; "123"]) + Client_connection.create (ws_handler ["4567890\n"; "123"]) in let first_chunk_parsed = Client_connection.read t bs ~off:0 ~len:9 in diff --git a/lwt/httpun_ws_lwt.ml b/lwt/httpun_ws_lwt.ml index 0ea0698d..fa6d8ca6 100644 --- a/lwt/httpun_ws_lwt.ml +++ b/lwt/httpun_ws_lwt.ml @@ -13,13 +13,11 @@ module Server (Server_runtime: Gluten_lwt.Server) = struct let create_connection_handler ?(config = Httpun.Config.default) ?error_handler - ?websocket_error_handler websocket_handler = fun client_addr socket -> let connection = Httpun_ws.Server_connection.create ~sha1 ?error_handler:(Option.map (fun f -> f client_addr) error_handler) - ?websocket_error_handler:(Option.map (fun f -> f client_addr) websocket_error_handler) (websocket_handler client_addr) in Server_runtime.create_connection_handler diff --git a/lwt/httpun_ws_lwt_intf.ml b/lwt/httpun_ws_lwt_intf.ml index 1515a032..c75a89ad 100644 --- a/lwt/httpun_ws_lwt_intf.ml +++ b/lwt/httpun_ws_lwt_intf.ml @@ -42,7 +42,6 @@ module type Server = sig val create_connection_handler : ?config : Httpun.Config.t -> ?error_handler : (addr -> Httpun.Server_connection.error_handler) - -> ?websocket_error_handler : (addr -> Server_connection.error_handler) -> (addr -> Wsd.t -> Websocket_connection.input_handlers) -> (addr -> socket -> unit Lwt.t) end diff --git a/mirage/httpun_ws_mirage.ml b/mirage/httpun_ws_mirage.ml index a30a7713..c2785ccb 100644 --- a/mirage/httpun_ws_mirage.ml +++ b/mirage/httpun_ws_mirage.ml @@ -37,17 +37,12 @@ module Server (Flow : Mirage_flow.S) = struct module Server_runtime = Httpun_ws_lwt.Server (Gluten_mirage.Server (Flow)) - let create_connection_handler - ?config - ?error_handler - ?websocket_error_handler - websocket_handler = + let create_connection_handler ?config ?error_handler websocket_handler = fun flow -> let websocket_handler = fun () -> websocket_handler in Server_runtime.create_connection_handler ?config ?error_handler:(Option.map (fun f -> fun () -> f) error_handler) - ?websocket_error_handler:(Option.map (fun f -> fun () -> f) websocket_error_handler) websocket_handler () (Gluten_mirage.Buffered_flow.create flow) @@ -62,7 +57,6 @@ module type Server = sig val create_connection_handler : ?config : Httpun.Config.t -> ?error_handler : Httpun.Server_connection.error_handler - -> ?websocket_error_handler : Server_connection.error_handler -> (Wsd.t -> Websocket_connection.input_handlers) -> (socket -> unit Lwt.t) end diff --git a/mirage/httpun_ws_mirage.mli b/mirage/httpun_ws_mirage.mli index df946cdd..f0498c91 100644 --- a/mirage/httpun_ws_mirage.mli +++ b/mirage/httpun_ws_mirage.mli @@ -40,7 +40,6 @@ module type Server = sig val create_connection_handler : ?config : Httpun.Config.t -> ?error_handler : Httpun.Server_connection.error_handler - -> ?websocket_error_handler : Server_connection.error_handler -> (Wsd.t -> Websocket_connection.input_handlers) -> (socket -> unit Lwt.t) end