diff options
author | Clombrong <cromblong@egregore.fun> | 2025-06-28 01:06:32 +0200 |
---|---|---|
committer | Clombrong <cromblong@egregore.fun> | 2025-06-28 07:39:19 +0200 |
commit | d5725c16b8e92b4d0ba5edc9edc25c273a9ccf29 (patch) | |
tree | 588dbe91ba8783a219d38ee7aad5e8f0ceacd4d3 | |
parent | e61005002c67f513eb7bfcc8c0fae4b37dce5cae (diff) |
fix(portal_tcp): reading from the socket handles errors
-rw-r--r-- | portal/tcp/portal.ml | 8 |
1 files changed, 7 insertions, 1 deletions
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)) |