diff --git a/libsession/src/main/java/org/session/libsession/snode/SnodeAPI.kt b/libsession/src/main/java/org/session/libsession/snode/SnodeAPI.kt index 586193b7c..ab7360438 100644 --- a/libsession/src/main/java/org/session/libsession/snode/SnodeAPI.kt +++ b/libsession/src/main/java/org/session/libsession/snode/SnodeAPI.kt @@ -317,8 +317,20 @@ object SnodeAPI { 421 -> { // The snode isn't associated with the given public key anymore if (publicKey != null) { - Log.d("Loki", "Invalidating swarm for: $publicKey.") - dropSnodeFromSwarmIfNeeded(snode, publicKey) + fun invalidateSwarm() { + Log.d("Loki", "Invalidating swarm for: $publicKey.") + dropSnodeFromSwarmIfNeeded(snode, publicKey) + } + if (json != null) { + val snodes = parseSnodes(json) + if (snodes.isNotEmpty()) { + database.setSwarm(publicKey, snodes.toSet()) + } else { + invalidateSwarm() + } + } else { + invalidateSwarm() + } } else { Log.d("Loki", "Got a 421 without an associated public key.") }