mirror of https://github.com/wolfSSL/wolfssh.git
- src/agent.c gains AgentWriteAll(), AgentReadFull(), AgentReadMessage() and AgentWriteMessage(), which loop the agentIoCb, bound a declared length by the new WOLFSSH_AGENT_MAX_MSG_SZ, and reconnect once when a write finds the socket dead. wolfSSH_AGENT_Relay() is rebuilt on them. - New WOLFSSH_API wolfSSH_AGENT_RelayChannel() frames the channel side, holding a partial request and an unfinished reply on WOLFSSH_AGENT_CTX in two WOLFSSH_BUFFERs whose whole allocation is zeroed as each message is consumed. It answers WS_WANT_WRITE, WS_WINDOW_FULL or WS_REKEYING while a reply is owed, flushes what is left queued below under those last two, and answers WS_WANT_WRITE while any of it is still queued. - readPeer() in apps/wolfssh/wolfssh.c and examples/client/client.c calls it, drops its local ato32() and 512-byte buffer, and arms a select() write set for the transport's own want-write. While a reply is owed it ends the read loop so the retry above select() runs, and examples/client/client.c times its select() out at one second. - tests/api.c adds nine wolfSSH_AGENT_Relay() cases and tests/regress.c twenty-two for wolfSSH_AGENT_RelayChannel(). Issue: F-10545 |
||
|---|---|---|
| .. | ||
| wolfssh | ||
| wolfsshd | ||
| include.am | ||
| wolfssh-options.c | ||