From 5964273cc4354b7378b8bdf49fe455d2b46d7c3b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Mon, 26 Mar 2018 18:49:09 +0200 Subject: Fix the flushing of messages when switching to Websocket We now flush messages that are specific to cowboy_http only. Stream handlers should also flush their own specific messages if necessary, although timeouts will be flushed regardless of where they originate from. Also renames the http_SUITE to old_http_SUITE to distinguish new tests from old tests. Most old tests need to be removed or converted eventually as they're legacy tests from Cowboy 1.0. --- test/old_http_SUITE_data/http_loop_stream_recv.erl | 34 ++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 test/old_http_SUITE_data/http_loop_stream_recv.erl (limited to 'test/old_http_SUITE_data/http_loop_stream_recv.erl') diff --git a/test/old_http_SUITE_data/http_loop_stream_recv.erl b/test/old_http_SUITE_data/http_loop_stream_recv.erl new file mode 100644 index 0000000..8c6f6b0 --- /dev/null +++ b/test/old_http_SUITE_data/http_loop_stream_recv.erl @@ -0,0 +1,34 @@ +%% Feel free to use, reuse and abuse the code in this file. + +-module(http_loop_stream_recv). + +-export([init/2]). +-export([info/3]). +-export([terminate/3]). + +init(Req, _) -> + receive after 100 -> ok end, + self() ! stream, + {cowboy_loop, Req, undefined}. + +info(stream, Req, undefined) -> + stream(Req, 1, <<>>). + +stream(Req, ID, Acc) -> + case cowboy_req:read_body(Req) of + {ok, <<>>, Req2} -> + {stop, cowboy_req:reply(200, Req2), undefined}; + {_, Data, Req2} -> + parse_id(Req2, ID, << Acc/binary, Data/binary >>) + end. + +parse_id(Req, ID, Data) -> + case Data of + << ID:32, Rest/bits >> -> + parse_id(Req, ID + 1, Rest); + _ -> + stream(Req, ID, Data) + end. + +terminate(stop, _, _) -> + ok. -- cgit v1.2.3