libssh: clarify myssh_block2waitfor

Fixed misleading comment. Simplified the bit setup.

Reported in Joshua's sarif data

Closes #18739
This commit is contained in:
Daniel Stenberg 2025-09-25 16:32:18 +02:00
parent e48c1ea415
commit 9595921b06
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2

View file

@ -2392,19 +2392,16 @@ static void myssh_block2waitfor(struct connectdata *conn,
struct ssh_conn *sshc,
bool block)
{
/* If it did not block, or nothing was returned by ssh_get_poll_flags
* have the original set */
conn->waitfor = sshc->orig_waitfor;
if(block) {
int dir = ssh_get_poll_flags(sshc->ssh_session);
conn->waitfor = 0;
/* translate the libssh define bits into our own bit defines */
if(dir & SSH_READ_PENDING)
conn->waitfor |= KEEP_RECV;
if(dir & SSH_WRITE_PENDING)
conn->waitfor |= KEEP_SEND;
conn->waitfor =
((dir & SSH_READ_PENDING) ? KEEP_RECV : 0) |
((dir & SSH_WRITE_PENDING) ? KEEP_SEND : 0);
}
else
/* if it did not block, use the original set */
conn->waitfor = sshc->orig_waitfor;
}
/* called repeatedly until done from multi.c */