diff options
author | Anton Tananaev <anton.tananaev@gmail.com> | 2017-02-17 06:40:17 +1300 |
---|---|---|
committer | Anton Tananaev <anton.tananaev@gmail.com> | 2017-02-17 06:40:17 +1300 |
commit | 5b75e0a58fbcc11a1c66448bfbd9d3466b015668 (patch) | |
tree | bcb8acbbadce52f818d3b8191aa1b7ff5a15057f | |
parent | 25ecf5c05872b374d7b2065b07a35e6973baf914 (diff) | |
download | traccar-server-5b75e0a58fbcc11a1c66448bfbd9d3466b015668.tar.gz traccar-server-5b75e0a58fbcc11a1c66448bfbd9d3466b015668.tar.bz2 traccar-server-5b75e0a58fbcc11a1c66448bfbd9d3466b015668.zip |
Fix H02 frame decoder (fix #2926)
-rw-r--r-- | src/org/traccar/protocol/H02FrameDecoder.java | 7 | ||||
-rw-r--r-- | test/org/traccar/protocol/H02FrameDecoderTest.java | 4 |
2 files changed, 10 insertions, 1 deletions
diff --git a/src/org/traccar/protocol/H02FrameDecoder.java b/src/org/traccar/protocol/H02FrameDecoder.java index ac3dbcc2e..391fccc87 100644 --- a/src/org/traccar/protocol/H02FrameDecoder.java +++ b/src/org/traccar/protocol/H02FrameDecoder.java @@ -50,7 +50,12 @@ public class H02FrameDecoder extends FrameDecoder { // Return text message int index = buf.indexOf(buf.readerIndex(), buf.writerIndex(), (byte) '#'); if (index != -1) { - return buf.readBytes(index + 1 - buf.readerIndex()); + ChannelBuffer result = buf.readBytes(index + 1 - buf.readerIndex()); + while (buf.readable() + && (buf.getByte(buf.readerIndex()) == '\r' || buf.getByte(buf.readerIndex()) == '\n')) { + buf.readByte(); // skip new line + } + return result; } break; diff --git a/test/org/traccar/protocol/H02FrameDecoderTest.java b/test/org/traccar/protocol/H02FrameDecoderTest.java index 1505e25ac..3ced35d53 100644 --- a/test/org/traccar/protocol/H02FrameDecoderTest.java +++ b/test/org/traccar/protocol/H02FrameDecoderTest.java @@ -12,6 +12,10 @@ public class H02FrameDecoderTest extends ProtocolTest { H02FrameDecoder decoder = new H02FrameDecoder(0); Assert.assertEquals( + binary("2a48512c3335353438383032303131333931312c56312c3031323934352c412c353233312e37393238332c4e2c30313332342e31303731382c452c302e30352c302c3137303231372c464646464646464623"), + decoder.decode(null, null, binary("2a48512c3335353438383032303131333931312c56312c3031323934352c412c353233312e37393238332c4e2c30313332342e31303731382c452c302e30352c302c3137303231372c4646464646464646230d0a"))); + + Assert.assertEquals( binary("2441060116601245431311165035313006004318210e000000fffffbffff0024"), decoder.decode(null, null, binary("2441060116601245431311165035313006004318210e000000fffffbffff0024"))); |