aboutsummaryrefslogtreecommitdiff
path: root/src/org/traccar/protocol/H02ProtocolDecoder.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/org/traccar/protocol/H02ProtocolDecoder.java')
-rw-r--r--src/org/traccar/protocol/H02ProtocolDecoder.java21
1 files changed, 13 insertions, 8 deletions
diff --git a/src/org/traccar/protocol/H02ProtocolDecoder.java b/src/org/traccar/protocol/H02ProtocolDecoder.java
index b9b979c7d..aa3d47650 100644
--- a/src/org/traccar/protocol/H02ProtocolDecoder.java
+++ b/src/org/traccar/protocol/H02ProtocolDecoder.java
@@ -377,14 +377,19 @@ public class H02ProtocolDecoder extends BaseProtocolDecoder {
case "*":
String sentence = buf.toString(StandardCharsets.US_ASCII);
int typeStart = sentence.indexOf(',', sentence.indexOf(',') + 1) + 1;
- String type = sentence.substring(typeStart, sentence.indexOf(',', typeStart));
- switch (type) {
- case "NBR":
- return decodeLbs(sentence, channel, remoteAddress);
- case "LINK":
- return decodeLink(sentence, channel, remoteAddress);
- default:
- return decodeText(sentence, channel, remoteAddress);
+ int typeEnd = sentence.indexOf(',', typeStart);
+ if (typeEnd > 0) {
+ String type = sentence.substring(typeStart, typeEnd);
+ switch (type) {
+ case "NBR":
+ return decodeLbs(sentence, channel, remoteAddress);
+ case "LINK":
+ return decodeLink(sentence, channel, remoteAddress);
+ default:
+ return decodeText(sentence, channel, remoteAddress);
+ }
+ } else {
+ return null;
}
case "$":
return decodeBinary(buf, channel, remoteAddress);