diff --git a/app/src/main/java/org/briarproject/publicmesh/lan/AbstractLanService.java b/app/src/main/java/org/briarproject/publicmesh/lan/AbstractLanService.java
index d8004f608887425fd0dc2680c6b03319826bb44c..aba5dcf85bf16ac836ec7495bd7e9282aef42e9a 100644
--- a/app/src/main/java/org/briarproject/publicmesh/lan/AbstractLanService.java
+++ b/app/src/main/java/org/briarproject/publicmesh/lan/AbstractLanService.java
@@ -261,7 +261,7 @@ abstract class AbstractLanService implements LanService {
 				LOG.info("Failed to accept connection: " + e);
 			}
 		});
-		localAddress.setValue(ipString(serverSocket.getInetAddress()));
+		localAddress.postValue(ipString(serverSocket.getInetAddress()));
 		return getLocalSocketAddress();
 	}
 
diff --git a/app/src/main/java/org/briarproject/publicmesh/lan/LsdServiceImpl.java b/app/src/main/java/org/briarproject/publicmesh/lan/LsdServiceImpl.java
index 21e12498304bb34544e2ede175e48b611ad2552d..708537be131dfa72a456f12559df0e87d0f69b8e 100644
--- a/app/src/main/java/org/briarproject/publicmesh/lan/LsdServiceImpl.java
+++ b/app/src/main/java/org/briarproject/publicmesh/lan/LsdServiceImpl.java
@@ -106,11 +106,11 @@ class LsdServiceImpl extends AbstractLanService implements LsdService {
 			return;
 		}
 		LOG.info("Starting advertising");
-		advertisingStatus.setValue(STARTING);
+		advertisingStatus.postValue(STARTING);
 		InetSocketAddress socketAddress = acquireResources();
 		if (socketAddress == null) {
 			LOG.info("Failed to start advertising");
-			advertisingStatus.setValue(STOPPED);
+			advertisingStatus.postValue(STOPPED);
 			return;
 		}
 		if (executor == null || multicastSocket == null) throw new AssertionError();
@@ -118,7 +118,7 @@ class LsdServiceImpl extends AbstractLanService implements LsdService {
 		advertisingTask = executor.scheduleAtFixedRate(
 				() -> sendAdvertisingPacket(multicastSocket, socketAddress), 0,
 				ADVERTISING_INTERVAL_MS, MILLISECONDS);
-		advertisingStatus.setValue(STARTED);
+		advertisingStatus.postValue(STARTED);
 	}
 
 	@Override
@@ -129,11 +129,11 @@ class LsdServiceImpl extends AbstractLanService implements LsdService {
 			return;
 		}
 		LOG.info("Stopping advertising");
-		advertisingStatus.setValue(STOPPING);
+		advertisingStatus.postValue(STOPPING);
 		requireNonNull(advertisingTask).cancel(false);
 		advertisingTask = null;
 		releaseResources();
-		advertisingStatus.setValue(STOPPED);
+		advertisingStatus.postValue(STOPPED);
 	}
 
 	@Override
@@ -144,14 +144,14 @@ class LsdServiceImpl extends AbstractLanService implements LsdService {
 			return;
 		}
 		LOG.info("Starting discovery");
-		discoveryStatus.setValue(STARTING);
+		discoveryStatus.postValue(STARTING);
 		InetSocketAddress socketAddress = acquireResources();
 		if (socketAddress == null) {
 			LOG.info("Failed to start discovery");
-			discoveryStatus.setValue(STOPPED);
+			discoveryStatus.postValue(STOPPED);
 			return;
 		}
-		discoveryStatus.setValue(STARTED);
+		discoveryStatus.postValue(STARTED);
 	}
 
 	@Override
@@ -162,9 +162,9 @@ class LsdServiceImpl extends AbstractLanService implements LsdService {
 			return;
 		}
 		LOG.info("Stopping discovery");
-		discoveryStatus.setValue(STOPPING);
+		discoveryStatus.postValue(STOPPING);
 		releaseResources();
-		discoveryStatus.setValue(STOPPED);
+		discoveryStatus.postValue(STOPPED);
 	}
 
 	@Nullable
@@ -275,7 +275,7 @@ class LsdServiceImpl extends AbstractLanService implements LsdService {
 					.build();
 		}
 		peersByAddress.put(address, updated);
-		peers.setValue(new ArrayList<>(peersByAddress.values()));
+		peers.postValue(new ArrayList<>(peersByAddress.values()));
 	}
 
 	@WorkerThread