From 8c7890adccb23c2a090370a967985909be86e5a8 Mon Sep 17 00:00:00 2001 From: David Ansari Date: Mon, 24 Feb 2025 12:37:01 +0100 Subject: [PATCH] Send all received WebSocket frames to app Prior to this commit, if the WebSocket client received multiple WebSocket frames in a single Erlang message by gen_tcp, the WebSocket client sent only the first received WebSocket frame to the application. This commit fixes this bug by having the WebSocket client send all WebSocket frames to the application. (cherry picked from commit 3d7a0275033b993f94adff3c0f21bda02f56d1c3) --- deps/rabbitmq_ct_client_helpers/src/rfc6455_client.erl | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/deps/rabbitmq_ct_client_helpers/src/rfc6455_client.erl b/deps/rabbitmq_ct_client_helpers/src/rfc6455_client.erl index 57caf90c05c0..047548abd81f 100644 --- a/deps/rabbitmq_ct_client_helpers/src/rfc6455_client.erl +++ b/deps/rabbitmq_ct_client_helpers/src/rfc6455_client.erl @@ -160,7 +160,7 @@ do_recv(State = #state{phase = opening, ppid = PPid, data = Data}) -> State#state{phase = open, data = Data1} end; -do_recv(State = #state{phase = Phase, data = Data, socket = Socket, transport = Transport, ppid = PPid}) +do_recv(State0 = #state{phase = Phase, data = Data, socket = Socket, transport = Transport, ppid = PPid}) when Phase =:= open orelse Phase =:= closing -> R = case Data of <> @@ -181,8 +181,10 @@ do_recv(State = #state{phase = Phase, data = Data, socket = Socket, transport = end, case R of moredata -> - State; - _ -> do_recv2(State, R) + State0; + _ -> + State = do_recv2(State0, R), + do_recv(State) end. do_recv2(State = #state{phase = Phase, socket = Socket, ppid = PPid, transport = Transport}, R) ->