From e65a992b2681906b7c134057206332afcfa6164c Mon Sep 17 00:00:00 2001 From: jmacxx <47253594+jmacxx@users.noreply.github.com> Date: Fri, 29 Oct 2021 12:11:51 -0500 Subject: [PATCH 1/2] Gracefully handle null data in refresh offer message and log error --- .../network/p2p/storage/P2PDataStorage.java | 57 ++++++++++--------- 1 file changed, 31 insertions(+), 26 deletions(-) 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 ada7d8eddc0..086e0e3c01e 100644 --- a/p2p/src/main/java/bisq/network/p2p/storage/P2PDataStorage.java +++ b/p2p/src/main/java/bisq/network/p2p/storage/P2PDataStorage.java @@ -847,42 +847,47 @@ public boolean hasAlreadyRemovedAddOncePayload(ProtectedStoragePayload protected public boolean refreshTTL(RefreshOfferMessage refreshTTLMessage, @Nullable NodeAddress sender) { - ByteArray hashOfPayload = new ByteArray(refreshTTLMessage.getHashOfPayload()); - ProtectedStorageEntry storedData = map.get(hashOfPayload); + try { + ByteArray hashOfPayload = new ByteArray(refreshTTLMessage.getHashOfPayload()); + ProtectedStorageEntry storedData = map.get(hashOfPayload); - if (storedData == null) { - log.debug("We don't have data for that refresh message in our map. That is expected if we missed the data publishing."); + if (storedData == null) { + log.debug("We don't have data for that refresh message in our map. That is expected if we missed the data publishing."); - return false; - } + return false; + } - ProtectedStorageEntry storedEntry = map.get(hashOfPayload); - ProtectedStorageEntry updatedEntry = new ProtectedStorageEntry( - storedEntry.getProtectedStoragePayload(), - storedEntry.getOwnerPubKey(), - refreshTTLMessage.getSequenceNumber(), - refreshTTLMessage.getSignature(), - this.clock); + ProtectedStorageEntry storedEntry = map.get(hashOfPayload); + ProtectedStorageEntry updatedEntry = new ProtectedStorageEntry( + storedEntry.getProtectedStoragePayload(), + storedEntry.getOwnerPubKey(), + refreshTTLMessage.getSequenceNumber(), + refreshTTLMessage.getSignature(), + this.clock); - // If we have seen a more recent operation for this payload, we ignore the current one - if (!hasSequenceNrIncreased(updatedEntry.getSequenceNumber(), hashOfPayload)) - return false; + // If we have seen a more recent operation for this payload, we ignore the current one + if (!hasSequenceNrIncreased(updatedEntry.getSequenceNumber(), hashOfPayload)) + return false; - // Verify the updated ProtectedStorageEntry is well formed and valid for update - if (!updatedEntry.isValidForAddOperation()) - return false; + // Verify the updated ProtectedStorageEntry is well formed and valid for update + if (!updatedEntry.isValidForAddOperation()) + return false; - // Update the hash map with the updated entry - map.put(hashOfPayload, updatedEntry); + // Update the hash map with the updated entry + map.put(hashOfPayload, updatedEntry); - // Record the latest sequence number and persist it - sequenceNumberMap.put(hashOfPayload, new MapValue(updatedEntry.getSequenceNumber(), this.clock.millis())); - requestPersistence(); + // Record the latest sequence number and persist it + sequenceNumberMap.put(hashOfPayload, new MapValue(updatedEntry.getSequenceNumber(), this.clock.millis())); + requestPersistence(); - // Always broadcast refreshes - broadcaster.broadcast(refreshTTLMessage, sender); + // Always broadcast refreshes + broadcaster.broadcast(refreshTTLMessage, sender); + } catch (IllegalArgumentException e) { + e.printStackTrace(); + return false; + } return true; } From 28eb3f04cacf91a33a21c98a05e1f0870c5e8137 Mon Sep 17 00:00:00 2001 From: jmacxx <47253594+jmacxx@users.noreply.github.com> Date: Tue, 2 Nov 2021 09:56:24 -0500 Subject: [PATCH 2/2] Add error log message for context --- p2p/src/main/java/bisq/network/p2p/storage/P2PDataStorage.java | 1 + 1 file changed, 1 insertion(+) 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 086e0e3c01e..82c5b5c75f5 100644 --- a/p2p/src/main/java/bisq/network/p2p/storage/P2PDataStorage.java +++ b/p2p/src/main/java/bisq/network/p2p/storage/P2PDataStorage.java @@ -885,6 +885,7 @@ public boolean refreshTTL(RefreshOfferMessage refreshTTLMessage, broadcaster.broadcast(refreshTTLMessage, sender); } catch (IllegalArgumentException e) { + log.error("refreshTTL failed, missing data: {}", e.toString()); e.printStackTrace(); return false; }