Skip to content

Beta 0.7.3 network socket, UDP, WebSocket, HTTPS, and UPnP adversity gate

Summary

Replay network adversity after Broadband changes to bind policy, UDP handling, HTTPS, WebSocket, static-file handling, accepted-client lifetime, and UPnP/NAT mapping code.

Acceptance Criteria

  • [x] Live profiles write BindInterface=hide.me, keep P2P BindAddr empty, and enable P2P UPnP.
  • [x] WebServer bind policy remains separate from P2P bind policy.
  • [x] HTTP and HTTPS socket adversity smoke passes with resource thresholds.
  • [x] WebSocket accepted-client, queued-send, TLS WANT_READ/WANT_WRITE, and stop/start churn probes pass.
  • [x] UDP control sender and malformed receive probes pass without deadlock or overread.
  • [x] UPnP/NAT mapping changes are either validated or explicitly deferred with no release-blocking claim.
  • [x] Static WebServer file serving still rejects traversal and bounded-memory risks.

Validation

  • python -m emule_workspace test live-e2e --config Release --platform x64 --suite rest-api --rest-socket-adversity-budget smoke --rest-leak-churn-budget smoke
  • Focused UDP, bind-policy, WebSocket, HTTPS, and UPnP tests through supported python -m emule_workspace commands.

Completion Evidence

Closed on 2026-05-09 with the following Beta 0.7.3 replay evidence:

  • python -m emule_workspace test live-e2e --config Release --platform x64 --suite rest-api --rest-socket-adversity-budget smoke --rest-leak-churn-budget smoke passed with HTTP artifact EMULE_WORKSPACE_ROOT\repos\emulebb-build-tests\reports\rest-api-smoke\20260509-153020-eMule-main-release. The run completed 7 raw socket adversity probes, 100/100 HTTP leak-churn cycles, 0 resource-threshold violations, and 0 failed REST contract routes.
  • python -m emule_workspace test live-e2e --config Release --platform x64 --suite rest-api --rest-webserver-scheme https --rest-socket-adversity-budget off --rest-tls-handshake-adversity-budget smoke --rest-leak-churn-budget smoke passed with HTTPS artifact EMULE_WORKSPACE_ROOT\repos\emulebb-build-tests\reports\rest-api-smoke\20260509-153452-eMule-main-release. HTTPS replay completed 3 TLS handshake adversity probes, 100/100 HTTPS leak-churn cycles, 0 resource-threshold violations, and 0 failed REST contract routes. The harness keeps raw socket adversity HTTP-only, so HTTPS adversity uses the supported TLS-handshake probe path.
  • Both live profiles wrote the required P2P network settings: [eMule] BindInterface=hide.me, [eMule] BindAddr= empty, and EnableUPnP=1. The WebServer stayed separately bound through [WebServer] BindAddr=127.0.0.1, proving the web bind policy remains separate from P2P bind policy.
  • python -m emule_workspace test all --config Release --platform x64 passed with native coverage artifact EMULE_WORKSPACE_ROOT\repos\emulebb-build-tests\reports\native-coverage\20260509-152156-eMulebb-workspace-v0.72a-eMule-main-x64-Release. The Release parity suite passed 501/501 cases and the web API suite passed 72/72 cases.
  • Native coverage includes WebSocket HTTP request parsing, duplicate and oversized header rejection, accepted-client thread fanout bounds, rejected-IP accept-drain behavior, TLS PEM loading, UDP control sender queue and wakeup policy, client and server UDP malformed-packet logging bounds, UDP obfuscation framing, async socket readiness/close classification, bind-startup policy, MiniUPnP mapping matching, UPnP wrapper ordering, and REST/WebServer static-file traversal and bounded-memory policy.
  • NAT mapping modernization remains non-blocking where live router proof is unavailable: FEAT-032 keeps MiniUPnP active, documents PCP/NAT-PMP live proof as deferred, and has native wrapper-order coverage.

Relationship To Other Items