forked from chrisavl/elli_fileserve
-
Notifications
You must be signed in to change notification settings - Fork 4
Open
Labels
Description
I get double Content-Length headers when using the master branch. E.g.:
$ http get localhost:8000/js/app.js
http: error: InvalidHeader: Content-Length contained multiple unmatching values(307288, 0)
Tracing shows this result:
GET /js/app.js HTTP/1.1
Host: localhost:8000
User-Agent: HTTPie/0.9.8
Accept-Encoding: gzip, deflate
Accept: */*
Connection: keep-alive
HTTP/1.1 206 Partial Content
Connection: Keep-Alive
Content-Length: 307288
Content-Type: application/javascript; charset=utf-8
Content-Length: 0
Content-Range: bytes 0--1/307288
...(contents of the JS-file)...
If I debug using the request_complete event as follows:
handle_event(request_complete, [_Req, _Code, _Headers, _Body, {_Timings, _Sizes}], _Args) ->
io:format("~p ~p ~p ~p~n", [_Code, _Headers, _Body, _Sizes]),
ok;I get the following output:
200 [{<<"Connection">>,<<"Keep-Alive">>},
{"Content-Length",307288},
{"Content-Type",
[97,112,112,108,105,99,97,116,105,111,110,47,106,97,118,97,115,99,114,
105,112,116,59,32,99,104,97,114,115,101,116,61|<<"utf-8">>]}] <<>> [{resp_headers,
186},
{file,
307288}]
Here I only see the headers set by elli_fileserve but somewhere a Content-Length: 0 header is added (and the response transformed to a 206 Partial Content as well.
This is the configuration and supervisor:
-module(myapp_sup).
-behaviour(supervisor).
% API
-export([start_link/0]).
% Supervisor callbacks
-export([init/1]).
-define(NAME, ?MODULE).
%--- API ----------------------------------------------------------------------
start_link() ->
supervisor:start_link({local, ?NAME}, ?MODULE, []).
%--- Supervisor callbacks -----------------------------------------------------
init([]) ->
ElliOpts = [
{callback, elli_middleware},
{callback_args, [{mods, [
{elli_fileserve, [
{path, static("js")},
{prefix, <<"/js">>},
{charset, <<"utf-8">>},
{default, <<"index.html">>}
]}
]}]},
{port, 8000}
],
Elli = {
myapp_http,
{elli, start_link, [ElliOpts]},
permanent,
5000,
worker,
[elli]
},
{ok, {{one_for_all, 0, 1}, [Elli]}}.
static(Path) ->
iolist_to_binary(filename:join([code:priv_dir(myapp), "static", Path])).Not sure if this is a bug in elli_fileserve or Elli itself.