From 83dc52572d7a620b34660aa2ca4ec3bb589e80e0 Mon Sep 17 00:00:00 2001 From: akwizgran Date: Thu, 30 May 2019 16:20:57 +0100 Subject: [PATCH] Remove keys when pending contacts are removed. --- .../bramble/transport/KeyManagerImpl.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/bramble-core/src/main/java/org/briarproject/bramble/transport/KeyManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/transport/KeyManagerImpl.java index a979e10b5..c3f656768 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/transport/KeyManagerImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/transport/KeyManagerImpl.java @@ -4,6 +4,7 @@ import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.contact.PendingContact; import org.briarproject.bramble.api.contact.PendingContactId; import org.briarproject.bramble.api.contact.event.ContactRemovedEvent; +import org.briarproject.bramble.api.contact.event.PendingContactRemovedEvent; import org.briarproject.bramble.api.crypto.KeyPair; import org.briarproject.bramble.api.crypto.SecretKey; import org.briarproject.bramble.api.crypto.TransportCrypto; @@ -12,6 +13,7 @@ import org.briarproject.bramble.api.db.DatabaseExecutor; import org.briarproject.bramble.api.db.DbException; import org.briarproject.bramble.api.db.Transaction; import org.briarproject.bramble.api.event.Event; +import org.briarproject.bramble.api.event.EventExecutor; import org.briarproject.bramble.api.event.EventListener; import org.briarproject.bramble.api.lifecycle.Service; import org.briarproject.bramble.api.lifecycle.ServiceException; @@ -194,15 +196,27 @@ class KeyManagerImpl implements KeyManager, Service, EventListener { public void eventOccurred(Event e) { if (e instanceof ContactRemovedEvent) { removeContact(((ContactRemovedEvent) e).getContactId()); + } else if (e instanceof PendingContactRemovedEvent) { + PendingContactRemovedEvent p = (PendingContactRemovedEvent) e; + removePendingContact(p.getId()); } } + @EventExecutor private void removeContact(ContactId c) { dbExecutor.execute(() -> { for (TransportKeyManager m : managers.values()) m.removeContact(c); }); } + @EventExecutor + private void removePendingContact(PendingContactId p) { + dbExecutor.execute(() -> { + for (TransportKeyManager m : managers.values()) + m.removePendingContact(p); + }); + } + @Nullable private T withManager(TransportId t, ManagerTask task) throws DbException {