From b7145ea2e9d7efabb0d9806e76e7ac2995e56b27 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Fri, 20 Oct 2023 17:35:35 -0700 Subject: Fix DSM response handling --- .../java/org/traccar/protocol/DualcamProtocolDecoder.java | 11 +++++++---- .../java/org/traccar/protocol/DualcamProtocolDecoderTest.java | 3 +++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/main/java/org/traccar/protocol/DualcamProtocolDecoder.java b/src/main/java/org/traccar/protocol/DualcamProtocolDecoder.java index 5a6425e7e..f6712d7f2 100644 --- a/src/main/java/org/traccar/protocol/DualcamProtocolDecoder.java +++ b/src/main/java/org/traccar/protocol/DualcamProtocolDecoder.java @@ -138,10 +138,13 @@ public class DualcamProtocolDecoder extends BaseProtocolDecoder { break; case MSG_PATH_RESPONSE: String file = buf.readCharSequence(buf.readUnsignedShort(), StandardCharsets.US_ASCII).toString(); - ByteBuf response = Unpooled.buffer(); - response.writeShort(MSG_FILE_REQUEST); - response.writeShort(file.length()); - response.writeCharSequence(file, StandardCharsets.US_ASCII); + if (channel != null) { + ByteBuf response = Unpooled.buffer(); + response.writeShort(MSG_FILE_REQUEST); + response.writeShort(file.length()); + response.writeCharSequence(file, StandardCharsets.US_ASCII); + channel.writeAndFlush(new NetworkMessage(response, remoteAddress)); + } break; default: break; diff --git a/src/test/java/org/traccar/protocol/DualcamProtocolDecoderTest.java b/src/test/java/org/traccar/protocol/DualcamProtocolDecoderTest.java index de70e2b63..e1c31fc47 100644 --- a/src/test/java/org/traccar/protocol/DualcamProtocolDecoderTest.java +++ b/src/test/java/org/traccar/protocol/DualcamProtocolDecoderTest.java @@ -13,6 +13,9 @@ public class DualcamProtocolDecoderTest extends ProtocolTest { verifyNull(decoder, binary( "000000050001403a4abaa31444000400")); + verifyNull(decoder, binary( + "000d001e64736d2f706963747572652f3233313032302f3233313435322e6a706700")); + verifyNull(decoder, binary( "00010006000000110000")); -- cgit v1.2.3