diff options
author | Loïc Hoguin <[email protected]> | 2018-03-26 18:49:09 +0200 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2018-03-26 18:53:07 +0200 |
commit | 5964273cc4354b7378b8bdf49fe455d2b46d7c3b (patch) | |
tree | 38194d0ae9a16056fff8e1c062fe6c6267d2d24c /test/old_http_SUITE_data/http_loop_stream_recv.erl | |
parent | 4d5174632cc1feac541697b18e6fbbdd0eed021b (diff) | |
download | cowboy-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.erl | 34 |
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. |