From ac6660dd3cf3281dd5f0eda9b0ec9efa6cd75563 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. --- 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 57caf90c05c..047548abd81 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) ->