From dfdd8f248b249254b63bc5f18f8ab172ec94ca0e Mon Sep 17 00:00:00 2001 From: Anil Madhavapeddy Date: Mon, 29 May 2023 19:26:57 +0100 Subject: [PATCH] adapt to Eio.Net interface changes --- lib/gluten/eio/gluten_eio.ml | 4 ++-- lib/gluten/eio/gluten_eio.mli | 8 ++++---- lib/h2/eio/h2_eio.mli | 4 ++-- lib/httpaf/eio/httpaf_eio.mli | 4 ++-- lib/tls/eio/tls_eio.ml | 2 ++ lib/tls/eio/tls_eio.mli | 2 +- src/main.ml | 23 +++++------------------ 7 files changed, 18 insertions(+), 29 deletions(-) diff --git a/lib/gluten/eio/gluten_eio.ml b/lib/gluten/eio/gluten_eio.ml index a1dcccbddb..a4de11b5be 100644 --- a/lib/gluten/eio/gluten_eio.ml +++ b/lib/gluten/eio/gluten_eio.ml @@ -82,7 +82,7 @@ module IO_loop = struct -> read_buffer_size:int -> cancel:unit Promise.t -> t - -> #Eio.Flow.two_way + -> #Eio.Net.stream_socket -> unit = fun (module Runtime) ~read_buffer_size ~cancel t socket -> @@ -182,7 +182,7 @@ end module Client = struct type t = { connection : Gluten.Client.t - ; socket : Eio.Flow.two_way + ; socket : Eio.Net.stream_socket ; shutdown_reader : unit -> unit ; shutdown_complete : unit Promise.t } diff --git a/lib/gluten/eio/gluten_eio.mli b/lib/gluten/eio/gluten_eio.mli index 158298df01..00c587b91a 100644 --- a/lib/gluten/eio/gluten_eio.mli +++ b/lib/gluten/eio/gluten_eio.mli @@ -36,7 +36,7 @@ module Server : sig -> protocol:'t Gluten.runtime -> 't -> Eio.Net.Sockaddr.stream - -> Eio.Flow.two_way + -> Eio.Net.stream_socket -> unit val create_upgradable_connection_handler : @@ -46,7 +46,7 @@ module Server : sig -> request_handler: (Eio.Net.Sockaddr.stream -> 'reqd Gluten.Server.request_handler) -> Eio.Net.Sockaddr.stream - -> Eio.Flow.two_way + -> Eio.Net.stream_socket -> unit end @@ -58,11 +58,11 @@ module Client : sig -> read_buffer_size:int -> protocol:'t Gluten.runtime -> 't - -> Eio.Flow.two_way + -> Eio.Net.stream_socket -> t val upgrade : t -> Gluten.impl -> unit val shutdown : t -> unit Eio.Promise.t val is_closed : t -> bool - val socket : t -> Eio.Flow.two_way + val socket : t -> Eio.Net.stream_socket end diff --git a/lib/h2/eio/h2_eio.mli b/lib/h2/eio/h2_eio.mli index a1beefb224..374f2c904a 100644 --- a/lib/h2/eio/h2_eio.mli +++ b/lib/h2/eio/h2_eio.mli @@ -37,7 +37,7 @@ module Server : sig -> error_handler: (Eio.Net.Sockaddr.stream -> H2.Server_connection.error_handler) -> Eio.Net.Sockaddr.stream - -> Eio.Flow.two_way + -> Eio.Net.stream_socket -> unit end @@ -53,7 +53,7 @@ module Client : sig (H2.Request.t -> (H2.Client_connection.response_handler, unit) result) -> sw:Eio.Switch.t -> error_handler:H2.Client_connection.error_handler - -> Eio.Flow.two_way + -> Eio.Net.stream_socket -> t val request : diff --git a/lib/httpaf/eio/httpaf_eio.mli b/lib/httpaf/eio/httpaf_eio.mli index 070675ba09..441c8cc890 100644 --- a/lib/httpaf/eio/httpaf_eio.mli +++ b/lib/httpaf/eio/httpaf_eio.mli @@ -39,7 +39,7 @@ module Server : sig -> request_handler : (Eio.Net.Sockaddr.stream -> Httpaf.Reqd.t Gluten.reqd -> unit) -> error_handler : (Eio.Net.Sockaddr.stream -> Httpaf.Server_connection.error_handler) -> Eio.Net.Sockaddr.stream - -> Eio.Flow.two_way + -> Eio.Net.stream_socket -> unit end @@ -50,7 +50,7 @@ module Client : sig } val create_connection - : ?config:Httpaf.Config.t -> sw:Eio.Switch.t -> Eio.Flow.two_way -> t + : ?config:Httpaf.Config.t -> sw:Eio.Switch.t -> Eio.Net.stream_socket -> t val request : t diff --git a/lib/tls/eio/tls_eio.ml b/lib/tls/eio/tls_eio.ml index 2e4eaab94f..25451eb8dc 100644 --- a/lib/tls/eio/tls_eio.ml +++ b/lib/tls/eio/tls_eio.ml @@ -204,6 +204,7 @@ end type t = < Eio.Flow.two_way; + close : unit; t : Raw.t; > @@ -213,6 +214,7 @@ let of_t t = method read_into = Raw.read t method copy = Raw.copy_from t method shutdown = Raw.shutdown t + method close = Raw.close_tls t method t = t end diff --git a/lib/tls/eio/tls_eio.mli b/lib/tls/eio/tls_eio.mli index 38d60c92a2..c2646ce7f7 100644 --- a/lib/tls/eio/tls_eio.mli +++ b/lib/tls/eio/tls_eio.mli @@ -9,7 +9,7 @@ exception Tls_alert of Tls.Packet.alert_type (** [Tls_failure] exception while processing incoming data *) exception Tls_failure of Tls.Engine.failure -type t = private < Eio.Flow.two_way; .. > +type t = private < Eio.Flow.two_way; close : unit; .. > (** {2 Constructors} *) diff --git a/src/main.ml b/src/main.ml index 77ef6145bc..938f16b039 100644 --- a/src/main.ml +++ b/src/main.ml @@ -65,13 +65,7 @@ module H2_handler = struct | `Not_found -> Reqd.respond_with_string reqd (Response.create `Not_found) "Not found" - let error_handler : - Eio.Net.Sockaddr.stream -> - ?request:H2.Request.t -> - _ -> - (Headers.t -> Body.Writer.t) -> - unit = - fun _client_address ?request:_ _error start_response -> + let error_handler _client_address ?request:_ _error start_response = let response_body = start_response Headers.empty in Body.Writer.close response_body end @@ -84,8 +78,7 @@ module H1_handler = struct | s -> Some s | exception _ -> None - let request_handler : Eio.Net.Sockaddr.stream -> Reqd.t Gluten.reqd -> unit = - fun _client_address { Gluten.reqd; _ } -> + let request_handler _client_address { Gluten.reqd; _ } = let request = Reqd.request reqd in Eio.traceln "HTTP1 %a" Request.pp_hum request; let response_content_type = @@ -110,13 +103,7 @@ module H1_handler = struct in Reqd.respond_with_string reqd response response_body - let error_handler : - Eio.Net.Sockaddr.stream -> - ?request:Request.t -> - _ -> - (Headers.t -> Body.Writer.t) -> - unit = - fun _client_address ?request:_ _error start_response -> + let error_handler _client_address ?request:_ _error start_response = let response_body = start_response Headers.empty in Body.Writer.close response_body end @@ -165,8 +152,8 @@ module Alpn_lib = struct | Ok {alpn_protocol;_} -> match alpn_protocol with | None -> () - | Some "http/1.1" -> h1_handler (flow :> Eio.Flow.two_way) sa - | Some "h2" -> h2_handler ~docroot (flow :> Eio.Flow.two_way) sa + | Some "http/1.1" -> h1_handler (flow :> Eio.Net.stream_socket) sa + | Some "h2" -> h2_handler ~docroot (flow :> Eio.Net.stream_socket) sa | Some _ -> Eio.traceln "invalid ALPN response"; () ) done