diff --git a/p2p/src/main/java/bisq/network/p2p/storage/P2PDataStorage.java b/p2p/src/main/java/bisq/network/p2p/storage/P2PDataStorage.java index a642111ba9..38fe02754b 100644 --- a/p2p/src/main/java/bisq/network/p2p/storage/P2PDataStorage.java +++ b/p2p/src/main/java/bisq/network/p2p/storage/P2PDataStorage.java @@ -71,6 +71,7 @@ import bisq.common.util.Tuple2; import bisq.common.util.Utilities; import com.google.protobuf.ByteString; +import com.google.protobuf.Message; import com.google.inject.name.Named; @@ -430,7 +431,11 @@ public class P2PDataStorage implements MessageListener, ConnectionListener, Pers .map(Map.Entry::getValue) .filter(payload -> shouldTransmitPayloadToPeer(peerCapabilities, objToPayload.apply(payload))) .filter(payload -> { - if (exceededSizeLimit.get() || totalSize.addAndGet(payload.toProtoMessage().getSerializedSize()) > limit) { + Message message = payload.toProtoMessage(); + if (message == null) { + return true; + } + if (exceededSizeLimit.get() || totalSize.addAndGet(message.getSerializedSize()) > limit) { exceededSizeLimit.set(true); } return !exceededSizeLimit.get(); @@ -444,7 +449,11 @@ public class P2PDataStorage implements MessageListener, ConnectionListener, Pers .map(Map.Entry::getValue) .filter(payload -> shouldTransmitPayloadToPeer(peerCapabilities, objToPayload.apply(payload))) .filter(payload -> { - if (exceededSizeLimit.get() || totalSize.addAndGet(payload.toProtoMessage().getSerializedSize()) > limit) { + Message message = payload.toProtoMessage(); + if (message == null) { + return true; + } + if (exceededSizeLimit.get() || totalSize.addAndGet(message.getSerializedSize()) > limit) { exceededSizeLimit.set(true); } return !exceededSizeLimit.get(); diff --git a/p2p/src/test/java/bisq/network/p2p/storage/mocks/PersistableNetworkPayloadStub.java b/p2p/src/test/java/bisq/network/p2p/storage/mocks/PersistableNetworkPayloadStub.java index 057cb2c42b..1d453647bb 100644 --- a/p2p/src/test/java/bisq/network/p2p/storage/mocks/PersistableNetworkPayloadStub.java +++ b/p2p/src/test/java/bisq/network/p2p/storage/mocks/PersistableNetworkPayloadStub.java @@ -19,6 +19,8 @@ package bisq.network.p2p.storage.mocks; import bisq.network.p2p.storage.payload.PersistableNetworkPayload; +import static org.mockito.Mockito.mock; + /** * Stub implementation of a PersistableNetworkPayload that can be used in tests * to provide canned answers to calls. Useful if the tests don't care about the implementation @@ -29,9 +31,10 @@ import bisq.network.p2p.storage.payload.PersistableNetworkPayload; public class PersistableNetworkPayloadStub implements PersistableNetworkPayload { private final boolean hashSizeValid; private final byte[] hash; + private final protobuf.PersistableNetworkPayload mockPayload; public PersistableNetworkPayloadStub(boolean hashSizeValid) { - this(hashSizeValid, new byte[] { 1 }); + this(hashSizeValid, new byte[]{1}); } public PersistableNetworkPayloadStub(byte[] hash) { @@ -41,11 +44,12 @@ public class PersistableNetworkPayloadStub implements PersistableNetworkPayload private PersistableNetworkPayloadStub(boolean hashSizeValid, byte[] hash) { this.hashSizeValid = hashSizeValid; this.hash = hash; + mockPayload = mock(protobuf.PersistableNetworkPayload.class); } @Override public protobuf.PersistableNetworkPayload toProtoMessage() { - throw new UnsupportedOperationException("Stub does not support protobuf"); + return mockPayload; } @Override