aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--doc/src/guide/broken_clients.asciidoc27
-rw-r--r--test/http_SUITE.erl15
-rw-r--r--test/http_SUITE_data/http_streamed.erl14
3 files changed, 14 insertions, 42 deletions
diff --git a/doc/src/guide/broken_clients.asciidoc b/doc/src/guide/broken_clients.asciidoc
index 17bb892..1d1a51a 100644
--- a/doc/src/guide/broken_clients.asciidoc
+++ b/doc/src/guide/broken_clients.asciidoc
@@ -46,16 +46,17 @@ implementations. There is no easy solution for this other than
forking the project and editing the `cowboy_protocol` file
directly.
-=== Chunked transfer-encoding
-
-Sometimes an HTTP client advertises itself as HTTP/1.1 but
-does not support chunked transfer-encoding. This is invalid
-behavior, as HTTP/1.1 clients are required to support it.
-
-A simple workaround exists in these cases. By changing the
-Req object response state to `waiting_stream`, Cowboy will
-understand that it must use the identity transfer-encoding
-when replying, just like if it was an HTTP/1.0 client.
-
-[source,erlang]
-Req2 = cowboy_req:set(resp_state, waiting_stream).
+// @todo This currently has no equivalent in Cowboy 2.0.
+// === Chunked transfer-encoding
+//
+// Sometimes an HTTP client advertises itself as HTTP/1.1 but
+// does not support chunked transfer-encoding. This is invalid
+// behavior, as HTTP/1.1 clients are required to support it.
+//
+// A simple workaround exists in these cases. By changing the
+// Req object response state to `waiting_stream`, Cowboy will
+// understand that it must use the identity transfer-encoding
+// when replying, just like if it was an HTTP/1.0 client.
+//
+// [source,erlang]
+// Req2 = cowboy_req:set(resp_state, waiting_stream).
diff --git a/test/http_SUITE.erl b/test/http_SUITE.erl
index 260aff6..3ea53fd 100644
--- a/test/http_SUITE.erl
+++ b/test/http_SUITE.erl
@@ -103,7 +103,6 @@ init_dispatch(Config) ->
cowboy_router:compile([
{"localhost", [
{"/chunked_response", http_chunked, []},
- {"/streamed_response", http_streamed, []},
{"/headers/dupe", http_handler,
[{headers, #{<<"connection">> => <<"close">>}}]},
{"/set_resp/header", http_set_resp,
@@ -807,20 +806,6 @@ stream_body_set_resp_chunked10(Config) ->
{ok, <<"stream_body_set_resp_chunked">>} = gun:await_body(ConnPid, Ref),
gun_down(ConnPid).
-%% Undocumented hack: force chunked response to be streamed as HTTP/1.1.
-streamed_response(Config) ->
- Client = raw_open(Config),
- ok = raw_send(Client, "GET /streamed_response HTTP/1.1\r\nHost: localhost\r\n\r\n"),
- Data = raw_recv_head(Client),
- {'HTTP/1.1', 200, _, Rest} = cow_http:parse_status_line(Data),
- {Headers, Rest2} = cow_http:parse_headers(Rest),
- false = lists:keymember(<<"transfer-encoding">>, 1, Headers),
- Rest2Size = byte_size(Rest2),
- ok = case <<"streamed_handler\r\nworks fine!">> of
- Rest2 -> ok;
- << Rest2:Rest2Size/binary, Expect/bits >> -> raw_expect_recv(Client, Expect)
- end.
-
te_chunked(Config) ->
Body = list_to_binary(io_lib:format("~p", [lists:seq(1, 100)])),
ConnPid = gun_open(Config),
diff --git a/test/http_SUITE_data/http_streamed.erl b/test/http_SUITE_data/http_streamed.erl
deleted file mode 100644
index 6ca53fb..0000000
--- a/test/http_SUITE_data/http_streamed.erl
+++ /dev/null
@@ -1,14 +0,0 @@
-%% Feel free to use, reuse and abuse the code in this file.
-
--module(http_streamed).
-
--export([init/2]).
-
-init(Req, Opts) ->
- Req2 = cowboy_req:set([{resp_state, waiting_stream}], Req),
- Req3 = cowboy_req:chunked_reply(200, Req2),
- timer:sleep(100),
- cowboy_req:chunk("streamed_handler\r\n", Req3),
- timer:sleep(100),
- cowboy_req:chunk("works fine!", Req3),
- {ok, Req3, Opts}.