Skip to content

fix(windows): UDP throughput — IOCP errors, 64 KiB recv, optional large datagrams - #564

Merged
NikolayChirkov merged 4 commits into
mainfrom
fix/windows-udp-throughput
Nov 2, 2026
Merged

NikolayChirkov merged 4 commits into
mainfrom
fix/windows-udp-throughput

Conversation

@NikolayChirkov

Copy link
Copy Markdown
Collaborator

Summary

Cherry-pick from bench work that fixes Windows UDP throughput and large-datagram benchmarks (no connection-event diag / ping-floor tooling).

  • IOCP: dispatch failed completions when OVERLAPPED is set (win_poller.cpp) — avoids dropping errored GQCS results.
  • Recv buffer: default Win UDP IOCP receive buffer 64 KiB so full datagrams are not lost to WSAEMSGSIZE vs small send MTU preference.
  • Optional bench tuning (compile-time / env): AE_BENCH_WIN_UDP_SNDBUF_BYTES SO_SNDBUF override; AE_BENCH_UDP_MAX_PACKET_BYTES + IP_PMTUDISC_DONT for large IPv4 UDP send path.

Test plan

  • Windows UDP P2P / large-datagram bench (64512 B payload) on split mixed path
  • Regression: default UDP MTU-sized traffic unchanged when bench env vars unset

NikolayChirkov and others added 4 commits November 2, 2026 13:25
Route errored GetQueuedCompletionStatus results to the registered socket callback instead of dropping them in the poller loop.
Use a 65536-byte receive buffer so overlapped UDP recv can hold full datagrams beyond the 1200 B send MTU preference without WSAEMSGSIZE disconnects.

Co-authored-by: Cursor <cursoragent@cursor.com>
@NikolayChirkov
NikolayChirkov merged commit 10d884b into main Nov 2, 2026
2 of 12 checks passed
@NikolayChirkov
NikolayChirkov deleted the fix/windows-udp-throughput branch November 2, 2026 21:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant