You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- wolfSSH_worker() calls wolfSSH_SendPacket() whenever
ssh->outputBuffer holds bytes and the session is not
disconnected, in place of doing so only for WS_SUCCESS,
WS_WANT_READ, WS_CHAN_RXD or WS_EOF. A failed flush reaches the
return only when the receive reported nothing. ssh->error keeps
the receive's code when the receive failed, and the close's when
a WS_CHANNEL_CLOSED pass hard-failed its flush. Drops the second
DoReceive(), its WS_WINDOW_FULL case, the WOLFSSH_TEST_BLOCK
fork, and the separate WS_CHANNEL_CLOSED flush.
- sendRet moves to the top of wolfSSH_worker(), and the
WS_REKEYING report is skipped when the flush failed.
- SendPacketFlush() records its code in ssh->error on every
transport failure path, and wolfSSH_SendPacket() says so. The
comments on _ChannelRead(), _ChannelReadExt() and
test_ChannelReadExtHardFailureReported() drop the former
contract.
- The echoserver and Espressif shell loops and the Windows
wolfsshd shell loop treat a WS_WANT_WRITE from wolfSSH_worker()
as non-fatal, sftp_worker()'s handshake flush retry waits on
tcp_select(), and wolfSSH_stream_read()'s note drops the
receive-succeeded precondition.
- tests cover the flush on an idle receive, the owed flush across
calls, what ssh->error holds after a receive failure, a hard
send failure, channel data alongside a failed send with and
without a rekey, a discarded buffer, an out-of-bounds send and a
close whose flush hard-failed, and queued output staying unsent
on the disconnect pass.
0 commit comments