diff options
author | Anton Tananaev <anton@traccar.org> | 2024-03-08 21:26:09 -0800 |
---|---|---|
committer | Anton Tananaev <anton@traccar.org> | 2024-03-08 21:26:09 -0800 |
commit | 165a6c76e8127bae7bdf16a9e9a4a24247f1dec4 (patch) | |
tree | d36cb0abc22b83da09e301d6d9b72f98da274e9e /src/main | |
parent | 43508913a7f3356324ec5af447980121d9c64dd0 (diff) | |
download | trackermap-server-165a6c76e8127bae7bdf16a9e9a4a24247f1dec4.tar.gz trackermap-server-165a6c76e8127bae7bdf16a9e9a4a24247f1dec4.tar.bz2 trackermap-server-165a6c76e8127bae7bdf16a9e9a4a24247f1dec4.zip |
Fix Huabao frame encoder
Diffstat (limited to 'src/main')
-rw-r--r-- | src/main/java/org/traccar/protocol/HuabaoFrameEncoder.java | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/src/main/java/org/traccar/protocol/HuabaoFrameEncoder.java b/src/main/java/org/traccar/protocol/HuabaoFrameEncoder.java index 808529a98..5e48a466a 100644 --- a/src/main/java/org/traccar/protocol/HuabaoFrameEncoder.java +++ b/src/main/java/org/traccar/protocol/HuabaoFrameEncoder.java @@ -24,20 +24,18 @@ public class HuabaoFrameEncoder extends MessageToByteEncoder<ByteBuf> { @Override protected void encode(ChannelHandlerContext ctx, ByteBuf msg, ByteBuf out) { + int startIndex = msg.readerIndex(); while (msg.isReadable()) { + int index = msg.readerIndex(); int b = msg.readUnsignedByte(); - switch (b) { - case 0x7d: - out.writeByte(0x7d); - out.writeByte(0x01); - break; - case 0x7e: - out.writeByte(0x7d); - out.writeByte(0x02); - break; - default: - out.writeByte(b); - break; + if (b == 0x7d) { + out.writeByte(0x7d); + out.writeByte(0x01); + } else if (b == 0x7e && index != startIndex && msg.isReadable()) { + out.writeByte(0x7d); + out.writeByte(0x02); + } else { + out.writeByte(b); } } } |