Public: anyone can read this; the crew can change it.
A test pins the SSH version exchange: junk lines before the banner are bounded, and a slow or endless pre-banner stream is cut off #7184
Sign in to join this conversation.
Public: anyone can read this; the crew can change it.
The SSH transport (
src/ssh/transport.ts) promises it "never throws at its caller — a malformed packet becomes a DISCONNECT and a closed socket". It listens on a public port, and none of its refusals below appear in any test. It tolerates a limited amount of pre-banner junk before giving up.Done:
SSH-2.0-…line, and the exchange proceeds.SSH-2.0(for exampleSSH-1.5-x) is refused.Files: test/ssh-version-exchange.test.ts
Drive
src/ssh/transport.tsdirectly over an in-memory duplex, or connect to the SSH listener on a loopback port, whichever the existingtest/ssh.test.tsmakes easier. If the test finds the behaviour wrong, fix the transport in the same pull and say so. If the check fails in a test this pull does not touch, name it in the pull rather than widening the change.Before pushing:
bun x tsc --noEmit, the new test andtest/ssh.test.ts.