galaxy-integration-steam icon indicating copy to clipboard operation
galaxy-integration-steam copied to clipboard

Plugin fails to authenticate with timeout / optimize getting server list

Open gloowa opened this issue 4 years ago • 12 comments

Hello. I've had no problems with the steam integration for a month and then since around 4, 5 days ago plugin fails to authenticate with timeout message in the logs, 100% of the time:

2020-09-25 23:02:12,652 - galaxy.task_manager - DEBUG - Task manager plugin external: creating task 1 (Run WebSocketClient) 2020-09-25 23:02:12,652 - servers_cache - DEBUG - Using server cache {'1': {'timeout': 1601593373.3089762, 'servers': [['wss://cm1-sea1.cm.steampowered.com:27020/cmsocket/', 4582]]}, '2': {'timeout': 1601593408.6974823, 'servers': [['wss://cm1-sea1.cm.steampowered.com:27020/cmsocket/', 3682]]}, '3': {'timeout': 1601593447.1790226, 'servers': [['wss://cm2-lhr1.cm.steampowered.com:27029/cmsocket/', 234], ['wss://cm3-lhr1.cm.steampowered.com:27028/cmsocket/', 240], ['wss://cm3-lhr1.cm.steampowered.com:27037/cmsocket/', 244], ['wss://cm3-lhr1.cm.steampowered.com:27032/cmsocket/', 255], ['wss://cm4-lhr1.cm.steampowered.com:27035/cmsocket/', 259], ['wss://cm2-lhr1.cm.steampowered.com:443/cmsocket/', 319], ['wss://cm2-sea1.cm.steampowered.com:27021/cmsocket/', 893], ['wss://cm1-sea1.cm.steampowered.com:443/cmsocket/', 985], ['wss://cm1-sea1.cm.steampowered.com:27021/cmsocket/', 1179]]}, '4': {'timeout': 1601593468.522755, 'servers': [['wss://cm2-ams1.cm.steampowered.com:27022/cmsocket/', 521], ['wss://cm6-ams1.cm.steampowered.com:27038/cmsocket/', 523], ['wss://cm3-lhr1.cm.steampowered.com:27030/cmsocket/', 526], ['wss://cm5-ams1.cm.steampowered.com:27038/cmsocket/', 526], ['wss://cm6-ams1.cm.steampowered.com:27035/cmsocket/', 526], ['wss://cm2-lhr1.cm.steampowered.com:27038/cmsocket/', 529], ['wss://cm2-lhr1.cm.steampowered.com:27035/cmsocket/', 529], ['wss://cm1-lhr1.cm.steampowered.com:27038/cmsocket/', 529], ['wss://cm4-ams1.cm.steampowered.com:27022/cmsocket/', 530], ['wss://cm3-lhr1.cm.steampowered.com:27037/cmsocket/', 531], ['wss://cm1-lhr1.cm.steampowered.com:27029/cmsocket/', 531], ['wss://cm2-ams1.cm.steampowered.com:27024/cmsocket/', 531], ['wss://cm6-ams1.cm.steampowered.com:27036/cmsocket/', 533], ['wss://cm3-lhr1.cm.steampowered.com:27036/cmsocket/', 534], ['wss://cm4-lhr1.cm.steampowered.com:27028/cmsocket/', 534], ['wss://cm1-lhr1.cm.steampowered.com:27033/cmsocket/', 535], ['wss://cm1-lhr1.cm.steampowered.com:27034/cmsocket/', 535], ['wss://cm4-lhr1.cm.steampowered.com:443/cmsocket/', 535], ['wss://cm4-lhr1.cm.steampowered.com:27029/cmsocket/', 535], ['wss://cm4-lhr1.cm.steampowered.com:27035/cmsocket/', 535], ['wss://cm6-ams1.cm.steampowered.com:27030/cmsocket/', 535], ['wss://cm4-ams1.cm.steampowered.com:27024/cmsocket/', 535], ['wss://cm2-ams1.cm.steampowered.com:27026/cmsocket/', 536], ['wss://cm3-lhr1.cm.steampowered.com:27031/cmsocket/', 537], ['wss://cm3-lhr1.cm.steampowered.com:27028/cmsocket/', 537], ['wss://cm4-lhr1.cm.steampowered.com:27037/cmsocket/', 538], ['wss://cm5-ams1.cm.steampowered.com:27028/cmsocket/', 538], ['wss://cm6-ams1.cm.steampowered.com:27034/cmsocket/', 538], ['wss://cm5-ams1.cm.steampowered.com:27035/cmsocket/', 538], ['wss://cm3-lhr1.cm.steampowered.com:27038/cmsocket/', 539], ['wss://cm4-ams1.cm.steampowered.com:27025/cmsocket/', 539], ['wss://cm2-lhr1.cm.steampowered.com:27036/cmsocket/', 540], ['wss://cm4-lhr1.cm.steampowered.com:27036/cmsocket/', 540], ['wss://cm4-lhr1.cm.steampowered.com:27039/cmsocket/', 540], ['wss://cm2-lhr1.cm.steampowered.com:27028/cmsocket/', 540], ['wss://cm2-lhr1.cm.steampowered.com:27032/cmsocket/', 540], ['wss://cm3-lhr1.cm.steampowered.com:27032/cmsocket/', 540], ['wss://cm3-lhr1.cm.steampowered.com:27035/cmsocket/', 541], ['wss://cm3-lhr1.cm.steampowered.com:27029/cmsocket/', 541], ['wss://cm1-lhr1.cm.steampowered.com:27036/cmsocket/', 541], ['wss://cm5-ams1.cm.steampowered.com:27036/cmsocket/', 541], ['wss://cm2-ams1.cm.steampowered.com:27025/cmsocket/', 541], ['wss://cm6-ams1.cm.steampowered.com:443/cmsocket/', 541], ['wss://cm3-ams1.cm.steampowered.com:443/cmsocket/', 541], ['wss://cm5-ams1.cm.steampowered.com:27037/cmsocket/', 542], ['wss://cm2-lhr1.cm.steampowered.com:27039/cmsocket/', 543], ['wss://cm1-lhr1.cm.steampowered.com:27028/cmsocket/', 544], ['wss://cm5-ams1.cm.steampowered.com:27039/cmsocket/', 544], ['wss://cm3-ams1.cm.steampowered.com:27024/cmsocket/', 544], ['wss://cm3-ams1.cm.steampowered.com:27022/cmsocket/', 544], ['wss://cm2-lhr1.cm.steampowered.com:27031/cmsocket/', 545], ['wss://cm3-ams1.cm.steampowered.com:27023/cmsocket/', 545], ['wss://cm3-lhr1.cm.steampowered.com:27034/cmsocket/', 546], ['wss://cm5-ams1.cm.steampowered.com:27031/cmsocket/', 546], ['wss://cm3-lhr1.cm.steampowered.com:27039/cmsocket/', 547], ['wss://cm1-ams1.cm.steampowered.com:27022/cmsocket/', 547], ['wss://cm3-ams1.cm.steampowered.com:27026/cmsocket/', 547], ['wss://cm1-ams1.cm.steampowered.com:27023/cmsocket/', 547], ['wss://cm5-ams1.cm.steampowered.com:27032/cmsocket/', 548], ['wss://cm5-ams1.cm.steampowered.com:27030/cmsocket/', 548], ['wss://cm2-lhr1.cm.steampowered.com:27037/cmsocket/', 549], ['wss://cm4-lhr1.cm.steampowered.com:27031/cmsocket/', 549], ['wss://cm4-ams1.cm.steampowered.com:27026/cmsocket/', 549], ['wss://cm1-ams1.cm.steampowered.com:443/cmsocket/', 550], ['wss://cm4-ams1.cm.steampowered.com:27023/cmsocket/', 550], ['wss://cm2-lhr1.cm.steampowered.com:27034/cmsocket/', 551], ['wss://cm1-lhr1.cm.steampowered.com:27037/cmsocket/', 551], ['wss://cm2-lhr1.cm.steampowered.com:443/cmsocket/', 551], ['wss://cm3-lhr1.cm.steampowered.com:443/cmsocket/', 551], ['wss://cm4-lhr1.cm.steampowered.com:27034/cmsocket/', 551], ['wss://cm1-lhr1.cm.steampowered.com:27030/cmsocket/', 551], ['wss://cm4-lhr1.cm.steampowered.com:27033/cmsocket/', 551], ['wss://cm4-lhr1.cm.steampowered.com:27030/cmsocket/', 551], ['wss://cm5-ams1.cm.steampowered.com:27029/cmsocket/', 551], ['wss://cm4-ams1.cm.steampowered.com:443/cmsocket/', 551], ['wss://cm2-ams1.cm.steampowered.com:27023/cmsocket/', 551], ['wss://cm3-lhr1.cm.steampowered.com:27033/cmsocket/', 552], ['wss://cm1-lhr1.cm.steampowered.com:27039/cmsocket/', 552], ['wss://cm4-lhr1.cm.steampowered.com:27038/cmsocket/', 552], ['wss://cm2-lhr1.cm.steampowered.com:27033/cmsocket/', 553], ['wss://cm2-ams1.cm.steampowered.com:443/cmsocket/', 553], ['wss://cm6-ams1.cm.steampowered.com:27031/cmsocket/', 553], ['wss://cm1-lhr1.cm.steampowered.com:27032/cmsocket/', 554], ['wss://cm4-lhr1.cm.steampowered.com:27032/cmsocket/', 554], ['wss://cm1-ams1.cm.steampowered.com:27025/cmsocket/', 554], ['wss://cm6-ams1.cm.steampowered.com:27039/cmsocket/', 554], ['wss://cm6-ams1.cm.steampowered.com:27033/cmsocket/', 554], ['wss://cm3-ams1.cm.steampowered.com:27025/cmsocket/', 554], ['wss://cm1-lhr1.cm.steampowered.com:27035/cmsocket/', 555], ['wss://cm2-lhr1.cm.steampowered.com:27029/cmsocket/', 556], ['wss://cm1-lhr1.cm.steampowered.com:27031/cmsocket/', 556], ['wss://cm1-lhr1.cm.steampowered.com:443/cmsocket/', 556], ['wss://cm2-lhr1.cm.steampowered.com:27030/cmsocket/', 556], ['wss://cm5-ams1.cm.steampowered.com:443/cmsocket/', 557], ['wss://cm1-ams1.cm.steampowered.com:27026/cmsocket/', 586], ['wss://cm6-ams1.cm.steampowered.com:27029/cmsocket/', 591], ['wss://cm6-ams1.cm.steampowered.com:27037/cmsocket/', 595], ['wss://cm5-ams1.cm.steampowered.com:27034/cmsocket/', 597], ['wss://cm6-ams1.cm.steampowered.com:27032/cmsocket/', 597], ['wss://cm5-ams1.cm.steampowered.com:27033/cmsocket/', 612]]}, '0': {'timeout': 1603009270.6917686, 'servers': [['wss://cm4-waw1.cm.steampowered.com:27030/cmsocket/', 207], ['wss://cm4-waw1.cm.steampowered.com:27031/cmsocket/', 210], ['wss://cm4-waw1.cm.steampowered.com:27039/cmsocket/', 211], ['wss://cm3-waw1.cm.steampowered.com:27033/cmsocket/', 213], ['wss://cm3-waw1.cm.steampowered.com:27032/cmsocket/', 213], ['wss://cm3-waw1.cm.steampowered.com:27036/cmsocket/', 214], ['wss://cm2-waw1.cm.steampowered.com:443/cmsocket/', 214], ['wss://cm2-waw1.cm.steampowered.com:27025/cmsocket/', 214], ['wss://cm2-waw1.cm.steampowered.com:27022/cmsocket/', 214], ['wss://cm4-waw1.cm.steampowered.com:27038/cmsocket/', 358], ['wss://cm4-waw1.cm.steampowered.com:27035/cmsocket/', 358], ['wss://cm4-waw1.cm.steampowered.com:27034/cmsocket/', 358], ['wss://cm3-waw1.cm.steampowered.com:27034/cmsocket/', 358], ['wss://cm2-waw1.cm.steampowered.com:27024/cmsocket/', 358], ['wss://cm1-waw1.cm.steampowered.com:27024/cmsocket/', 358], ['wss://cm3-waw1.cm.steampowered.com:27035/cmsocket/', 358], ['wss://cm4-waw1.cm.steampowered.com:27029/cmsocket/', 451], ['wss://cm1-waw1.cm.steampowered.com:27022/cmsocket/', 451], ['wss://cm3-waw1.cm.steampowered.com:443/cmsocket/', 452], ['wss://cm4-waw1.cm.steampowered.com:27033/cmsocket/', 452], ['wss://cm1-waw1.cm.steampowered.com:27023/cmsocket/', 452], ['wss://cm3-waw1.cm.steampowered.com:27031/cmsocket/', 452], ['wss://cm2-waw1.cm.steampowered.com:27026/cmsocket/', 452], ['wss://cm1-waw1.cm.steampowered.com:27025/cmsocket/', 452], ['wss://cm1-waw1.cm.steampowered.com:443/cmsocket/', 452], ['wss://cm2-waw1.cm.steampowered.com:27023/cmsocket/', 452], ['wss://cm3-waw1.cm.steampowered.com:27038/cmsocket/', 452], ['wss://cm3-waw1.cm.steampowered.com:27030/cmsocket/', 452], ['wss://cm4-waw1.cm.steampowered.com:27028/cmsocket/', 452], ['wss://cm4-waw1.cm.steampowered.com:27037/cmsocket/', 452], ['wss://cm3-waw1.cm.steampowered.com:27037/cmsocket/', 453], ['wss://cm4-waw1.cm.steampowered.com:443/cmsocket/', 453], ['wss://cm3-waw1.cm.steampowered.com:27039/cmsocket/', 453], ['wss://cm1-waw1.cm.steampowered.com:27026/cmsocket/', 453], ['wss://cm3-waw1.cm.steampowered.com:27028/cmsocket/', 453], ['wss://cm4-waw1.cm.steampowered.com:27036/cmsocket/', 453], ['wss://cm3-waw1.cm.steampowered.com:27029/cmsocket/', 453], ['wss://cm4-waw1.cm.steampowered.com:27032/cmsocket/', 454], ['wss://cm2-fra1.cm.steampowered.com:27039/cmsocket/', 473], ['wss://cm3-fra1.cm.steampowered.com:443/cmsocket/', 474], ['wss://cm3-fra1.cm.steampowered.com:27033/cmsocket/', 474], ['wss://cm4-fra1.cm.steampowered.com:27024/cmsocket/', 474], ['wss://cm1-fra1.cm.steampowered.com:27037/cmsocket/', 474], ['wss://cm1-fra1.cm.steampowered.com:27033/cmsocket/', 474], ['wss://cm1-fra1.cm.steampowered.com:27032/cmsocket/', 474], ['wss://cm3-fra1.cm.steampowered.com:27038/cmsocket/', 474], ['wss://cm3-fra1.cm.steampowered.com:27035/cmsocket/', 474], ['wss://cm4-fra1.cm.steampowered.com:27023/cmsocket/', 474], ['wss://cm4-fra1.cm.steampowered.com:27026/cmsocket/', 481], ['wss://cm1-fra1.cm.steampowered.com:27031/cmsocket/', 482], ['wss://cm2-fra1.cm.steampowered.com:27033/cmsocket/', 487], ['wss://cm3-fra1.cm.steampowered.com:27034/cmsocket/', 487], ['wss://cm1-fra1.cm.steampowered.com:27035/cmsocket/', 490], ['wss://cm3-fra1.cm.steampowered.com:27036/cmsocket/', 491], ['wss://cm2-fra1.cm.steampowered.com:27030/cmsocket/', 493], ['wss://cm1-sto2.cm.steampowered.com:27036/cmsocket/', 495], ['wss://cm1-fra1.cm.steampowered.com:27039/cmsocket/', 496], ['wss://cm3-fra1.cm.steampowered.com:27029/cmsocket/', 496], ['wss://cm1-sto2.cm.steampowered.com:27039/cmsocket/', 497], ['wss://cm4-fra1.cm.steampowered.com:27025/cmsocket/', 497], ['wss://cm2-fra1.cm.steampowered.com:27034/cmsocket/', 498], ['wss://cm5-fra1.cm.steampowered.com:27036/cmsocket/', 499], ['wss://cm4-fra1.cm.steampowered.com:27022/cmsocket/', 499], ['wss://cm5-fra1.cm.steampowered.com:27032/cmsocket/', 499], ['wss://cm2-fra1.cm.steampowered.com:27035/cmsocket/', 500], ['wss://cm3-fra1.cm.steampowered.com:27031/cmsocket/', 501], ['wss://cm2-fra1.cm.steampowered.com:27036/cmsocket/', 501], ['wss://cm1-fra1.cm.steampowered.com:27029/cmsocket/', 501], ['wss://cm5-fra1.cm.steampowered.com:27030/cmsocket/', 504], ['wss://cm3-fra1.cm.steampowered.com:27032/cmsocket/', 504], ['wss://cm2-fra1.cm.steampowered.com:27028/cmsocket/', 504], ['wss://cm5-fra1.cm.steampowered.com:27037/cmsocket/', 505], ['wss://cm1-fra1.cm.steampowered.com:443/cmsocket/', 507], ['wss://cm2-sto2.cm.steampowered.com:27034/cmsocket/', 508], ['wss://cm2-sto2.cm.steampowered.com:27035/cmsocket/', 508], ['wss://cm4-fra1.cm.steampowered.com:443/cmsocket/', 508], ['wss://cm1-fra1.cm.steampowered.com:27034/cmsocket/', 509], ['wss://cm2-sto1.cm.steampowered.com:27023/cmsocket/', 510], ['wss://cm1-sto2.cm.steampowered.com:27033/cmsocket/', 511], ['wss://cm2-sto2.cm.steampowered.com:27028/cmsocket/', 511], ['wss://cm1-sto2.cm.steampowered.com:27031/cmsocket/', 512], ['wss://cm2-sto2.cm.steampowered.com:27033/cmsocket/', 514], ['wss://cm2-sto2.cm.steampowered.com:443/cmsocket/', 514], ['wss://cm5-fra1.cm.steampowered.com:27028/cmsocket/', 515], ['wss://cm1-fra1.cm.steampowered.com:27038/cmsocket/', 515], ['wss://cm2-sto2.cm.steampowered.com:27030/cmsocket/', 516], ['wss://cm1-sto2.cm.steampowered.com:443/cmsocket/', 517], ['wss://cm1-sto1.cm.steampowered.com:443/cmsocket/', 517], ['wss://cm2-sto1.cm.steampowered.com:27026/cmsocket/', 518], ['wss://cm4-sto1.cm.steampowered.com:27023/cmsocket/', 520], ['wss://cm1-sto1.cm.steampowered.com:27026/cmsocket/', 522], ['wss://cm2-sto2.cm.steampowered.com:27032/cmsocket/', 527], ['wss://cm1-sto2.cm.steampowered.com:27030/cmsocket/', 533], ['wss://cm4-sto1.cm.steampowered.com:27024/cmsocket/', 536], ['wss://cm1-sto2.cm.steampowered.com:27035/cmsocket/', 540], ['wss://cm1-sto1.cm.steampowered.com:27022/cmsocket/', 543], ['wss://cm1-sto2.cm.steampowered.com:27038/cmsocket/', 548], ['wss://cm3-sto1.cm.steampowered.com:27025/cmsocket/', 551], ['wss://cm1-sto2.cm.steampowered.com:27029/cmsocket/', 551], ['wss://cm4-sto1.cm.steampowered.com:27025/cmsocket/', 560]]}} 2020-09-25 23:02:17,225 - galaxy.api.jsonrpc - DEBUG - Received 54 bytes of data 2020-09-25 23:02:17,225 - galaxy.api.jsonrpc - INFO - Handling request: id=4, method=ping, params={} 2020-09-25 23:02:17,225 - root - DEBUG - Sending data: {"jsonrpc": "2.0", "id": "4", "result": null} 2020-09-25 23:02:22,316 - galaxy.api.jsonrpc - DEBUG - Received 54 bytes of data 2020-09-25 23:02:22,316 - galaxy.api.jsonrpc - INFO - Handling request: id=5, method=ping, params={} 2020-09-25 23:02:22,316 - root - DEBUG - Sending data: {"jsonrpc": "2.0", "id": "5", "result": null} 2020-09-25 23:02:27,357 - galaxy.api.jsonrpc - DEBUG - Received 54 bytes of data 2020-09-25 23:02:27,357 - galaxy.api.jsonrpc - INFO - Handling request: id=6, method=ping, params={} 2020-09-25 23:02:27,357 - root - DEBUG - Sending data: {"jsonrpc": "2.0", "id": "6", "result": null} 2020-09-25 23:02:32,389 - galaxy.api.jsonrpc - DEBUG - Received 54 bytes of data 2020-09-25 23:02:32,389 - galaxy.api.jsonrpc - INFO - Handling request: id=7, method=ping, params={} 2020-09-25 23:02:32,389 - root - DEBUG - Sending data: {"jsonrpc": "2.0", "id": "7", "result": null} 2020-09-25 23:02:37,435 - galaxy.api.jsonrpc - DEBUG - Received 54 bytes of data 2020-09-25 23:02:37,435 - galaxy.api.jsonrpc - INFO - Handling request: id=8, method=ping, params={} 2020-09-25 23:02:37,435 - root - DEBUG - Sending data: {"jsonrpc": "2.0", "id": "8", "result": null} 2020-09-25 23:02:42,475 - galaxy.api.jsonrpc - DEBUG - Received 54 bytes of data 2020-09-25 23:02:42,475 - galaxy.api.jsonrpc - INFO - Handling request: id=9, method=ping, params={} 2020-09-25 23:02:42,475 - root - DEBUG - Sending data: {"jsonrpc": "2.0", "id": "9", "result": null} 2020-09-25 23:02:42,647 - root - INFO - asyncio.TimeoutError 2020-09-25 23:02:42,647 - root - INFO - Failed to initialize connection with steam client within 30 seconds 2020-09-25 23:02:42,647 - protocol.websocket_client - WARNING - Websocket task cancelled CancelledError() 2020-09-25 23:02:42,647 - galaxy.task_manager - DEBUG - Task manager plugin external: canceled task 1 (Run WebSocketClient) 2020-09-25 23:02:42,647 - root - DEBUG - Sending data: {"jsonrpc": "2.0", "id": "3", "error": {"code": 3, "message": "Backend timed out"}} 2020-09-25 23:02:42,647 - galaxy.task_manager - DEBUG - Task manager jsonrpc server: finished task 0 (init_authentication)

To make things stranger, if i disconnect the account, delete the plugin, restart galaxy, reinstall the plugin, then it will connect just fine (most of the time) to the steam account, and imports the games. Then on next galaxy start, it times out again.

How would i go about purging the stored cookies to test if this has something to do with them? Where are they stored?

gloowa avatar Sep 25 '20 21:09 gloowa

Created a pull request with a workaround: https://github.com/FriendsOfGalaxy/galaxy-integration-steam/pull/87

SparrowBrain avatar Sep 30 '20 22:09 SparrowBrain

This works, i've edited the script manually like in PR and everything is back to normal - steam connects and integrates.

It's kind of strange, considering i'm sitting on a v. good half gbps connection, so it's weird that 30s is not enough to connect. Root cause is probably something more complicated like indicated in the pull request, but this seems to help.

gloowa avatar Oct 01 '20 12:10 gloowa

Hey @gloowa could you please send full logs from the time it was timed-out?

FriendsOfGalaxy avatar Oct 01 '20 19:10 FriendsOfGalaxy

@FriendsOfGalaxy I don't have them anymore, but i will try to recreate the problem and send you the logs after work today.

gloowa avatar Oct 02 '20 08:10 gloowa

@FriendsOfGalaxy Here you go, this is my logs with 30s timeout, it fails to connect 100% of the time (lines 52, 53, 54):

plugin-steam-ca27391f-2675-49b1-92c0-896d43afa4f8.log

Changing timeout to 120s makes the plugin connect normally.

gloowa avatar Oct 03 '20 10:10 gloowa

So, after digging a bit deeper, this issue occurs when WebSocketClient runs _ensure_connected() and iterates through servers from ServersCache. In my case several top entries in the cache were not reachable (or some another issue, don't really know now), and the connection would continue failing even after retry. This is why increasing timeout to 120s helped - some server down the list worked.

Now we just need to figure out the best way to proceed. For example, we could drop the servers from cache, if they weren't reachable.

And we will need someone who has this issue to test the code, since I've lost my faulty cache when debugging 😄

SparrowBrain avatar Oct 03 '20 13:10 SparrowBrain

I don't know if that is possible, but in my mind most sensible way would to have the loop in _ensure_connected() parallelized. Rather than waiting for response sequentialy, just send request to each server at the same time, get response from all, and see which servers are alive, all within one timeout, rather than iterating though list one by one.

gloowa avatar Oct 04 '20 16:10 gloowa

@gloowa that an interesting idea but I'm not convinced to this approach. ~I think it is more like we have an old, not updated set of servers, isn't it?~ (probably not I it happen to you just on first plugin start)

Regardless of the problem we can implement the same approach as SteamKit: mark servers as Good or Bad : https://github.com/SteamRE/SteamKit/blob/8acba540be66fa33fe7d1a6c6b0ba6ab6a6f495e/SteamKit2/SteamKit2/Steam/Discovery/SmartCMServerList.cs

then Bad servers can be skipped in _ensure_connected. Compare with different issues in SteamKit changelog: https://github.com/SteamRE/SteamKit/releases that contains "CM"

Another issue is that we probably should not increment cell_id (see websocket_client). We should switch to cell_id given by ClientOnLogReponse. Probably. We have no docs for steam protocol, but it looks reasonable(?). To be tested. But another problem is we should login first, then we receive ClientOnLogResponse. But maybe this should be cached and used in next Galaxy restart? And on first attempt use use cell_id = 0 (as steam client does). For more info about what cell_id changes try to play with

       url = f"http://api.steampowered.com/ISteamDirectory/GetCMList/v1/?cellid={cell_id}"

SteamKit have a sample to "optimize" connection: https://github.com/SteamRE/SteamKit/blob/aa3e7f1750644286a8f4ee144992f80d157b1f71/Samples/7.ServerList/Program.cs#L10

FriendsOfGalaxy avatar Oct 06 '20 16:10 FriendsOfGalaxy

@FriendsOfGalaxy as i don't really know what is going in the code on and how steam works i cannot comment, but just to make when the problem occurs perfectly clear:

When disconnecting the plugin in galaxy, and then reconnecting to the account, problem does not appear I think. There was one case where it failed to connect to steam account - asked for username, pass, then the email code, and then went to offline, but i don't have logs for that, so not sure what happened there.

Otherwise, with 30s timeout it will go offline after few hours or on galaxy restart.

gloowa avatar Oct 06 '20 16:10 gloowa

I don't know if it's the same problem but for a lot of time I've had problems with it — one day it just stopped working at all! The login screen shows up, then the Steam Guard asking for the 2FA code, but then it's stuck at connecting for a minute and then it shows as Offline with a not working retry option.

TheChilliPL avatar Oct 07 '20 16:10 TheChilliPL

You're referring to #88 issue. It started to happen at the end of September.

FriendsOfGalaxy avatar Oct 09 '20 09:10 FriendsOfGalaxy

Created a pull request to address the invalid server_cache: https://github.com/FriendsOfGalaxy/galaxy-integration-steam/pull/108

SparrowBrain avatar Jan 28 '21 09:01 SparrowBrain