Skip to content

Commit

Permalink
Merge pull request #1011 from mefyl/eio
Browse files Browse the repository at this point in the history
cohttp-eio.Server: Don't blow up on client disconnections.
  • Loading branch information
mseri authored Jan 3, 2024
2 parents e5a66f1 + d3553f7 commit 5711091
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 6 deletions.
4 changes: 4 additions & 0 deletions CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
## v6.0.0~beta2

- cohttp-eio: Don't blow up Server on client disconnections. (mefyl #1011)

## v6.0.0~beta1 (2023-10-27)
- cohttp-eio: move new Cohttp.{Client,Server} modules under Cohttp.Generic (mseri #1003)
- cohttp-eio: Add Client.make_generic and HTTPS support. (talex5 #1002)
Expand Down
16 changes: 10 additions & 6 deletions cohttp-eio/src/server.ml
Original file line number Diff line number Diff line change
Expand Up @@ -109,10 +109,14 @@ let callback { conn_closed; handler } conn input output =
let run ?max_connections ?additional_domains ?stop ~on_error socket server =
Eio.Net.run_server socket ?max_connections ?additional_domains ?stop ~on_error
(fun socket peer_address ->
Eio.Switch.run @@ fun sw ->
let () =
try
Eio.Switch.run @@ fun sw ->
let () =
Logs.info (fun m ->
m "%a: accept connection" Eio.Net.Sockaddr.pp peer_address)
and input = Eio.Buf_read.of_flow ~max_size:max_int socket in
Eio.Buf_write.with_flow socket @@ fun output ->
callback server (sw, peer_address) input output
with Eio.Io (Eio.Net.E (Connection_reset _), _) ->
Logs.info (fun m ->
m "%a: accept connection" Eio.Net.Sockaddr.pp peer_address)
and input = Eio.Buf_read.of_flow ~max_size:max_int socket in
Eio.Buf_write.with_flow socket @@ fun output ->
callback server (sw, peer_address) input output)
m "%a: disconnected" Eio.Net.Sockaddr.pp peer_address))

0 comments on commit 5711091

Please sign in to comment.