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. 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; a function-scope
sendRet also masks the WS_REKEYING report. Drops the second
DoReceive(), its WS_WINDOW_FULL case, the WOLFSSH_TEST_BLOCK
fork, and the separate WS_CHANNEL_CLOSED flush.
- SendPacketFlush() records its code in ssh->error on every
transport failure path; wolfSSH_SendPacket() says so and what a
later write to that field owes it.
- wolfssh/ssh.h drops WS_WINDOW_FULL from wolfSSH_worker() and
states that a status survives in the return while
wolfSSH_get_error() holds the flush's code, except that a
WS_CHANNEL_CLOSED whose flush failed hard keeps the close; the
wolfSSH_ChannelSendEof() and wolfSSH_stream_read() notes match.
Nine comments in ssh.c, unit.c, the echoserver, the Espressif
copy and portfwd name the channel's own state or the call that
failed instead of restating either.
- Twelve unit tests and the extended TestWorkerReportsDisconnect
cover the idle-receive flush, the owed flush across calls, and
what ssh->error holds after a receive, send, buffer or callback
failure, with and without a rekey or a channel close. The
#ifndef WOLFSSH_TEST_BLOCK guards around
TestWorkerReadsWhenSendWouldBlock go with the send-first fork.
0 commit comments