|
|
@@ -140,6 +140,9 @@ g(Key, Opts, Val) ->
|
|
|
-spec parse(binary(), parse_state()) -> parse_result().
|
|
|
parse(<<>>, Parser) ->
|
|
|
{more, Parser};
|
|
|
+%% treat the \n as a heartbeat frame
|
|
|
+parse(<<$\n>>, Parser = #{phase := none}) ->
|
|
|
+ {ok, #stomp_frame{command = ?CMD_HEARTBEAT}, <<>>, Parser};
|
|
|
parse(Bytes, #{phase := body, length := Len, state := State}) ->
|
|
|
parse(body, Bytes, State, Len);
|
|
|
parse(<<?LF, Bytes/binary>>, #{phase := hdname, state := State}) ->
|
|
|
@@ -346,9 +349,7 @@ serialize_pkt(
|
|
|
serialize_pkt(header, {Name, Val}) when is_integer(Val) ->
|
|
|
[escape(Name), ?COLON, integer_to_list(Val), ?LF];
|
|
|
serialize_pkt(header, {Name, Val}) ->
|
|
|
- [escape(Name), ?COLON, escape(Val), ?LF];
|
|
|
-serialize_pkt(<<$\n>>, _SerializeOpts) ->
|
|
|
- <<$\n>>.
|
|
|
+ [escape(Name), ?COLON, escape(Val), ?LF].
|
|
|
|
|
|
escape(Bin) when is_binary(Bin) ->
|
|
|
<<<<(escape(Ch))/binary>> || <<Ch>> <= Bin>>;
|