From 46bb2b8ec2cc94c093e2c9cb135b6b45368124bf Mon Sep 17 00:00:00 2001 From: akwizgran Date: Tue, 19 Jul 2022 12:42:25 +0100 Subject: [PATCH] Destroy connectivity checker when client is destroyed. --- .../bramble/mailbox/ContactMailboxClient.java | 4 ++++ .../bramble/mailbox/OwnMailboxClient.java | 4 ++++ .../bramble/mailbox/ContactMailboxClientTest.java | 12 ++++++++++++ .../bramble/mailbox/OwnMailboxClientTest.java | 12 ++++++++++++ 4 files changed, 32 insertions(+) diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/ContactMailboxClient.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/ContactMailboxClient.java index 8b419bdef..ef880bc08 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/ContactMailboxClient.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/ContactMailboxClient.java @@ -55,6 +55,10 @@ class ContactMailboxClient implements MailboxClient { } if (uploadWorker != null) uploadWorker.destroy(); if (downloadWorker != null) downloadWorker.destroy(); + // The connectivity checker belongs to the client, so it should be + // destroyed. The Tor reachability monitor is shared between clients, + // so it should not be destroyed + connectivityChecker.destroy(); } @Override diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/OwnMailboxClient.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/OwnMailboxClient.java index c73d38151..f85adeb1f 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/OwnMailboxClient.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/OwnMailboxClient.java @@ -86,6 +86,10 @@ class OwnMailboxClient implements MailboxClient { for (MailboxWorker worker : uploadWorkers) worker.destroy(); if (downloadWorker != null) downloadWorker.destroy(); contactListWorker.destroy(); + // The connectivity checker belongs to the client, so it should be + // destroyed. The Tor reachability monitor is shared between clients, + // so it should not be destroyed + connectivityChecker.destroy(); } @Override diff --git a/bramble-core/src/test/java/org/briarproject/bramble/mailbox/ContactMailboxClientTest.java b/bramble-core/src/test/java/org/briarproject/bramble/mailbox/ContactMailboxClientTest.java index 2c38b3938..c0c7986f2 100644 --- a/bramble-core/src/test/java/org/briarproject/bramble/mailbox/ContactMailboxClientTest.java +++ b/bramble-core/src/test/java/org/briarproject/bramble/mailbox/ContactMailboxClientTest.java @@ -40,6 +40,8 @@ public class ContactMailboxClientTest extends BrambleMockTestCase { @Test public void testStartAndDestroyWithNoContactsAssigned() { client.start(); + + expectDestroyConnectivityChecker(); client.destroy(); } @@ -54,6 +56,7 @@ public class ContactMailboxClientTest extends BrambleMockTestCase { // When the client is destroyed, the worker should be destroyed expectDestroyWorker(uploadWorker); + expectDestroyConnectivityChecker(); client.destroy(); } @@ -71,6 +74,7 @@ public class ContactMailboxClientTest extends BrambleMockTestCase { client.deassignContactForUpload(contactId); context.assertIsSatisfied(); + expectDestroyConnectivityChecker(); client.destroy(); } @@ -85,6 +89,7 @@ public class ContactMailboxClientTest extends BrambleMockTestCase { // When the client is destroyed, the worker should be destroyed expectDestroyWorker(downloadWorker); + expectDestroyConnectivityChecker(); client.destroy(); } @@ -102,6 +107,7 @@ public class ContactMailboxClientTest extends BrambleMockTestCase { client.deassignContactForDownload(contactId); context.assertIsSatisfied(); + expectDestroyConnectivityChecker(); client.destroy(); } @@ -128,4 +134,10 @@ public class ContactMailboxClientTest extends BrambleMockTestCase { oneOf(worker).destroy(); }}); } + + private void expectDestroyConnectivityChecker() { + context.checking(new Expectations() {{ + oneOf(connectivityChecker).destroy(); + }}); + } } diff --git a/bramble-core/src/test/java/org/briarproject/bramble/mailbox/OwnMailboxClientTest.java b/bramble-core/src/test/java/org/briarproject/bramble/mailbox/OwnMailboxClientTest.java index b3dd9e744..37705c32d 100644 --- a/bramble-core/src/test/java/org/briarproject/bramble/mailbox/OwnMailboxClientTest.java +++ b/bramble-core/src/test/java/org/briarproject/bramble/mailbox/OwnMailboxClientTest.java @@ -50,6 +50,7 @@ public class OwnMailboxClientTest extends BrambleMockTestCase { client.start(); expectDestroyWorker(contactListWorker); + expectDestroyConnectivityChecker(); client.destroy(); } @@ -67,6 +68,7 @@ public class OwnMailboxClientTest extends BrambleMockTestCase { // When the client is destroyed, the worker should be destroyed expectDestroyWorker(uploadWorker1); expectDestroyWorker(contactListWorker); + expectDestroyConnectivityChecker(); client.destroy(); } @@ -87,6 +89,7 @@ public class OwnMailboxClientTest extends BrambleMockTestCase { context.assertIsSatisfied(); expectDestroyWorker(contactListWorker); + expectDestroyConnectivityChecker(); client.destroy(); } @@ -120,6 +123,7 @@ public class OwnMailboxClientTest extends BrambleMockTestCase { context.assertIsSatisfied(); expectDestroyWorker(contactListWorker); + expectDestroyConnectivityChecker(); client.destroy(); } @@ -137,6 +141,7 @@ public class OwnMailboxClientTest extends BrambleMockTestCase { // When the client is destroyed, the worker should be destroyed expectDestroyWorker(downloadWorker); expectDestroyWorker(contactListWorker); + expectDestroyConnectivityChecker(); client.destroy(); } @@ -166,6 +171,7 @@ public class OwnMailboxClientTest extends BrambleMockTestCase { context.assertIsSatisfied(); expectDestroyWorker(contactListWorker); + expectDestroyConnectivityChecker(); client.destroy(); } @@ -205,4 +211,10 @@ public class OwnMailboxClientTest extends BrambleMockTestCase { oneOf(worker).destroy(); }}); } + + private void expectDestroyConnectivityChecker() { + context.checking(new Expectations() {{ + oneOf(connectivityChecker).destroy(); + }}); + } }