aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAnton Tananaev <anton.tananaev@gmail.com>2017-02-17 06:40:17 +1300
committerAnton Tananaev <anton.tananaev@gmail.com>2017-02-17 06:40:17 +1300
commit5b75e0a58fbcc11a1c66448bfbd9d3466b015668 (patch)
treebcb8acbbadce52f818d3b8191aa1b7ff5a15057f
parent25ecf5c05872b374d7b2065b07a35e6973baf914 (diff)
downloadtrackermap-server-5b75e0a58fbcc11a1c66448bfbd9d3466b015668.tar.gz
trackermap-server-5b75e0a58fbcc11a1c66448bfbd9d3466b015668.tar.bz2
trackermap-server-5b75e0a58fbcc11a1c66448bfbd9d3466b015668.zip
Fix H02 frame decoder (fix #2926)
-rw-r--r--src/org/traccar/protocol/H02FrameDecoder.java7
-rw-r--r--test/org/traccar/protocol/H02FrameDecoderTest.java4
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")));