diff --git a/broker/src/main/java/io/moquette/persistence/DatabaseStore.java b/broker/src/main/java/io/moquette/persistence/DatabaseStore.java index 614794dc..d8d25825 100644 --- a/broker/src/main/java/io/moquette/persistence/DatabaseStore.java +++ b/broker/src/main/java/io/moquette/persistence/DatabaseStore.java @@ -873,7 +873,17 @@ public class DatabaseStore { builder.setConversation(cb.build()); Blob blob = resultSet.getBlob(index++); - WFCMessage.MessageContent messageContent = WFCMessage.MessageContent.parseFrom(encryptMessageContent(toByteArray(blob.getBinaryStream()), false)); + WFCMessage.MessageContent messageContent; + try { + messageContent = WFCMessage.MessageContent.parseFrom(encryptMessageContent(toByteArray(blob.getBinaryStream()), false)); + } catch (InvalidProtocolBufferException e) { + if(encryptMessage) { + messageContent = WFCMessage.MessageContent.parseFrom(blob.getBinaryStream()); + } else { + messageContent = WFCMessage.MessageContent.parseFrom(encryptMessageContent(toByteArray(blob.getBinaryStream()), true)); + } + } + builder.setContent(messageContent); builder.setServerTimestamp(resultSet.getTimestamp(index++).getTime());