[BUG] erlang:decode_packet/3 generates corrupt header names with httph_bin
Will
wglozer@REDACTED
Sun Mar 21 00:11:11 CET 2010
Hello,
erlang:decode_packet/3 generates strange corrupted header names for
unknown header types when using the httph_bin option. The cause seems
related to the length of the header name, short ones work fine.
Test Case:
test() ->
B = <<
"X-Transaction: 1269062039-39495-905\r\n"
"X-RateLimit-Limit: 150\r\n"
"Content-Type: application/json; charset=utf-8\r\n"
"X-Foo: bar\r\n"
"\r\n"
>>,
{ok, Headers, Rest} = decode_headers(B, []),
io:format("HEADERS:~n~p~n", [Headers]),
io:format("REST:~n~p~n", [Rest]).
decode_headers(Bin, Acc) ->
case erlang:decode_packet(httph_bin, Bin, []) of
{ok, {http_header, _N, _Name, _, _V} = H, Rest} ->
decode_headers(Rest, [H | Acc]);
{ok, http_eoh, Rest} ->
{ok, Acc, Rest}
end.
Result:
Erlang R13B04 (erts-5.7.5) [source] [smp:2:2] [rq:2] [async-threads:0]
[hipe] [kernel-poll:false]
HEADERS:
[{http_header,0,<<"X-Foo">>,undefined,<<"bar">>},
{http_header,42,'Content-Type',undefined,
<<"application/json; charset=utf-8">>},
{http_header,0,
<<88,45,70,111,111,50,14,0,64,190,14,1,10,0,0,0,14>>,
undefined,<<"150">>},
{http_header,0,
<<88,45,70,111,111,50,14,0,64,190,14,1,10>>,
undefined,<<"1269062039-39495-905">>}]
REST:
<<>>
More information about the erlang-bugs
mailing list