Christian-Stieber / Christians-Steam-Framework

My C++ framework for doing Steam stuff.
GNU General Public License v3.0
4 stars 1 forks source link

The interactive login is a mess #27

Closed Christian-Stieber closed 5 months ago

Christian-Stieber commented 5 months ago

Both on password and Steamguard phases, timeouts can happen which appear to screw up the logic; I'll need to take a closer look at how this is supposed to work, and how we can make it work.

Christian-Stieber commented 5 months ago

Ok, I still don't know how you're REALLY supposed to handle this -- nothing I've tried to avoid the timeouts has worked (sending heartbeats, doing the auth status poll, reading and re-reading the proto files to see if there are any hints -- I found a weak_token, but no clue as to what this can be used for.

Thus, I've implemented a "session state" type of thing that does the user interaction, and remembers things like passwords. Whenever the login module needs user information, it invokes this and terminates the client; when the user has entered the required information, the session manager will startup the client again which will then be able to just re-do previous steps using cached data. In other words:

That way, the client never has to wait for the user to provide something and won't run into the timeout.

https://github.com/Christian-Stieber/Christians-Steam-Framework/commit/7901b11d650af50828dcdaecddf2576264bbc6e5 .. https://github.com/Christian-Stieber/Christians-Steam-Framework/commit/2e4df50bddf286745ab42e4ac29d99b29396b7ea