From d5725c16b8e92b4d0ba5edc9edc25c273a9ccf29 Mon Sep 17 00:00:00 2001 From: Clombrong Date: Sat, 28 Jun 2025 01:06:32 +0200 Subject: fix(portal_tcp): reading from the socket handles errors --- portal/tcp/portal.ml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/portal/tcp/portal.ml b/portal/tcp/portal.ml index 3b969fc..28ef8a6 100644 --- a/portal/tcp/portal.ml +++ b/portal/tcp/portal.ml @@ -76,7 +76,13 @@ let socket_to_stream (sock : socket) = let raw_stream = let buffer = Bytes.create 4096 in Lwt_stream.from (fun () -> - let* len = Lwt_unix.read sock buffer 0 4096 + let* len = + try%lwt Lwt_unix.read sock buffer 0 4096 + with + | Unix.Unix_error (Unix.ECONNRESET, _, _) + | Unix.Unix_error (Unix.EPIPE, _, _) + | End_of_file -> Lwt.return 0 + | exn -> Lwt.fail exn in match len with | 0 -> Lwt.return_none | len -> Lwt.return_some (Bytes.sub_string buffer 0 len)) -- cgit v1.2.3