Userinfo is now synced as name&string pairs. Yes this means there's some bandwidth increase involved, but userinfo is not being sent very often (clients get kicked if they do) and I don't know if it can be implemented better without large amounts of cruft and I'm not going there.
The "failed to send userinfo" errorcode is now merged with the "userinfo rejected" one. The check for incomplete userinfo is now done in SERVER_GetUserInfo.
The CVAR_UNSYNCED_USERINFO flag means that even if the cvar is userinfo, it won't be synced to the server. Otherwise all userinfo is synced. This flag cannot imply CVAR_USERINFO because that would conflict with the copies created into userinfo_t.
The USERINFO_* defines are now gone. Instead, sets of FNames are used instead.
Account name syncing is now done separately of userinfo. Tying it to userinfo was a mistake on my behalf… I had trouble with the official auth server but I tested it as well as I could locally.
I tested it as throughly as I could (used the provided example WAD and checked behavior in Hexen and such), but since this is such a far-encompassing change I cannot guarantee that it will not break horribly.
There's a testing build on the ticket, but nobody bothered to test that... 😒