No description
- PureBasic 100%
Realer purepower-Prod-Crash (SIGABRT, Core-Dump): ein WS-Broadcast (System-Channel-Push) aus einem App-/Publisher-Thread rief _WS_H2_TransportSend → H2_Stream::SendData → NET_Core- Send-Owner-Thread-Guard → abort(). Doppelt unsicher: (a) Guard-Abort, (b) H2-Connection- State ist single-threaded (owning Data-Worker, kein interner Lock) → State-Race. Fix (Marshal): _WS_H2_TransportSend prueft NET_Core::IsKnownWorkerThread(). Auf einem Worker → direkt senden (Fast-Path). Aus einem Nicht-Worker-Thread → Frame an die _WSStreamBridge (neue pending-Queue, _ws_bridge_mutex) enqueuen + NET_Core::_KickDataJob(conn) → der owning Data-Worker drained in _HTTP_OnDataImpl (_WS_DrainPendingH2) und sendet H2_Stream::SendData auf SEINEM Thread. Pending-Frames werden bei Bridge-Cleanup freigegeben (kein Leak). (H1 nutzte bereits SubmitPacket, H3 den lock-free QUIC-send_ring → schon thread-safe.) Regressionstest: _TestWSCrossThreadSendMarshals() (WS_TestSuite Section 20) — WS-H2-Send aus einem frischen Nicht-Worker-Thread (Guard aktiv) MUSS marshallen statt aborten; verifiziert kein SIGABRT + genau 1 Frame gequeued. make test 10/10. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| ACME_Protokoll.pbi | ||
| H2_Frame.pbi | ||
| H2_Stream.pbi | ||
| H3_Frame.pbi | ||
| H3_Stream.pbi | ||
| HPACK_Codec.pbi | ||
| HTTP_Client.pbi | ||
| HTTP_PKI.pbi | ||
| HTTP_Protokoll.pbi | ||
| HTTP_Server.pbi | ||
| HTTP_Version.pbi | ||
| QPACK_Codec.pbi | ||
| WS_Connection.pbi | ||
| WS_Deflate.pbi | ||
| WS_Frame.pbi | ||