mirror of
https://github.com/processone/ejabberd.git
synced 2024-11-02 15:27:09 +01:00
Don't use binary:match to extract lines from binaries
This was added in R13B3, lets roll our own implementation to make sure it works on older erlang versions.
This commit is contained in:
parent
7c0b2f5425
commit
66b7caafe0
@ -1001,12 +1001,22 @@ old_integer_to_hex(I) when I>=16 ->
|
|||||||
|
|
||||||
% The following code is mostly taken from yaws_ssl.erl
|
% The following code is mostly taken from yaws_ssl.erl
|
||||||
|
|
||||||
|
extract_line(_, <<>>, _) ->
|
||||||
|
none;
|
||||||
|
extract_line(0, <<"\r", Rest/binary>>, Line) ->
|
||||||
|
extract_line(1, Rest, Line);
|
||||||
|
extract_line(0, <<A:8, Rest/binary>>, Line) ->
|
||||||
|
extract_line(0, Rest, <<Line/binary, A>>);
|
||||||
|
extract_line(1, <<"\n", Rest/binary>>, Line) ->
|
||||||
|
{Line, Rest};
|
||||||
|
extract_line(1, Data, Line) ->
|
||||||
|
extract_line(0, Data, <<Line/binary, "\r">>).
|
||||||
|
|
||||||
decode_packet(_, <<"\r\n", Rest/binary>>) ->
|
decode_packet(_, <<"\r\n", Rest/binary>>) ->
|
||||||
{ok, http_eoh, Rest};
|
{ok, http_eoh, Rest};
|
||||||
decode_packet(Type, Data) ->
|
decode_packet(Type, Data) ->
|
||||||
case binary:match(Data, <<"\r\n">>) of
|
case extract_line(0, Data, <<>>) of
|
||||||
{Start, _Len} ->
|
{LineB, Rest} ->
|
||||||
<<LineB:Start/binary, _:2/binary, Rest/binary>> = Data,
|
|
||||||
Line = binary_to_list(LineB),
|
Line = binary_to_list(LineB),
|
||||||
Result = case Type of
|
Result = case Type of
|
||||||
http ->
|
http ->
|
||||||
|
Loading…
Reference in New Issue
Block a user