Finish steam#602
Conversation
Adds 60+ completed reconstruction tasks spanning: - WebUI fallback usability: launch-request latch, requested-vs-available diagnostics, modal suppression, load-failed menu rearm, black-surface guard, deferred browser-active ownership - WebHost social: native return redraw pulse, friend property alias projection, preload local profile alias mirror, WebHost social runtime cache retrieval, late social module replay, social replay snapshot suppression - Awesomium bridge: cursor position fallback, host method queue, native return cache, demo list JSON return, DataPakSource package name, SteamDataSource source host, UTF-8 bridge, field escape bridge - Steamworks auth: user validation ticket/response pointer, runtime/library/export boundaries, zero SteamID, missing SteamUser handle, decoded payload, backend credential gate, GameServer null-response native failure, EndAuthSession null SteamID guard - P2P/voice infrastructure: client/server channel poll boundaries, accepted-peer drain gate, keepalive host clock, outgoing packet address order, vtable-only packet drain, relay read/fanout/send helpers, stats publish/read helpers - IMPLEMENTATION_PLAN.md and mapping docs updated throughout
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: aa48eb3a51
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| compressedBytes = (unsigned long)reportLength; | ||
| compressedReport = (unsigned char *)malloc( (size_t)compressedBytes ); |
There was a problem hiding this comment.
Size the zlib output buffer before compressing summaries
When a MATCH_REPORT summary is small or not very compressible, a zlib stream can be larger than the input because of header/trailer and block overhead. This allocates exactly reportLength bytes and passes that same limit to QZ_Compress, so Z_BUF_ERROR clears s_svSteamSummaryPeers and drops the report for every tracked client; allocate a zlib upper bound for the compressed payload instead of the source length.
Useful? React with 👍 / 👎.
| qboolean retryAwesomiumLoad = cl_webHost.loadFailed && browserRequested && awesomiumAllowed; | ||
| qboolean awesomiumAvailable = awesomiumAllowed && ( !cl_webHost.loadFailed || retryAwesomiumLoad ); |
There was a problem hiding this comment.
Route load-failed browser retries past availability checks
This retry path is effectively unreachable after an Awesomium load failure: the public entry points call CL_RefreshOnlineServicesBridgeState() and then CL_BrowserHostServiceAvailable(), which still returns false while cl_webHost.loadFailed is set, before they can call QLWebHost_EnsureRuntime(). In the load-failed scenario this leaves the new retry logic unused and keeps subsequent web_showBrowser/startup attempts on the unavailable path until a full reset clears the latch.
Useful? React with 👍 / 👎.
Summary
Verification
Required Links (fill every field or provide a justified
N/A)Additional Notes