diff options
author | Loïc Hoguin <[email protected]> | 2019-10-02 20:30:32 +0200 |
---|---|---|
committer | Loïc Hoguin <[email protected]> | 2019-10-02 20:30:32 +0200 |
commit | eaa052616f7c85d4daf4817ceecd5f87fecfc8f4 (patch) | |
tree | 1865efbc9551631607435119839e8af0dc779a8b /src/cowboy_req.erl | |
parent | 20660d7566b63977e80f694724fee890d875ec1b (diff) | |
download | cowboy-eaa052616f7c85d4daf4817ceecd5f87fecfc8f4.tar.gz cowboy-eaa052616f7c85d4daf4817ceecd5f87fecfc8f4.tar.bz2 cowboy-eaa052616f7c85d4daf4817ceecd5f87fecfc8f4.zip |
Ensure we can stream the response body from any process
Diffstat (limited to 'src/cowboy_req.erl')
-rw-r--r-- | src/cowboy_req.erl | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/src/cowboy_req.erl b/src/cowboy_req.erl index b2756e3..e5ec4a7 100644 --- a/src/cowboy_req.erl +++ b/src/cowboy_req.erl @@ -827,19 +827,19 @@ stream_body(_, _, #{method := <<"HEAD">>, has_sent_resp := headers}) -> stream_body({sendfile, _, 0, _}, nofin, _) -> ok; stream_body({sendfile, _, 0, _}, IsFin=fin, Req=#{has_sent_resp := headers}) -> - stream_body({data, IsFin, <<>>}, Req); + stream_body({data, self(), IsFin, <<>>}, Req); stream_body({sendfile, O, B, P}, IsFin, Req=#{has_sent_resp := headers}) when is_integer(O), O >= 0, is_integer(B), B > 0 -> - stream_body({data, IsFin, {sendfile, O, B, P}}, Req); + stream_body({data, self(), IsFin, {sendfile, O, B, P}}, Req); stream_body(Data, IsFin=nofin, Req=#{has_sent_resp := headers}) when not is_tuple(Data) -> case iolist_size(Data) of 0 -> ok; - _ -> stream_body({data, IsFin, Data}, Req) + _ -> stream_body({data, self(), IsFin, Data}, Req) end; stream_body(Data, IsFin, Req=#{has_sent_resp := headers}) when not is_tuple(Data) -> - stream_body({data, IsFin, Data}, Req). + stream_body({data, self(), IsFin, Data}, Req). %% @todo Do we need a timeout? stream_body(Msg, #{pid := Pid, streamid := StreamID}) -> @@ -850,7 +850,7 @@ stream_body(Msg, #{pid := Pid, streamid := StreamID}) -> stream_events(Event, IsFin, Req) when is_map(Event) -> stream_events([Event], IsFin, Req); stream_events(Events, IsFin, Req=#{has_sent_resp := headers}) -> - stream_body({data, IsFin, cow_sse:events(Events)}, Req). + stream_body({data, self(), IsFin, cow_sse:events(Events)}, Req). -spec stream_trailers(cowboy:http_headers(), req()) -> ok. stream_trailers(Trailers, #{pid := Pid, streamid := StreamID, has_sent_resp := headers}) -> |