anchor.diff:                                    Bin/binary, ?CRLF/binary >>
                          end, <<>>, Args),
       BodyLen = byte_size(Body),
  -
       << "*", ModMethodLen:?BLEN_MOD_METHOD_LEN/integer, ?CRLF/binary,
          ModMethodBin/binary, ?CRLF/binary,
          ParamLen:?BLEN_PARAM_LEN/integer, BodyLen:?BLEN_BODY_LEN/integer, ?CRLF/binary,
  
positive.code: 
  binary_to_result(<< "*", Type:?BLEN_TYPE_LEN/binary, "\r\n", Rest/binary >>) ->
      << Len:?BLEN_PARAM_TERM/integer, "\r\n", Rest1/binary >> = Rest,
  
      case Type of
          ?BIN_ORG_TYPE_BIN ->
              << Bin:Len/binary, "\r\n\r\n" >> = Rest1,
  
negative.code:                     Transport:send(Socket, <<"+ERROR\r\n">>)
              end,
              loop(Socket, Transport);
  
          %% Invalid format
          {ok, _Data} ->
              Transport:send(Socket, <<"+ERROR\r\n">>),
              loop(Socket, Transport);
          %% Error
          _ ->
              ok = Transport:close(Socket)
      end.
  
  
  %% @doc Retrieve the 2nd line
  %% @private
  loop_1(Socket, Transport, ModMethodLen, Acc) ->
      ok = ranch_tcp:setopts(Socket, [{packet, raw}]),
      case Transport:recv(Socket, (ModMethodLen + 2), ?TIMEOUT) of
          {ok, Bin1} ->
              loop_2(Socket, Transport, << Acc/binary, Bin1/binary>>);
          _ ->
              Acc
      end.
  
  loop_2(Socket, Transport, Acc) ->
      ok = ranch_tcp:setopts(Socket, [{packet, line}]),
      case Transport:recv(Socket, 0, ?TIMEOUT) of
          %% Retrieve the 3nd line
          {ok, << _ParamsLen:?BLEN_PARAM_LEN,
                  BodyLen:?BLEN_BODY_LEN, "\r\n" >> = Bin1} ->
  