Leave all servers in parallel on shutdown
Some checks are pending
test / test (push) Waiting to run

Quitting tells every server goodbye at once, so leaving takes as long as
the slowest server rather than all of them together. Desktop and Android
both go through ServerSession.shutdownAll.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-02 06:55:15 +00:00
parent 5fd2a612b9
commit 2351b174f8
4 changed files with 28 additions and 5 deletions

View File

@@ -117,11 +117,10 @@ class ServerController internal constructor(
session.disconnect()
}
/** Leaves the server before returning, for when the app goes away with the connection. */
internal fun leave() {
/** Before the app goes away with the connection, which [SessionController.leave] then ends. */
internal fun leaving() {
left = true
network.leaving()
session.shutdown()
}
internal fun dispose() {

View File

@@ -21,6 +21,7 @@ import com.ts3client.myts.MyTeamSpeak
import com.ts3client.net.HostButton
import com.ts3client.myts.MyTeamSpeakLogin
import com.ts3client.session.SelfState
import com.ts3client.session.ServerSession
import com.ts3client.session.Sessions
import com.ts3client.sound.SoundNotifier
import com.ts3client.sound.SoundPack
@@ -199,7 +200,9 @@ class SessionController(private val context: Context) {
/** Leaves every server before returning, for when the app goes away with the connections. */
fun leave() {
_servers.value.forEach(ServerController::leave)
val servers = _servers.value
servers.forEach(ServerController::leaving)
ServerSession.shutdownAll(servers.map { it.session })
contactStore.flush()
}