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. |
||
|---|---|---|
| .. | ||
| agent.c | ||
| certman.c | ||
| include.am | ||
| internal.c | ||
| io.c | ||
| keygen.c | ||
| log.c | ||
| misc.c | ||
| ossh.c | ||
| port.c | ||
| ssh.c | ||
| wolfscp.c | ||
| wolfsftp.c | ||
| wolfterm.c | ||