From 28557b1c1dafaec17aa87d9b5ed6a13a956a5c8b Mon Sep 17 00:00:00 2001 From: Christopher Zimmermann Date: Sun, 21 Jun 2020 16:45:06 +0200 Subject: [PATCH 1/3] add close_notify as raw SSL_shutdown this is needed for sending EOF, aka one-way shutdown. --- src/lwt_ssl.ml | 7 +++++++ src/lwt_ssl.mli | 1 + 2 files changed, 8 insertions(+) diff --git a/src/lwt_ssl.ml b/src/lwt_ssl.ml index 0937cd3..e3f7737 100644 --- a/src/lwt_ssl.ml +++ b/src/lwt_ssl.ml @@ -168,6 +168,13 @@ let ssl_shutdown (fd, s) = let shutdown (fd, _) cmd = Lwt_unix.shutdown fd cmd +let close_notify = function + | (_, Plain) as s -> + shutdown s Unix.SHUTDOWN_SEND; + Lwt.return_true + | (fd, SSL s) -> + repeat_call fd (fun () -> Ssl.close_notify s) + let close (fd, _) = Lwt_unix.close fd let abort (fd, _) = Lwt_unix.abort fd diff --git a/src/lwt_ssl.mli b/src/lwt_ssl.mli index 8de0b77..ac91ee0 100644 --- a/src/lwt_ssl.mli +++ b/src/lwt_ssl.mli @@ -74,6 +74,7 @@ val close : socket -> unit Lwt.t val in_channel_of_descr : ?buffer:Lwt_bytes.t -> socket -> Lwt_io.input_channel val out_channel_of_descr : ?buffer:Lwt_bytes.t -> socket -> Lwt_io.output_channel +val close_notify : socket -> bool Lwt.t val ssl_shutdown : socket -> unit Lwt.t val abort : socket -> exn -> unit From ff5bf0bd3734003b9980d459a3ba50932613d1fd Mon Sep 17 00:00:00 2001 From: Antonio Nuno Monteiro Date: Wed, 1 Feb 2023 09:02:26 -0800 Subject: [PATCH 2/3] add constraint on ocaml-ssl --- lwt_ssl.opam | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lwt_ssl.opam b/lwt_ssl.opam index 1910c13..175d243 100644 --- a/lwt_ssl.opam +++ b/lwt_ssl.opam @@ -20,7 +20,7 @@ depends: [ "dune" "lwt" {>= "3.0.0"} "ocaml" - "ssl" {>= "0.5.0"} + "ssl" {>= "0.5.13"} ] build: [ From 2fc89e182b70d7931dc6765268f1bebc66d5eb1a Mon Sep 17 00:00:00 2001 From: Antonio Nuno Monteiro Date: Wed, 1 Feb 2023 09:06:10 -0800 Subject: [PATCH 3/3] add changes entry --- CHANGES | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGES b/CHANGES index d4b31a2..55bcbe4 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,7 @@ +===== Unreleased ===== + + * add Lwt_ssl.close_notify to issue one-way SSL shutdown (#2, @madroach) + ===== 1.1.3 (2018-07-30) ===== * Upgrade from Jbuilder to Dune (3b5782c).