From 0dde5a0f3d3bb221b4b0b2d82750955009e45783 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Loi=CC=88c=20Correnson?= <loic.correnson@cea.fr> Date: Tue, 29 Mar 2022 10:14:00 +0200 Subject: [PATCH] [server] force flushing of in & out socket buffers --- src/plugins/server/server_socket.ml | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/plugins/server/server_socket.ml b/src/plugins/server/server_socket.ml index 32c00fa522e..9162d01da30 100644 --- a/src/plugins/server/server_socket.ml +++ b/src/plugins/server/server_socket.ml @@ -59,11 +59,15 @@ type channel = { let feed_bytes { sock ; rcv ; brcv } = try - (* rcv buffer is only used locally *) - let s = Bytes.length rcv in - let n = Unix.read sock rcv 0 s in - Buffer.add_subbytes brcv rcv 0 n ; - with Unix.Unix_error((EAGAIN|EWOULDBLOCK),_,_) -> () + while true do + (* rcv buffer is only used locally *) + let s = Bytes.length rcv in + let n = Unix.read sock rcv 0 s in + if n > 0 then + Buffer.add_subbytes brcv rcv 0 n + else raise Exit + done + with Exit | Unix.Unix_error((EAGAIN|EWOULDBLOCK),_,_) -> () let send_bytes { sock ; snd ; bsnd } = try @@ -200,7 +204,7 @@ let commands ch = begin feed_bytes ch ; match parse ch with - | [] -> None + | [] -> send_bytes ch ; None | requests -> Some Main.{ requests ; callback = callback ch } end -- GitLab