You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix: Plug shutdown UAF, reset reconnect state, lock down OAuth/HTTP
- plugin-main: tear down EgressLinkDock / WsPortalDock before deleting
apiClient so OBS-owned dock destructors do not run against freed
WsPortalClient state
- WsClient: drop CURLOPT_CONNECTTIMEOUT to 3s so OBS shutdown waits at
most ~3s per worker; document the QPointer/joinConnectThread invariant
on the worker -> UI invokeMethod; pin pingTimestamp to successful
sends and gate pong RTT on a non-zero timestamp; log a partial
fragment-buffer discard on close; include the port in the Origin
header when it is not the scheme default; document the order
invariant of cleanup() (notifier disconnect/deleteLater before
curl_easy_cleanup); document sendRaw()'s UI-thread invariant; align
the fragment-buffer cast with qsizetype
- CurlHttpClient: pin allowed protocols to http,https on the easy
handle and on redirected requests; reject CR/LF/NUL in header keys
or values and fail the request via the existing nullptr path;
classify headerCallback overflow as ResponseTooLarge to match
writeCallback; FIXME the RequestContext raw-new pattern for a
separate RAII PR
- HttpRequestInvoker: in the 401 retry refresh-failure branch,
remove self from the queue under the mutex before unlink/emit/delete
to match the non-401 path and avoid re-entrant deadlock
- SRCLinkApiClient: use OS ephemeral port for the OAuth callback
listener; switch the cached-token freshness check to the static
QDateTime::currentSecsSinceEpoch() form; FIXME the terminate()
fire-and-forget DELETE that is canceled by plugin teardown
- SRCLinkWebSocketClient / WsPortalClient: reset reconnect counter,
timer, and pending flag on a successful connection so flap-then-
recover restarts from the short backoff
- LocalHttpServer: hard-fail listen on Windows when
setsockopt(SO_EXCLUSIVEADDRUSE) is rejected to keep the OAuth
callback off shared ports
- IngressLinkSource: guard the reload_stages button callback with
QPointer<IngressLinkSource> and a non-null source check before
re-opening source properties; defer onSettingsUpdate's else-branch
saveSettings() to the UI thread, matching the if-branch pattern
- CMakeLists: replace the mbedtls fail-fast text with an explicit
unsupported-host message; reject SRC_LINK_LINUX_CA_PATH values
containing quote or backslash before they reach the C macro
- build-aux/.run-format.zsh: enforce the cmake-format 0.6.13 upper
bound locally to mirror the CI pin
- CLAUDE.md: drop the deleted Frameworks.cmake.in entry and replace
the old request-invoker reference with the src/net/ subtree
0 commit comments