Skip to content

Fix SMB transfer hang: cap TCP burst at 4×MSS#371

Merged
felixrieseberg merged 1 commit into
mainfrom
claude/wizardly-elgamal
Apr 14, 2026
Merged

Fix SMB transfer hang: cap TCP burst at 4×MSS#371
felixrieseberg merged 1 commit into
mainfrom
claude/wizardly-elgamal

Conversation

@felixrieseberg
Copy link
Copy Markdown
Owner

Follow-up to #370 — the 8×MSS burst overflowed the NE2000 RX ring.

The pump() override sends its whole burst synchronously (the guest CPU doesn't run between net.receive() calls), so every frame lands in the NE2000 ring before Win95 reads any of them. Dc.prototype.receive silently discards on overflow, v86 has no retransmit, and the override's hi cursor has already advanced past the dropped bytes — Win95 dup-ACKs into the void and the redirector eventually reports "network resource is no longer available".

Win95's NE2000 driver gives the RX ring 52–58 pages. 8×MSS (+the loop's one-segment overshoot) plus our preceding ACK is ~10 frames ≈ 60 pages; 4×MSS + ACK is ~36. Dropped the winsize clamp too — it's captured once from the SYN and never updated, so it was always 8192 anyway.

@felixrieseberg felixrieseberg force-pushed the claude/wizardly-elgamal branch from 9a51aab to 6cef2e7 Compare April 14, 2026 23:50
@felixrieseberg felixrieseberg merged commit d0090e5 into main Apr 14, 2026
1 check passed
@felixrieseberg felixrieseberg deleted the claude/wizardly-elgamal branch April 14, 2026 23:50
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