ILadis / ts3-qs4sd

TeamSpeak 3 quick access for Steam Deck.
GNU General Public License v2.0
40 stars 3 forks source link

Seeing myself twice on TS #8

Open rlex opened 8 months ago

rlex commented 8 months ago

Hello, installed plugin and seems it works well.

One major issue i saw is that i see myself twice in user list.

So if i join server as "lex", i see "lex" and "lex1". However, lex1 isn't present on server, so it looks like purely visual bug rather than double-connection.

ILadis commented 8 months ago

I've seen this happening when the connection to the server is interrupted shorty. The TeamSpeak client then reconnects to the server, but the server hasn't "noticed" yet, that the previous connection was interrupted. Therefore the old nickname is still occupied and on the new connection attempt your nickname gets the "1" suffix. After some time the user without the suffix gets disconnected because the server notices the lost connection.

But I'm not entirely sure if this is your case. To get some more insight could you please answer the following questions:

  1. Does this happen every time you connect to your TeamSpeak server throught the plugin?
  2. If this happens and you also connect from another machine (for example your desktop pc) which clients are shown there?
  3. Are you really connected as "lex" or actually the "lex1" user? Does one of the two clients disconnect after some time?
  4. Which version of the plugin are you currently using? Should be either 1.1.2 or 1.1.3.
rlex commented 8 months ago
  • Does this happen every time you connect to your TeamSpeak server throught the plugin?

Yep, every time

  • If this happens and you also connect from another machine (for example your desktop pc) which clients are shown there?

Yes, as i mentioned, phantom user isn't present on server, so it's definitely not timeout issue

  • Are you really connected as "lex" or actually the "lex1" user? Does one of the two clients disconnect after some time?

I'm connected as lex, "phantom" user is connected as lex1.

  • Which version of the plugin are you currently using? Should be either 1.1.2 or 1.1.3.

1.1.2, from decky store stable channel.

ILadis commented 8 months ago

What happens when you switch to desktop mode on your Steam Deck and connect to your server from there? Which users do you see in the TeamSpeak client application?

While you are in desktop mode can you please also post the output of this command (after connecting to your server):

$ curl -v http://localhost:52259/api/clients

Would be also interesting to see the output of this command, when you are connecting from gaming mode (but to do this, you need remote access to your Deck, usually using SSH).

rlex commented 8 months ago

No, desktop mode client shows everything correctly.

That's quite interesting.

[{"client_id":50528,"client_nickname":"lex1","input_muted":false,"output_muted":true,"channel_id":2,"channel_name":"Channel \"1\""}, {"client_id":50506,"client_nickname":"lex","input_muted":false,"output_muted":true,"channel_id":2,"channel_name":"Channel \"1\""}, {"client_id":33511,"client_nickname":"lex11","input_muted":false,"output_muted":false,"channel_id":2,"channel_name":"Channel \"1\""}]

As you can see, "lex11" is present in api of (plugin? ts3?).

Currently, there is 2 real users connected: lex (PC ts3), and lex1 (steamdeck ts3).

And here is from gaming mode (same setting), user is present again:

[{"client_id":50533,"client_nickname":"lex1","input_muted":false,"output_muted":false,"channel_id":2,"channel_name":"Channel \"1\""}, {"client_id":50506,"client_nickname":"lex","input_muted":false,"output_muted":true,"channel_id":2,"channel_name":"Channel \"1\""}, {"client_id":33511,"client_nickname":"lex11","input_muted":false,"output_muted":false,"channel_id":2,"channel_name":"Channel \"1\""}]
rlex commented 8 months ago

Okay, that was on my side. I vaguely recalled i had similar issue ages ago, opened TS3 server database and saw dangling entry in client list. After restarting TS3 server, issue went away.

Still strange that it's only visible via API and not TS ui, but i guess that's on teamspeak side.

rlex commented 8 months ago

...and it appeared again after reconnecting via game mode, now as "lex2". Same symptoms as before.

ILadis commented 8 months ago

The TeamSpeak application might use "unique identifiers" for each user when showing the currently connected clients in their interface.

Can you please try the following:
From within TeamSpeak (in desktop mode or on your desktop pc) click on "Permissions > List All Clients". This should give you a list of all clients that ever connected to your server. You should see one "unique identifier" for your desktop user and a separate one for your Steam Deck. But there should be no third "lex" user (assuming you are not using any more devices). You can also sort by "Last" to find your users.

If you only see the mentioned two identifiers, this might be a way to "fix" the client list in the plugin.
(This would still not explain why the TeamSpeak API reports two users for the same unique identifier.)

I could build a special version of the plugin which would also report the "unique identifier" when calling the API via cURL, to be extra sure that there actually are multiple clients which share the same identifier.

rlex commented 8 months ago

same unique ID is probably because i use same private key on both deck and PC, synced via myteamspeak

ILadis commented 8 months ago

Oh right, I guess it should then be possible for multiple clients who share the same unique identifier to connect to the same server at the same time.

I'm out of ideas for now.

For some reason the TeamSpeak API reports this phantom user even though it's not being displayed in the TeamSpeak UI.

ILadis commented 8 months ago

I've found a lot of forum threads stating that you can't use the same identity to connect to the same server at the same time. So either a MyTeamSpeak account doesn't sync identities or if it does it causes trouble when multiple clients use the same identity at the same time.

See this forum thread for example.

Maybe logout of your MyTeamSpeak account on your Deck and give it another try?

rlex commented 8 months ago

Okay, i reauthed and identities for lex and lex1 are indeed different (yet it still somehow inherits proper permissions for both IDs). lex2 or lex11 (phantom ones) aren't in list, though.