aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorAnton Tananaev <anton@traccar.org>2024-03-08 21:26:09 -0800
committerAnton Tananaev <anton@traccar.org>2024-03-08 21:26:09 -0800
commit165a6c76e8127bae7bdf16a9e9a4a24247f1dec4 (patch)
treed36cb0abc22b83da09e301d6d9b72f98da274e9e /src/main/java
parent43508913a7f3356324ec5af447980121d9c64dd0 (diff)
downloadtrackermap-server-165a6c76e8127bae7bdf16a9e9a4a24247f1dec4.tar.gz
trackermap-server-165a6c76e8127bae7bdf16a9e9a4a24247f1dec4.tar.bz2
trackermap-server-165a6c76e8127bae7bdf16a9e9a4a24247f1dec4.zip
Fix Huabao frame encoder
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/org/traccar/protocol/HuabaoFrameEncoder.java22
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);
}
}
}