From: Daniel Stenberg Date: Thu, 25 Sep 2025 14:32:18 +0000 (+0200) Subject: libssh: clarify myssh_block2waitfor X-Git-Tag: rc-8_17_0-2~337 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=9595921b06c911af278a645be1d298cb83e32df0;p=thirdparty%2Fcurl.git libssh: clarify myssh_block2waitfor Fixed misleading comment. Simplified the bit setup. Reported in Joshua's sarif data Closes #18739 --- diff --git a/lib/vssh/libssh.c b/lib/vssh/libssh.c index 576ac3b0c0..e1e660b4b3 100644 --- a/lib/vssh/libssh.c +++ b/lib/vssh/libssh.c @@ -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 */