From 9f78e9b7dd0dc77c4b08e8042ffd9f69520ad6c1 Mon Sep 17 00:00:00 2001 From: Koen J Date: Thu, 1 May 2025 21:53:48 +0200 Subject: [PATCH] Crashfix in nsdmanager. StateSync reconnects less often. Channels are closed when sending fails in sync. --- .../java/com/futo/platformplayer/casting/StateCasting.kt | 6 +++++- .../main/java/com/futo/platformplayer/states/StateSync.kt | 5 ++++- .../com/futo/platformplayer/sync/internal/SyncSession.kt | 4 +++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/com/futo/platformplayer/casting/StateCasting.kt b/app/src/main/java/com/futo/platformplayer/casting/StateCasting.kt index f25cd410..03145a78 100644 --- a/app/src/main/java/com/futo/platformplayer/casting/StateCasting.kt +++ b/app/src/main/java/com/futo/platformplayer/casting/StateCasting.kt @@ -176,7 +176,11 @@ class StateCasting { fun stopDiscovering() { _nsdManager?.apply { _discoveryListeners.forEach { - stopServiceDiscovery(it.value) + try { + stopServiceDiscovery(it.value) + } catch (e: Throwable) { + //Ignored + } } } } diff --git a/app/src/main/java/com/futo/platformplayer/states/StateSync.kt b/app/src/main/java/com/futo/platformplayer/states/StateSync.kt index 75182f82..6ab62f11 100644 --- a/app/src/main/java/com/futo/platformplayer/states/StateSync.kt +++ b/app/src/main/java/com/futo/platformplayer/states/StateSync.kt @@ -460,10 +460,10 @@ class StateSync { Log.i(TAG, "Started relay session.") } catch (e: Throwable) { Log.e(TAG, "Relay session failed.", e) - Thread.sleep(5000) } finally { _relaySession?.stop() _relaySession = null + Thread.sleep(5000) } } }.apply { start() } @@ -737,6 +737,9 @@ class StateSync { val json = String(dataBody, Charsets.UTF_8); val history = Serializer.json.decodeFromString>(json); Logger.i(TAG, "SyncHistory received ${history.size} videos from ${remotePublicKey}"); + if (history.size == 1) { + Logger.i(TAG, "SyncHistory received update video '${history[0].video.name}' (url: ${history[0].video.url}) at timestamp ${history[0].position}"); + } var lastHistory = OffsetDateTime.MIN; for(video in history){ diff --git a/app/src/main/java/com/futo/platformplayer/sync/internal/SyncSession.kt b/app/src/main/java/com/futo/platformplayer/sync/internal/SyncSession.kt index 51a40902..10b24d89 100644 --- a/app/src/main/java/com/futo/platformplayer/sync/internal/SyncSession.kt +++ b/app/src/main/java/com/futo/platformplayer/sync/internal/SyncSession.kt @@ -218,7 +218,9 @@ class SyncSession : IAuthorizable { sent = true break } catch (e: Throwable) { - Logger.w(TAG, "Packet failed to send (opcode = $opcode, subOpcode = $subOpcode)", e) + Logger.w(TAG, "Packet failed to send (opcode = $opcode, subOpcode = $subOpcode), closing channel", e) + channel.close() + removeChannel(channel) } }