From d7b7580b3913c17b404319cc4c153748d5e59194 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Fri, 9 Nov 2018 17:42:37 +0100 Subject: Add sendfile support to cowboy_req:stream_body It is now possible to stream one or more sendfile tuples. A simple example of what can now be done would be for example to build a tar file on the fly using the sendfile syscall for sending the files, or to support Range requests with more than one range with the sendfile syscall. When using cowboy_compress_h unfortunately we have to read the file in order to send it. More options will be added at a later time to make sure users don't read too much into memory. This is a new feature however so existing code is not affected. Also rework cowboy_http's data sending to be flatter. --- src/cowboy_http2.erl | 6 ------ 1 file changed, 6 deletions(-) (limited to 'src/cowboy_http2.erl') diff --git a/src/cowboy_http2.erl b/src/cowboy_http2.erl index d461595..fc1a3a0 100644 --- a/src/cowboy_http2.erl +++ b/src/cowboy_http2.erl @@ -510,12 +510,6 @@ commands(State0, StreamID, [{data, IsFin, Data}|Tail]) -> commands(State0, StreamID, [{trailers, Trailers}|Tail]) -> State = maybe_send_data(State0, StreamID, fin, {trailers, maps:to_list(Trailers)}), commands(State, StreamID, Tail); -%% Send a file. -%% @todo Add the sendfile command. -%commands(State0, Stream0=#stream{local=nofin}, -% [{sendfile, IsFin, Offset, Bytes, Path}|Tail]) -> -% {State, Stream} = maybe_send_data(State0, Stream0, IsFin, {sendfile, Offset, Bytes, Path}), -% commands(State, Stream, Tail); %% Send a push promise. %% %% @todo Responses sent as a result of a push_promise request -- cgit v1.2.3