diff options
author | Serge Aleynikov <[email protected]> | 2015-06-02 08:44:23 -0400 |
---|---|---|
committer | Ingela Anderton Andin <[email protected]> | 2015-10-26 09:05:30 +0100 |
commit | 285b4fa13914dc4748c1020213a9c65cad3d2738 (patch) | |
tree | 35e3c451519fe0f1d5d0c6be53d6aa58ffca1d7a /erts/emulator/beam/packet_parser.c | |
parent | a76cc1d337c0bf44ecefebeccac2d08e496ba7e8 (diff) | |
download | otp-285b4fa13914dc4748c1020213a9c65cad3d2738.tar.gz otp-285b4fa13914dc4748c1020213a9c65cad3d2738.tar.bz2 otp-285b4fa13914dc4748c1020213a9c65cad3d2738.zip |
erts: Add {line_delimiter, byte()} option to inet:setopts/2
A new {line_delimiter, byte()} option allows line-oriented TCP-based protocols
to use a custom line delimiting character. It is to be used in conjunction
with {packet, line}.
This option also works with erlang:decode_packet/3 when its first argument
is 'line'.
Diffstat (limited to 'erts/emulator/beam/packet_parser.c')
-rw-r--r-- | erts/emulator/beam/packet_parser.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/erts/emulator/beam/packet_parser.c b/erts/emulator/beam/packet_parser.c index 2dd421a9e9..a737a86f14 100644 --- a/erts/emulator/beam/packet_parser.c +++ b/erts/emulator/beam/packet_parser.c @@ -256,6 +256,7 @@ int packet_get_length(enum PacketParseType htype, const char* ptr, unsigned n, /* Bytes read so far */ unsigned max_plen, /* Max packet length, 0=no limit */ unsigned trunc_len, /* Truncate (lines) if longer, 0=no limit */ + char delimiter, /* Line delimiting character */ int* statep) /* Protocol specific state */ { unsigned hlen, plen; @@ -299,9 +300,9 @@ int packet_get_length(enum PacketParseType htype, goto remain; case TCP_PB_LINE_LF: { - /* TCP_PB_LINE_LF: [Data ... \n] */ + /* TCP_PB_LINE_LF: [Data ... Delimiter] */ const char* ptr2; - if ((ptr2 = memchr(ptr, '\n', n)) == NULL) { + if ((ptr2 = memchr(ptr, delimiter, n)) == NULL) { if (n > max_plen && max_plen != 0) { /* packet full */ DEBUGF((" => packet full (no NL)=%d\r\n", n)); goto error; |