passt: fix tap_passt_input's partial frame handling #14
Loading…
Reference in a new issue
No description provided.
Delete branch "fix/passt-partial-frame"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Connections through passt on the runner stalled or reset at random, and passt logged garbage guest MAC addresses (ASCII from an ssh key exchange) and repeated 'Client connection closed'. tap_passt_input() moves the incomplete frame of an earlier pass to the start of pkt_buf; if its next recv() finds nothing (EAGAIN, ordinary with edge-triggered epoll) it returns with partial_frame still pointing at the old place, and the next pass moves from there, which for a frame longer than the bytes consumed before it reads shifted data. The frames after it were read from the wrong byte. The partial count also survived a reset. patches-passt/0001 fixes both and the Dockerfile applies it to PASST_REF. It builds (arm64 Debian); the fix is untested against the running guest until this image is rolled.
🤖 Generated with Claude Code