mirror of https://github.com/wolfSSL/wolfssh.git
wolfSSH_shutdown() flushes whatever a short send left in the output buffer, not just a queued disconnect. A rejected auth's USERAUTH_FAILURE has no channel, and DoChannelClose() retires the channel as soon as the close is bundled, so neither had anything left to carry the retry. - The gate still refuses a flush once the peer has disconnected, unless our own disconnect is the thing queued. - A flush that finishes on a live session clears the WS_WANT_WRITE the short send latched, as the disconnected path already did. - ssh.h documents the widened flush and the WS_WANT_WRITE a short one leaves wolfSSH_shutdown() returning. - Tests cover the rejected auth with no channel and the close whose channel DoChannelClose() already retired. - A flush that short-sends on a live channel leaves the teardown queued behind it. The retry adds no second EOF or close, and skips the close wait while its own flush is still short. - A teardown send that drained the leftovers settles the flush; one that failed outranks it, since a reset leaves the buffer intact. |
||
|---|---|---|
| .. | ||
| api.c | ||
| api.h | ||
| auth.c | ||
| auth.h | ||
| include.am | ||
| kex.c | ||
| kex.h | ||
| regress.c | ||
| sftp.c | ||
| sftp.h | ||
| testsuite.c | ||
| testsuite.h | ||
| unit.c | ||
| unit.h | ||