mirror of https://github.com/wolfSSL/wolfssh.git
Put file should fail if the local file doesn't exist before trying to
open the remote file. Rearrange the Put state machine. Add an error code for SFTP_FILE_DNE.pull/134/head
parent
09bfe48615
commit
9bba844e35
|
@ -257,6 +257,9 @@ const char* GetErrorString(int err)
|
|||
case WS_SFTP_STATUS_NOT_OK:
|
||||
return "sftp status not OK";
|
||||
|
||||
case WS_SFTP_FILE_DNE:
|
||||
return "sftp file does not exist";
|
||||
|
||||
default:
|
||||
return "Unknown error code";
|
||||
}
|
||||
|
|
|
@ -6102,6 +6102,20 @@ int wolfSSH_SFTP_Put(WOLFSSH* ssh, char* from, char* to, byte resume,
|
|||
state->pOfst = (long)wolfSSH_SFTP_GetOfst(ssh, from, to);
|
||||
}
|
||||
state->handleSz = WOLFSSH_MAX_HANDLE;
|
||||
state->state = STATE_PUT_OPEN_LOCAL;
|
||||
FALL_THROUGH;
|
||||
|
||||
case STATE_PUT_OPEN_LOCAL:
|
||||
WLOG(WS_LOG_SFTP, "SFTP PUT STATE: OPEN LOCAL");
|
||||
ret = WFOPEN(&state->fl, from, "rb");
|
||||
if (ret != 0) {
|
||||
WLOG(WS_LOG_SFTP, "Unable to open input file");
|
||||
ssh->error = WS_SFTP_FILE_DNE;
|
||||
ret = WS_FATAL_ERROR;
|
||||
state->state = STATE_PUT_CLEANUP;
|
||||
continue;
|
||||
}
|
||||
state->rSz = 0;
|
||||
state->state = STATE_PUT_OPEN_REMOTE;
|
||||
FALL_THROUGH;
|
||||
|
||||
|
@ -6120,20 +6134,6 @@ int wolfSSH_SFTP_Put(WOLFSSH* ssh, char* from, char* to, byte resume,
|
|||
state->state = STATE_PUT_CLEANUP;
|
||||
continue;
|
||||
}
|
||||
state->state = STATE_PUT_OPEN_LOCAL;
|
||||
FALL_THROUGH;
|
||||
|
||||
case STATE_PUT_OPEN_LOCAL:
|
||||
WLOG(WS_LOG_SFTP, "SFTP PUT STATE: OPEN LOCAL");
|
||||
ret = WFOPEN(&state->fl, from, "rb");
|
||||
if (ret != 0) {
|
||||
WLOG(WS_LOG_SFTP, "Unable to open input file");
|
||||
ssh->error = WS_BAD_FILE_E;
|
||||
ret = WS_FATAL_ERROR;
|
||||
state->state = STATE_PUT_CLEANUP;
|
||||
continue;
|
||||
}
|
||||
state->rSz = 0;
|
||||
state->state = STATE_PUT_WRITE;
|
||||
FALL_THROUGH;
|
||||
|
||||
|
|
|
@ -100,8 +100,9 @@ enum WS_ErrorCodes {
|
|||
WS_SFTP_BAD_REQ_ID = -60, /* SFTP Bad request ID */
|
||||
WS_SFTP_BAD_REQ_TYPE = -61, /* SFTP Bad request ID */
|
||||
WS_SFTP_STATUS_NOT_OK = -62, /* SFTP Status not OK */
|
||||
WS_SFTP_FILE_DNE = -63, /* SFTP File Does Not Exist */
|
||||
|
||||
WS_LAST_E = -62 /* Update this to indicate last error */
|
||||
WS_LAST_E = -63 /* Update this to indicate last error */
|
||||
};
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue