mirror of
https://github.com/curl/curl.git
synced 2026-08-25 16:23:36 +03:00
Improve code readbility
... by removing the else branch after a return, break or continue. Closes #1310
This commit is contained in:
parent
db87bcfcf2
commit
66de563482
37 changed files with 405 additions and 496 deletions
311
lib/ssh.c
311
lib/ssh.c
|
|
@ -688,14 +688,11 @@ static CURLcode ssh_check_fingerprint(struct connectdata *conn)
|
|||
sshc->actualcode = CURLE_PEER_FAILED_VERIFICATION;
|
||||
return sshc->actualcode;
|
||||
}
|
||||
else {
|
||||
infof(data, "MD5 checksum match!\n");
|
||||
/* as we already matched, we skip the check for known hosts */
|
||||
return CURLE_OK;
|
||||
}
|
||||
infof(data, "MD5 checksum match!\n");
|
||||
/* as we already matched, we skip the check for known hosts */
|
||||
return CURLE_OK;
|
||||
}
|
||||
else
|
||||
return ssh_knownhost(conn);
|
||||
return ssh_knownhost(conn);
|
||||
}
|
||||
|
||||
/*
|
||||
|
|
@ -738,7 +735,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
if(rc == LIBSSH2_ERROR_EAGAIN) {
|
||||
break;
|
||||
}
|
||||
else if(rc) {
|
||||
if(rc) {
|
||||
failf(data, "Failure establishing ssh session");
|
||||
state(conn, SSH_SESSION_FREE);
|
||||
sshc->actualcode = CURLE_FAILED_INIT;
|
||||
|
|
@ -782,16 +779,14 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
state(conn, SSH_AUTH_DONE);
|
||||
break;
|
||||
}
|
||||
err = libssh2_session_last_errno(sshc->ssh_session);
|
||||
if(err == LIBSSH2_ERROR_EAGAIN)
|
||||
rc = LIBSSH2_ERROR_EAGAIN;
|
||||
else {
|
||||
err = libssh2_session_last_errno(sshc->ssh_session);
|
||||
if(err == LIBSSH2_ERROR_EAGAIN)
|
||||
rc = LIBSSH2_ERROR_EAGAIN;
|
||||
else {
|
||||
state(conn, SSH_SESSION_FREE);
|
||||
sshc->actualcode = libssh2_session_error_to_CURLE(err);
|
||||
}
|
||||
break;
|
||||
state(conn, SSH_SESSION_FREE);
|
||||
sshc->actualcode = libssh2_session_error_to_CURLE(err);
|
||||
}
|
||||
break;
|
||||
}
|
||||
infof(data, "SSH authentication methods available: %s\n",
|
||||
sshc->authlist);
|
||||
|
|
@ -942,7 +937,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
if(rc == LIBSSH2_ERROR_EAGAIN) {
|
||||
break;
|
||||
}
|
||||
else if(rc == 0) {
|
||||
if(rc == 0) {
|
||||
sshc->authed = TRUE;
|
||||
infof(data, "Initialized password authentication\n");
|
||||
state(conn, SSH_AUTH_DONE);
|
||||
|
|
@ -1081,7 +1076,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
if(rc == LIBSSH2_ERROR_EAGAIN) {
|
||||
break;
|
||||
}
|
||||
else if(rc == 0) {
|
||||
if(rc == 0) {
|
||||
sshc->authed = TRUE;
|
||||
infof(data, "Initialized keyboard interactive authentication\n");
|
||||
}
|
||||
|
|
@ -1120,21 +1115,19 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
*/
|
||||
sshc->sftp_session = libssh2_sftp_init(sshc->ssh_session);
|
||||
if(!sshc->sftp_session) {
|
||||
char *err_msg;
|
||||
if(libssh2_session_last_errno(sshc->ssh_session) ==
|
||||
LIBSSH2_ERROR_EAGAIN) {
|
||||
rc = LIBSSH2_ERROR_EAGAIN;
|
||||
break;
|
||||
}
|
||||
else {
|
||||
char *err_msg;
|
||||
|
||||
(void)libssh2_session_last_error(sshc->ssh_session,
|
||||
&err_msg, NULL, 0);
|
||||
failf(data, "Failure initializing sftp session: %s", err_msg);
|
||||
state(conn, SSH_SESSION_FREE);
|
||||
sshc->actualcode = CURLE_FAILED_INIT;
|
||||
break;
|
||||
}
|
||||
(void)libssh2_session_last_error(sshc->ssh_session,
|
||||
&err_msg, NULL, 0);
|
||||
failf(data, "Failure initializing sftp session: %s", err_msg);
|
||||
state(conn, SSH_SESSION_FREE);
|
||||
sshc->actualcode = CURLE_FAILED_INIT;
|
||||
break;
|
||||
}
|
||||
state(conn, SSH_SFTP_REALPATH);
|
||||
break;
|
||||
|
|
@ -1151,7 +1144,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
if(rc == LIBSSH2_ERROR_EAGAIN) {
|
||||
break;
|
||||
}
|
||||
else if(rc > 0) {
|
||||
if(rc > 0) {
|
||||
/* It seems that this string is not always NULL terminated */
|
||||
tempHome[rc] = '\0';
|
||||
sshc->homedir = strdup(tempHome);
|
||||
|
|
@ -1265,7 +1258,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
state(conn, SSH_SFTP_NEXT_QUOTE);
|
||||
break;
|
||||
}
|
||||
else if(cmd) {
|
||||
if(cmd) {
|
||||
/*
|
||||
* the arguments following the command must be separated from the
|
||||
* command with a space so we can check for it unconditionally
|
||||
|
|
@ -1325,7 +1318,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
state(conn, SSH_SFTP_QUOTE_STAT);
|
||||
break;
|
||||
}
|
||||
else if(strncasecompare(cmd, "ln ", 3) ||
|
||||
if(strncasecompare(cmd, "ln ", 3) ||
|
||||
strncasecompare(cmd, "symlink ", 8)) {
|
||||
/* symbolic linking */
|
||||
/* sshc->quote_path1 is the source */
|
||||
|
|
@ -1447,7 +1440,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
if(rc == LIBSSH2_ERROR_EAGAIN) {
|
||||
break;
|
||||
}
|
||||
else if(rc != 0 && !sshc->acceptfail) { /* get those attributes */
|
||||
if(rc != 0 && !sshc->acceptfail) { /* get those attributes */
|
||||
err = sftp_libssh2_last_error(sshc->sftp_session);
|
||||
Curl_safefree(sshc->quote_path1);
|
||||
Curl_safefree(sshc->quote_path2);
|
||||
|
|
@ -1518,7 +1511,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
if(rc == LIBSSH2_ERROR_EAGAIN) {
|
||||
break;
|
||||
}
|
||||
else if(rc != 0 && !sshc->acceptfail) {
|
||||
if(rc != 0 && !sshc->acceptfail) {
|
||||
err = sftp_libssh2_last_error(sshc->sftp_session);
|
||||
Curl_safefree(sshc->quote_path1);
|
||||
Curl_safefree(sshc->quote_path2);
|
||||
|
|
@ -1541,7 +1534,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
if(rc == LIBSSH2_ERROR_EAGAIN) {
|
||||
break;
|
||||
}
|
||||
else if(rc != 0 && !sshc->acceptfail) {
|
||||
if(rc != 0 && !sshc->acceptfail) {
|
||||
err = sftp_libssh2_last_error(sshc->sftp_session);
|
||||
Curl_safefree(sshc->quote_path1);
|
||||
Curl_safefree(sshc->quote_path2);
|
||||
|
|
@ -1562,7 +1555,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
if(rc == LIBSSH2_ERROR_EAGAIN) {
|
||||
break;
|
||||
}
|
||||
else if(rc != 0 && !sshc->acceptfail) {
|
||||
if(rc != 0 && !sshc->acceptfail) {
|
||||
err = sftp_libssh2_last_error(sshc->sftp_session);
|
||||
Curl_safefree(sshc->quote_path1);
|
||||
failf(data, "mkdir command failed: %s", sftp_libssh2_strerror(err));
|
||||
|
|
@ -1586,7 +1579,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
if(rc == LIBSSH2_ERROR_EAGAIN) {
|
||||
break;
|
||||
}
|
||||
else if(rc != 0 && !sshc->acceptfail) {
|
||||
if(rc != 0 && !sshc->acceptfail) {
|
||||
err = sftp_libssh2_last_error(sshc->sftp_session);
|
||||
Curl_safefree(sshc->quote_path1);
|
||||
Curl_safefree(sshc->quote_path2);
|
||||
|
|
@ -1605,7 +1598,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
if(rc == LIBSSH2_ERROR_EAGAIN) {
|
||||
break;
|
||||
}
|
||||
else if(rc != 0 && !sshc->acceptfail) {
|
||||
if(rc != 0 && !sshc->acceptfail) {
|
||||
err = sftp_libssh2_last_error(sshc->sftp_session);
|
||||
Curl_safefree(sshc->quote_path1);
|
||||
failf(data, "rmdir command failed: %s", sftp_libssh2_strerror(err));
|
||||
|
|
@ -1623,7 +1616,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
if(rc == LIBSSH2_ERROR_EAGAIN) {
|
||||
break;
|
||||
}
|
||||
else if(rc != 0 && !sshc->acceptfail) {
|
||||
if(rc != 0 && !sshc->acceptfail) {
|
||||
err = sftp_libssh2_last_error(sshc->sftp_session);
|
||||
Curl_safefree(sshc->quote_path1);
|
||||
failf(data, "rm command failed: %s", sftp_libssh2_strerror(err));
|
||||
|
|
@ -1646,7 +1639,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
if(rc == LIBSSH2_ERROR_EAGAIN) {
|
||||
break;
|
||||
}
|
||||
else if(rc != 0 && !sshc->acceptfail) {
|
||||
if(rc != 0 && !sshc->acceptfail) {
|
||||
err = sftp_libssh2_last_error(sshc->sftp_session);
|
||||
Curl_safefree(sshc->quote_path1);
|
||||
failf(data, "statvfs command failed: %s", sftp_libssh2_strerror(err));
|
||||
|
|
@ -1709,7 +1702,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
if(rc == LIBSSH2_ERROR_EAGAIN) {
|
||||
break;
|
||||
}
|
||||
else if(rc == 0) {
|
||||
if(rc == 0) {
|
||||
data->info.filetime = (long)attrs.mtime;
|
||||
}
|
||||
|
||||
|
|
@ -1747,7 +1740,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
if(rc == LIBSSH2_ERROR_EAGAIN) {
|
||||
break;
|
||||
}
|
||||
else if(rc) {
|
||||
if(rc) {
|
||||
data->state.resume_from = 0;
|
||||
}
|
||||
else {
|
||||
|
|
@ -1782,48 +1775,47 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
|
||||
if(LIBSSH2_ERROR_EAGAIN == rc)
|
||||
break;
|
||||
else {
|
||||
if(LIBSSH2_ERROR_SFTP_PROTOCOL == rc)
|
||||
/* only when there was an SFTP protocol error can we extract
|
||||
the sftp error! */
|
||||
err = sftp_libssh2_last_error(sshc->sftp_session);
|
||||
else
|
||||
err = -1; /* not an sftp error at all */
|
||||
|
||||
if(sshc->secondCreateDirs) {
|
||||
state(conn, SSH_SFTP_CLOSE);
|
||||
sshc->actualcode = err>= LIBSSH2_FX_OK?
|
||||
sftp_libssh2_error_to_CURLE(err):CURLE_SSH;
|
||||
failf(data, "Creating the dir/file failed: %s",
|
||||
sftp_libssh2_strerror(err));
|
||||
break;
|
||||
}
|
||||
else if(((err == LIBSSH2_FX_NO_SUCH_FILE) ||
|
||||
(err == LIBSSH2_FX_FAILURE) ||
|
||||
(err == LIBSSH2_FX_NO_SUCH_PATH)) &&
|
||||
(data->set.ftp_create_missing_dirs &&
|
||||
(strlen(sftp_scp->path) > 1))) {
|
||||
/* try to create the path remotely */
|
||||
rc = 0; /* clear rc and continue */
|
||||
sshc->secondCreateDirs = 1;
|
||||
state(conn, SSH_SFTP_CREATE_DIRS_INIT);
|
||||
break;
|
||||
}
|
||||
if(LIBSSH2_ERROR_SFTP_PROTOCOL == rc)
|
||||
/* only when there was an SFTP protocol error can we extract
|
||||
the sftp error! */
|
||||
err = sftp_libssh2_last_error(sshc->sftp_session);
|
||||
else
|
||||
err = -1; /* not an sftp error at all */
|
||||
|
||||
if(sshc->secondCreateDirs) {
|
||||
state(conn, SSH_SFTP_CLOSE);
|
||||
sshc->actualcode = err>= LIBSSH2_FX_OK?
|
||||
sftp_libssh2_error_to_CURLE(err):CURLE_SSH;
|
||||
if(!sshc->actualcode) {
|
||||
/* Sometimes, for some reason libssh2_sftp_last_error() returns
|
||||
zero even though libssh2_sftp_open() failed previously! We need
|
||||
to work around that! */
|
||||
sshc->actualcode = CURLE_SSH;
|
||||
err=-1;
|
||||
}
|
||||
failf(data, "Upload failed: %s (%d/%d)",
|
||||
err>= LIBSSH2_FX_OK?sftp_libssh2_strerror(err):"ssh error",
|
||||
err, rc);
|
||||
failf(data, "Creating the dir/file failed: %s",
|
||||
sftp_libssh2_strerror(err));
|
||||
break;
|
||||
}
|
||||
if(((err == LIBSSH2_FX_NO_SUCH_FILE) ||
|
||||
(err == LIBSSH2_FX_FAILURE) ||
|
||||
(err == LIBSSH2_FX_NO_SUCH_PATH)) &&
|
||||
(data->set.ftp_create_missing_dirs &&
|
||||
(strlen(sftp_scp->path) > 1))) {
|
||||
/* try to create the path remotely */
|
||||
rc = 0; /* clear rc and continue */
|
||||
sshc->secondCreateDirs = 1;
|
||||
state(conn, SSH_SFTP_CREATE_DIRS_INIT);
|
||||
break;
|
||||
}
|
||||
state(conn, SSH_SFTP_CLOSE);
|
||||
sshc->actualcode = err>= LIBSSH2_FX_OK?
|
||||
sftp_libssh2_error_to_CURLE(err):CURLE_SSH;
|
||||
if(!sshc->actualcode) {
|
||||
/* Sometimes, for some reason libssh2_sftp_last_error() returns
|
||||
zero even though libssh2_sftp_open() failed previously! We need
|
||||
to work around that! */
|
||||
sshc->actualcode = CURLE_SSH;
|
||||
err=-1;
|
||||
}
|
||||
failf(data, "Upload failed: %s (%d/%d)",
|
||||
err>= LIBSSH2_FX_OK?sftp_libssh2_strerror(err):"ssh error",
|
||||
err, rc);
|
||||
break;
|
||||
}
|
||||
|
||||
/* If we have a restart point then we need to seek to the correct
|
||||
|
|
@ -1836,32 +1828,30 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
}
|
||||
|
||||
if(seekerr != CURL_SEEKFUNC_OK) {
|
||||
curl_off_t passed=0;
|
||||
|
||||
if(seekerr != CURL_SEEKFUNC_CANTSEEK) {
|
||||
failf(data, "Could not seek stream");
|
||||
return CURLE_FTP_COULDNT_USE_REST;
|
||||
}
|
||||
/* seekerr == CURL_SEEKFUNC_CANTSEEK (can't seek to offset) */
|
||||
else {
|
||||
curl_off_t passed=0;
|
||||
do {
|
||||
size_t readthisamountnow =
|
||||
(data->state.resume_from - passed > CURL_OFF_T_C(BUFSIZE)) ?
|
||||
BUFSIZE : curlx_sotouz(data->state.resume_from - passed);
|
||||
do {
|
||||
size_t readthisamountnow =
|
||||
(data->state.resume_from - passed > CURL_OFF_T_C(BUFSIZE)) ?
|
||||
BUFSIZE : curlx_sotouz(data->state.resume_from - passed);
|
||||
|
||||
size_t actuallyread =
|
||||
data->state.fread_func(data->state.buffer, 1,
|
||||
readthisamountnow, data->state.in);
|
||||
size_t actuallyread =
|
||||
data->state.fread_func(data->state.buffer, 1,
|
||||
readthisamountnow, data->state.in);
|
||||
|
||||
passed += actuallyread;
|
||||
if((actuallyread == 0) || (actuallyread > readthisamountnow)) {
|
||||
/* this checks for greater-than only to make sure that the
|
||||
CURL_READFUNC_ABORT return code still aborts */
|
||||
failf(data, "Failed to read data");
|
||||
return CURLE_FTP_COULDNT_USE_REST;
|
||||
}
|
||||
} while(passed < data->state.resume_from);
|
||||
}
|
||||
passed += actuallyread;
|
||||
if((actuallyread == 0) || (actuallyread > readthisamountnow)) {
|
||||
/* this checks for greater-than only to make sure that the
|
||||
CURL_READFUNC_ABORT return code still aborts */
|
||||
failf(data, "Failed to read data");
|
||||
return CURLE_FTP_COULDNT_USE_REST;
|
||||
}
|
||||
} while(passed < data->state.resume_from);
|
||||
}
|
||||
|
||||
/* now, decrease the size of the read */
|
||||
|
|
@ -1926,9 +1916,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
state(conn, SSH_SFTP_CREATE_DIRS_MKDIR);
|
||||
break;
|
||||
}
|
||||
else {
|
||||
state(conn, SSH_SFTP_UPLOAD_INIT);
|
||||
}
|
||||
state(conn, SSH_SFTP_UPLOAD_INIT);
|
||||
break;
|
||||
|
||||
case SSH_SFTP_CREATE_DIRS_MKDIR:
|
||||
|
|
@ -1956,9 +1944,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
sshc->actualcode = result?result:CURLE_SSH;
|
||||
break;
|
||||
}
|
||||
else {
|
||||
rc = 0; /* clear rc and continue */
|
||||
}
|
||||
rc = 0; /* clear rc and continue */
|
||||
}
|
||||
state(conn, SSH_SFTP_CREATE_DIRS);
|
||||
break;
|
||||
|
|
@ -1985,15 +1971,13 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
rc = LIBSSH2_ERROR_EAGAIN;
|
||||
break;
|
||||
}
|
||||
else {
|
||||
err = sftp_libssh2_last_error(sshc->sftp_session);
|
||||
failf(data, "Could not open directory for reading: %s",
|
||||
sftp_libssh2_strerror(err));
|
||||
state(conn, SSH_SFTP_CLOSE);
|
||||
result = sftp_libssh2_error_to_CURLE(err);
|
||||
sshc->actualcode = result?result:CURLE_SSH;
|
||||
break;
|
||||
}
|
||||
err = sftp_libssh2_last_error(sshc->sftp_session);
|
||||
failf(data, "Could not open directory for reading: %s",
|
||||
sftp_libssh2_strerror(err));
|
||||
state(conn, SSH_SFTP_CLOSE);
|
||||
result = sftp_libssh2_error_to_CURLE(err);
|
||||
sshc->actualcode = result?result:CURLE_SSH;
|
||||
break;
|
||||
}
|
||||
sshc->readdir_filename = malloc(PATH_MAX+1);
|
||||
if(!sshc->readdir_filename) {
|
||||
|
|
@ -2200,15 +2184,13 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
rc = LIBSSH2_ERROR_EAGAIN;
|
||||
break;
|
||||
}
|
||||
else {
|
||||
err = sftp_libssh2_last_error(sshc->sftp_session);
|
||||
failf(data, "Could not open remote file for reading: %s",
|
||||
sftp_libssh2_strerror(err));
|
||||
state(conn, SSH_SFTP_CLOSE);
|
||||
result = sftp_libssh2_error_to_CURLE(err);
|
||||
sshc->actualcode = result?result:CURLE_SSH;
|
||||
break;
|
||||
}
|
||||
err = sftp_libssh2_last_error(sshc->sftp_session);
|
||||
failf(data, "Could not open remote file for reading: %s",
|
||||
sftp_libssh2_strerror(err));
|
||||
state(conn, SSH_SFTP_CLOSE);
|
||||
result = sftp_libssh2_error_to_CURLE(err);
|
||||
sshc->actualcode = result?result:CURLE_SSH;
|
||||
break;
|
||||
}
|
||||
state(conn, SSH_SFTP_DOWNLOAD_STAT);
|
||||
break;
|
||||
|
|
@ -2223,7 +2205,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
if(rc == LIBSSH2_ERROR_EAGAIN) {
|
||||
break;
|
||||
}
|
||||
else if(rc ||
|
||||
if(rc ||
|
||||
!(attrs.flags & LIBSSH2_SFTP_ATTR_SIZE) ||
|
||||
(attrs.filesize == 0)) {
|
||||
/*
|
||||
|
|
@ -2321,18 +2303,17 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
state(conn, SSH_STOP);
|
||||
break;
|
||||
}
|
||||
else {
|
||||
Curl_setup_transfer(conn, FIRSTSOCKET, data->req.size,
|
||||
FALSE, NULL, -1, NULL);
|
||||
Curl_setup_transfer(conn, FIRSTSOCKET, data->req.size,
|
||||
FALSE, NULL, -1, NULL);
|
||||
|
||||
/* not set by Curl_setup_transfer to preserve keepon bits */
|
||||
conn->writesockfd = conn->sockfd;
|
||||
/* not set by Curl_setup_transfer to preserve keepon bits */
|
||||
conn->writesockfd = conn->sockfd;
|
||||
|
||||
/* 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;
|
||||
|
||||
/* 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) {
|
||||
/* this should never occur; the close state should be entered
|
||||
at the time the error occurs */
|
||||
|
|
@ -2350,7 +2331,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
if(rc == LIBSSH2_ERROR_EAGAIN) {
|
||||
break;
|
||||
}
|
||||
else if(rc < 0) {
|
||||
if(rc < 0) {
|
||||
infof(data, "Failed to close libssh2 file\n");
|
||||
}
|
||||
sshc->sftp_handle = NULL;
|
||||
|
|
@ -2384,7 +2365,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
if(rc == LIBSSH2_ERROR_EAGAIN) {
|
||||
break;
|
||||
}
|
||||
else if(rc < 0) {
|
||||
if(rc < 0) {
|
||||
infof(data, "Failed to close libssh2 file\n");
|
||||
}
|
||||
sshc->sftp_handle = NULL;
|
||||
|
|
@ -2394,7 +2375,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
if(rc == LIBSSH2_ERROR_EAGAIN) {
|
||||
break;
|
||||
}
|
||||
else if(rc < 0) {
|
||||
if(rc < 0) {
|
||||
infof(data, "Failed to stop libssh2 sftp subsystem\n");
|
||||
}
|
||||
sshc->sftp_session = NULL;
|
||||
|
|
@ -2439,22 +2420,21 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
SCP_SEND(sshc->ssh_session, sftp_scp->path, data->set.new_file_perms,
|
||||
data->state.infilesize);
|
||||
if(!sshc->ssh_channel) {
|
||||
int ssh_err;
|
||||
char *err_msg;
|
||||
|
||||
if(libssh2_session_last_errno(sshc->ssh_session) ==
|
||||
LIBSSH2_ERROR_EAGAIN) {
|
||||
rc = LIBSSH2_ERROR_EAGAIN;
|
||||
break;
|
||||
}
|
||||
else {
|
||||
int ssh_err;
|
||||
char *err_msg;
|
||||
|
||||
ssh_err = (int)(libssh2_session_last_error(sshc->ssh_session,
|
||||
&err_msg, NULL, 0));
|
||||
failf(conn->data, "%s", err_msg);
|
||||
state(conn, SSH_SCP_CHANNEL_FREE);
|
||||
sshc->actualcode = libssh2_session_error_to_CURLE(ssh_err);
|
||||
break;
|
||||
}
|
||||
ssh_err = (int)(libssh2_session_last_error(sshc->ssh_session,
|
||||
&err_msg, NULL, 0));
|
||||
failf(conn->data, "%s", err_msg);
|
||||
state(conn, SSH_SCP_CHANNEL_FREE);
|
||||
sshc->actualcode = libssh2_session_error_to_CURLE(ssh_err);
|
||||
break;
|
||||
}
|
||||
|
||||
/* upload data */
|
||||
|
|
@ -2509,22 +2489,22 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
#endif
|
||||
|
||||
if(!sshc->ssh_channel) {
|
||||
int ssh_err;
|
||||
char *err_msg;
|
||||
|
||||
if(libssh2_session_last_errno(sshc->ssh_session) ==
|
||||
LIBSSH2_ERROR_EAGAIN) {
|
||||
rc = LIBSSH2_ERROR_EAGAIN;
|
||||
break;
|
||||
}
|
||||
else {
|
||||
int ssh_err;
|
||||
char *err_msg;
|
||||
|
||||
ssh_err = (int)(libssh2_session_last_error(sshc->ssh_session,
|
||||
&err_msg, NULL, 0));
|
||||
failf(conn->data, "%s", err_msg);
|
||||
state(conn, SSH_SCP_CHANNEL_FREE);
|
||||
sshc->actualcode = libssh2_session_error_to_CURLE(ssh_err);
|
||||
break;
|
||||
}
|
||||
|
||||
ssh_err = (int)(libssh2_session_last_error(sshc->ssh_session,
|
||||
&err_msg, NULL, 0));
|
||||
failf(conn->data, "%s", err_msg);
|
||||
state(conn, SSH_SCP_CHANNEL_FREE);
|
||||
sshc->actualcode = libssh2_session_error_to_CURLE(ssh_err);
|
||||
break;
|
||||
}
|
||||
|
||||
/* download data */
|
||||
|
|
@ -2562,7 +2542,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
if(rc == LIBSSH2_ERROR_EAGAIN) {
|
||||
break;
|
||||
}
|
||||
else if(rc) {
|
||||
if(rc) {
|
||||
infof(data, "Failed to send libssh2 channel EOF\n");
|
||||
}
|
||||
}
|
||||
|
|
@ -2575,7 +2555,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
if(rc == LIBSSH2_ERROR_EAGAIN) {
|
||||
break;
|
||||
}
|
||||
else if(rc) {
|
||||
if(rc) {
|
||||
infof(data, "Failed to get channel EOF: %d\n", rc);
|
||||
}
|
||||
}
|
||||
|
|
@ -2588,7 +2568,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
if(rc == LIBSSH2_ERROR_EAGAIN) {
|
||||
break;
|
||||
}
|
||||
else if(rc) {
|
||||
if(rc) {
|
||||
infof(data, "Channel failed to close: %d\n", rc);
|
||||
}
|
||||
}
|
||||
|
|
@ -2601,7 +2581,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
if(rc == LIBSSH2_ERROR_EAGAIN) {
|
||||
break;
|
||||
}
|
||||
else if(rc < 0) {
|
||||
if(rc < 0) {
|
||||
infof(data, "Failed to free libssh2 scp subsystem\n");
|
||||
}
|
||||
sshc->ssh_channel = NULL;
|
||||
|
|
@ -2623,7 +2603,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
if(rc == LIBSSH2_ERROR_EAGAIN) {
|
||||
break;
|
||||
}
|
||||
else if(rc < 0) {
|
||||
if(rc < 0) {
|
||||
infof(data, "Failed to free libssh2 scp subsystem\n");
|
||||
}
|
||||
sshc->ssh_channel = NULL;
|
||||
|
|
@ -2634,7 +2614,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
if(rc == LIBSSH2_ERROR_EAGAIN) {
|
||||
break;
|
||||
}
|
||||
else if(rc < 0) {
|
||||
if(rc < 0) {
|
||||
infof(data, "Failed to disconnect libssh2 session\n");
|
||||
}
|
||||
}
|
||||
|
|
@ -2659,7 +2639,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
if(rc == LIBSSH2_ERROR_EAGAIN) {
|
||||
break;
|
||||
}
|
||||
else if(rc < 0) {
|
||||
if(rc < 0) {
|
||||
infof(data, "Failed to disconnect from libssh2 agent\n");
|
||||
}
|
||||
libssh2_agent_free(sshc->ssh_agent);
|
||||
|
|
@ -2677,7 +2657,7 @@ static CURLcode ssh_statemach_act(struct connectdata *conn, bool *block)
|
|||
if(rc == LIBSSH2_ERROR_EAGAIN) {
|
||||
break;
|
||||
}
|
||||
else if(rc < 0) {
|
||||
if(rc < 0) {
|
||||
infof(data, "Failed to free libssh2 session\n");
|
||||
}
|
||||
sshc->ssh_session = NULL;
|
||||
|
|
@ -2843,6 +2823,7 @@ static CURLcode ssh_block_statemach(struct connectdata *conn,
|
|||
while((sshc->state != SSH_STOP) && !result) {
|
||||
bool block;
|
||||
long left;
|
||||
struct timeval now = Curl_tvnow();
|
||||
|
||||
result = ssh_statemach_act(conn, &block);
|
||||
if(result)
|
||||
|
|
@ -2850,12 +2831,10 @@ static CURLcode ssh_block_statemach(struct connectdata *conn,
|
|||
|
||||
if(Curl_pgrsUpdate(conn))
|
||||
return CURLE_ABORTED_BY_CALLBACK;
|
||||
else {
|
||||
struct timeval now = Curl_tvnow();
|
||||
result = Curl_speedcheck(data, now);
|
||||
if(result)
|
||||
break;
|
||||
}
|
||||
|
||||
result = Curl_speedcheck(data, now);
|
||||
if(result)
|
||||
break;
|
||||
|
||||
left = Curl_timeleft(data, NULL, duringconnect);
|
||||
if(left < 0) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue