miranda-ng
miranda-ng copied to clipboard
[Steam] Online status is wrong
Expected behavior
The protocol shows its status correctly
Actual behavior
Sometimes - quite spontaneously and randomly - the Steam protocol will state that you are online (and will keep latest shown status of online contacts), but as soon as you try to interact with any of them, the protocol will immediately realize something is wrong and go offline
Does it work in stable version?
No.
Steps to reproduce that behavior
Unfortunately I don't have a good reproduction scenario. It just happens randomly, sometimes not for a few days, sometimes twice in a day.
What I do know is that in the logs, it seems like the polling thread makes a request, never receives a response and never terminates the connection.
I.e. the part of netlib that should terminate connection if it's gotten no responses in X amount of time doesn't do so.
There are no errors in logs. There are usually one or two threads active for Steam; one is the polling thread and the other is a thread fetching for example avatars or other details. In my logs, usually when this happens is, the polling thread is waiting for a response to a request it sent, meanwhile the other thread receives its response. The polling thread subsequently remains in open state, never receives any response and just becomes stuck this way. It also doesn't time out (which I feel it should).
There is also no error message saying "leaving polling thread" which implies it did not stop per code.
Logs from last few polls before it happened. The last 2 lines are the literal last 2 lines in the log until about 10 hours later I tried messaging someone.
Can confirm that this is a longstanding (3+ years old) issue. Ive never really been able to capture it properly due to how intermittent the issue is, but can happen multiple times a day sometimes. There may be a relation between this bug and a couple of other bugs though:
-
After reconnecting from a disconnect, Miranda wont fully update all of your Steam friend statuses, some show as offline when they are not. (A re-reconnect will set their status properly.) (I use KeepStatus to reconnect from a disconnect, but even after it reconnects, sometimes i have to manually perform one more just to update the status of my friends list.)
-
After reconnecting from a disconnect, Miranda will successfully download all pending messages, but when you try to send one it tells you that you're actually still offline. (It might disconnect you right after downloading but the protocol isnt aware.)
EDIT: This might be a good resource to look at when this happens so that you can see how long the connection lasted: https://help.steampowered.com/en/accountdata/SteamLoginHistory
Possibly related to this: Frequently, the Steam account will show as online but with an empty contact list. Upon disconnect and reconnect, suddenly the contacts pop up again as online. This happens all the time.