You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by cd...@apache.org on 2020/03/10 20:31:47 UTC
[plc4x] 01/03: - Changed the GeneratedDriverByteToMessageCodec to
also call the corrupt package consumer if something goes wrong in the
packet size estimation.
This is an automated email from the ASF dual-hosted git repository.
cdutz pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/plc4x.git
commit 0d9eb89d47cb6b11828fdc73c34591f5905c9daa
Author: Christofer Dutz <ch...@c-ware.de>
AuthorDate: Tue Mar 10 16:37:20 2020 +0100
- Changed the GeneratedDriverByteToMessageCodec to also call the corrupt package consumer if something goes wrong in the packet size estimation.
---
.../spi/GeneratedDriverByteToMessageCodec.java | 27 ++++++++++++----------
1 file changed, 15 insertions(+), 12 deletions(-)
diff --git a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/GeneratedDriverByteToMessageCodec.java b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/GeneratedDriverByteToMessageCodec.java
index 3f9cc10..b326b77 100644
--- a/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/GeneratedDriverByteToMessageCodec.java
+++ b/plc4j/spi/src/main/java/org/apache/plc4x/java/spi/GeneratedDriverByteToMessageCodec.java
@@ -59,18 +59,19 @@ public abstract class GeneratedDriverByteToMessageCodec<T extends Message> exten
logger.trace("Receiving bytes, trying to decode Message...");
// As long as there is data available, continue checking the content.
while(byteBuf.readableBytes() > 0) {
- // Check if enough data is present to process the entire package.
- int packetSize = getPacketSize(byteBuf);
- if(packetSize == -1 || packetSize > byteBuf.readableBytes()) {
- return;
- }
+ byte[] bytes = null;
+ try {
+ // Check if enough data is present to process the entire package.
+ int packetSize = getPacketSize(byteBuf);
+ if(packetSize == -1 || packetSize > byteBuf.readableBytes()) {
+ return;
+ }
- // Read the packet data into a new ReadBuffer
- byte[] bytes = new byte[packetSize];
- byteBuf.readBytes(bytes);
- ReadBuffer readBuffer = new ReadBuffer(bytes, !bigEndian);
+ // Read the packet data into a new ReadBuffer
+ bytes = new byte[packetSize];
+ byteBuf.readBytes(bytes);
+ ReadBuffer readBuffer = new ReadBuffer(bytes, !bigEndian);
- try {
// Parse the packet.
T packet = io.parse(readBuffer, parserArgs);
@@ -83,8 +84,10 @@ public abstract class GeneratedDriverByteToMessageCodec<T extends Message> exten
return;
}
} catch (Exception e) {
- logger.warn("Error decoding package with content [" + Hex.encodeHexString(bytes) + "]: "
- + e.getMessage(), e);
+ if(bytes != null) {
+ logger.warn("Error decoding package with content [" + Hex.encodeHexString(bytes) + "]: "
+ + e.getMessage(), e);
+ }
// Just remove any trailing junk ... if there is any.
removeRestOfCorruptPackage(byteBuf);
}