mirror of
https://github.com/curl/curl.git
synced 2026-08-24 13:03:35 +03:00
SSH: add protocol lock direction
Some protocols have to call the underlying functions without regard to what exact state the socket signals. For example even if the socket says "readable", the send function might need to be called while uploading, or vice versa. This is the case for libssh2 based protocols: SCP and SFTP and we now introduce a define to set those protocols and we make the multi interface code aware of this concept. This is another fix to make test 582 run properly.
This commit is contained in:
parent
60406ff7f8
commit
3eac14b43c
3 changed files with 34 additions and 15 deletions
15
lib/ssh.c
15
lib/ssh.c
|
|
@ -2028,8 +2028,9 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
/* not set by Curl_setup_transfer to preserve keepon bits */
|
||||
conn->writesockfd = conn->sockfd;
|
||||
|
||||
/* FIXME: here should be explained why we need it to start the
|
||||
* download */
|
||||
/* we want to use the _receiving_ function even when the socket turns
|
||||
out writableable as the underlying libssh2 recv function will deal
|
||||
with both accordingly */
|
||||
conn->cselect_bits = CURL_CSELECT_IN;
|
||||
}
|
||||
if(result) {
|
||||
|
|
@ -2161,6 +2162,11 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
sshc->actualcode = result;
|
||||
}
|
||||
else {
|
||||
/* we want to use the _sending_ function even when the socket turns
|
||||
out readable as the underlying libssh2 scp send function will deal
|
||||
with both accordingly */
|
||||
conn->cselect_bits = CURL_CSELECT_OUT;
|
||||
|
||||
state(conn, SSH_STOP);
|
||||
}
|
||||
break;
|
||||
|
|
@ -2207,8 +2213,9 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
/* not set by Curl_setup_transfer to preserve keepon bits */
|
||||
conn->writesockfd = conn->sockfd;
|
||||
|
||||
/* FIXME: here should be explained why we need it to start the
|
||||
* download */
|
||||
/* we want to use the _receiving_ function even when the socket turns
|
||||
out writableable as the underlying libssh2 recv function will deal
|
||||
with both accordingly */
|
||||
conn->cselect_bits = CURL_CSELECT_IN;
|
||||
|
||||
if(result) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue