aboutsummaryrefslogtreecommitdiffstats
path: root/test/old_http_SUITE_data/http_loop_stream_recv.erl
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2018-03-26 18:49:09 +0200
committerLoïc Hoguin <[email protected]>2018-03-26 18:53:07 +0200
commit5964273cc4354b7378b8bdf49fe455d2b46d7c3b (patch)
tree38194d0ae9a16056fff8e1c062fe6c6267d2d24c /test/old_http_SUITE_data/http_loop_stream_recv.erl
parent4d5174632cc1feac541697b18e6fbbdd0eed021b (diff)
downloadcowboy-5964273cc4354b7378b8bdf49fe455d2b46d7c3b.tar.gz
cowboy-5964273cc4354b7378b8bdf49fe455d2b46d7c3b.tar.bz2
cowboy-5964273cc4354b7378b8bdf49fe455d2b46d7c3b.zip
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.
Diffstat (limited to 'test/old_http_SUITE_data/http_loop_stream_recv.erl')
-rw-r--r--test/old_http_SUITE_data/http_loop_stream_recv.erl34
1 files changed, 34 insertions, 0 deletions
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.