f350b19d31ad5b13a50f87ac7799d98d245bc6b7
Each action started a thread that read the socket field once it ran; a disconnect in between cleared it, and the user saw "Could not join channel: NullPointerException". Actions now capture the socket when they are issued and run on a pool that lives as long as the connection. What fails because the connection went away is no longer reported as an error. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Description
A reimplementation of TeamSpeak 3 in Java
TS3
Latest
Languages
Java
85.5%
Kotlin
13.3%
C++
0.6%
Python
0.5%