This callback is emitted by Steam with new licenses available, but also in many other situations, such as when somebody else logs in into the account (e.g. Steam deck, another PC), when somebody deletes licenses, and even on PICS changes from time to time, not to mention other cases I forgot/don't know about.
It seems silly to restart cards farmer every time, I believe we can assume that user won't delete license for a game we're farming, and even if he does, we'll catch that in 30 minutes or so anyway, while not restarting the farming every time Steam feels like sending us licenses.
Failure of IPC startup currently corrupts ASF logging mechanism, and since ASF expects that logging mechanism to be operative afterwards, it crashes in internal code the moment it requires user input.
Fix that, and add additional safety safeguards in case we have a legit lack of logging configuration.
https://steamcommunity.com/groups/archiasf/discussions/1/3422187248450123255/
Previous implementations had several problems when dealing with trade holds:
- User could've configured max trade hold duration to 0, and still accept trades with hold when he's the cause of it, this is unwanted
- There is virtually no way to ensure that the other party is willing to accept our trade hold even if we allow it, so expose that detail.
This precisely answers quite rather but not impossible situation of having a trade hold with ASF 2FA, e.g. due to moving authenticator, but we're also now ready for "perpetual" trade hold with ASF 2FA, in case it ever happened.
This way, we:
- Expose to other users our max trade hold duration preference
- Users validate both their own and listed user's trade hold, and if it exceeds either their own or user's limit, bot is not considered for matching
- It also resolves problem of accepting trade offers from other people when we're on trade hold ourselves
It might still make sense in order to:
a) Postpone timezoneoffset calculation until we actually get logged in, which gives machine more time for re-initialization
b) Refresh it in case our timezone changes, or DST gets enabled/disabled