1.1 --- a/src/rabbit_stomp_frame.erl Fri Apr 01 16:05:02 2011 +0100
1.2 +++ b/src/rabbit_stomp_frame.erl Tue Apr 05 11:13:04 2011 +0100
1.3 @@ -118,18 +118,17 @@
1.4 end.
1.5
1.6 parse_body(Content, Frame, Chunks, unknown) ->
1.7 - case binary:split(Content, <<0>>) of
1.8 - [Content] ->
1.9 - more(fun(Rest) ->
1.10 - parse_body(Rest,
1.11 - Frame,
1.12 - finalize_chunk(Content, Chunks),
1.13 - unknown)
1.14 - end);
1.15 - [Chunk, Rest] ->
1.16 - {ok, Frame#stomp_frame{
1.17 - body_iolist = lists:reverse(
1.18 - finalize_chunk(Chunk, Chunks))}, Rest}
1.19 + case firstnull(Content) of
1.20 + -1 -> more(fun(Rest) ->
1.21 + parse_body(Rest,
1.22 + Frame,
1.23 + finalize_chunk(Content, Chunks),
1.24 + unknown)
1.25 + end);
1.26 + Pos -> <<Chunk:Pos/binary, 0, Rest/binary>> = Content,
1.27 + {ok, Frame#stomp_frame{
1.28 + body_iolist = lists:reverse(
1.29 + finalize_chunk(Chunk, Chunks))}, Rest}
1.30 end;
1.31 parse_body(Content, Frame, Chunks, Remaining) ->
1.32 Size = byte_size(Content),
1.33 @@ -235,3 +234,9 @@
1.34 escape($\\) -> "\\\\";
1.35 escape($\n) -> "\\n";
1.36 escape(C) -> C.
1.37 +
1.38 +firstnull(Content) -> firstnull(Content, 0).
1.39 +
1.40 +firstnull(<<>>, _N) -> -1;
1.41 +firstnull(<<0, _Rest/binary>>, N) -> N;
1.42 +firstnull(<<_Ch, Rest/binary>>, N) -> firstnull(Rest, N+1).