From 75ce0f056cb3c87fbd285c730e4b9f6e5f2df286 Mon Sep 17 00:00:00 2001 From: Niels Andriesse Date: Thu, 13 May 2021 10:42:53 +1000 Subject: [PATCH] Use snodes returned in 421 response --- .../org/session/libsession/snode/SnodeAPI.kt | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) 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.") }