mirror of
https://github.com/curl/curl.git
synced 2026-07-27 18:18:54 +03:00
lib: unify recv/send function signatures
cfilter/conn: change send/recv function signatures. Unify the calling/return conventions in our send/receive handling. Curl_conn_recv(), adjust pnread type Parameter `pnread` was a `ssize_t *`, but `size_t *` is better since the function returns any error in its `CURLcode` return value. Closes #17546
This commit is contained in:
parent
3934431421
commit
20c90ba298
37 changed files with 1114 additions and 1219 deletions
|
|
@ -220,37 +220,35 @@ static void wssh_state(struct Curl_easy *data,
|
|||
sshc->state = nowstate;
|
||||
}
|
||||
|
||||
static ssize_t wscp_send(struct Curl_easy *data, int sockindex,
|
||||
const void *mem, size_t len, bool eos,
|
||||
CURLcode *err)
|
||||
static CURLcode wscp_send(struct Curl_easy *data, int sockindex,
|
||||
const void *mem, size_t len, bool eos,
|
||||
size_t *pnwritten)
|
||||
{
|
||||
ssize_t nwrite = 0;
|
||||
(void)data;
|
||||
(void)sockindex; /* we only support SCP on the fixed known primary socket */
|
||||
(void)mem;
|
||||
(void)len;
|
||||
(void)eos;
|
||||
(void)err;
|
||||
|
||||
return nwrite;
|
||||
*pnwritten = 0;
|
||||
return CURLE_OK;
|
||||
}
|
||||
|
||||
static ssize_t wscp_recv(struct Curl_easy *data, int sockindex,
|
||||
char *mem, size_t len, CURLcode *err)
|
||||
static CURLcode wscp_recv(struct Curl_easy *data, int sockindex,
|
||||
char *mem, size_t len, size_t *pnread)
|
||||
{
|
||||
ssize_t nread = 0;
|
||||
(void)data;
|
||||
(void)sockindex; /* we only support SCP on the fixed known primary socket */
|
||||
(void)mem;
|
||||
(void)len;
|
||||
(void)err;
|
||||
*pnread = 0;
|
||||
|
||||
return nread;
|
||||
return CURLE_OK;
|
||||
}
|
||||
|
||||
/* return number of sent bytes */
|
||||
static ssize_t wsftp_send(struct Curl_easy *data, int sockindex,
|
||||
const void *mem, size_t len, bool eos, CURLcode *err)
|
||||
static CURLcode wsftp_send(struct Curl_easy *data, int sockindex,
|
||||
const void *mem, size_t len, bool eos,
|
||||
size_t *pnwritten)
|
||||
{
|
||||
struct connectdata *conn = data->conn;
|
||||
struct ssh_conn *sshc = Curl_conn_meta_get(conn, CURL_META_SSH_CONN);
|
||||
|
|
@ -259,10 +257,10 @@ static ssize_t wsftp_send(struct Curl_easy *data, int sockindex,
|
|||
(void)sockindex;
|
||||
(void)eos;
|
||||
|
||||
if(!sshc) {
|
||||
*err = CURLE_FAILED_INIT;
|
||||
return -1;
|
||||
}
|
||||
*pnwritten = 0;
|
||||
if(!sshc)
|
||||
return CURLE_FAILED_INIT;
|
||||
|
||||
offset[0] = (word32)sshc->offset & 0xFFFFFFFF;
|
||||
offset[1] = (word32)(sshc->offset >> 32) & 0xFFFFFFFF;
|
||||
|
||||
|
|
@ -275,31 +273,30 @@ static ssize_t wsftp_send(struct Curl_easy *data, int sockindex,
|
|||
rc = wolfSSH_get_error(sshc->ssh_session);
|
||||
if(rc == WS_WANT_READ) {
|
||||
conn->waitfor = KEEP_RECV;
|
||||
*err = CURLE_AGAIN;
|
||||
return -1;
|
||||
return CURLE_AGAIN;
|
||||
}
|
||||
else if(rc == WS_WANT_WRITE) {
|
||||
conn->waitfor = KEEP_SEND;
|
||||
*err = CURLE_AGAIN;
|
||||
return -1;
|
||||
return CURLE_AGAIN;
|
||||
}
|
||||
if(rc < 0) {
|
||||
failf(data, "wolfSSH_SFTP_SendWritePacket returned %d", rc);
|
||||
return -1;
|
||||
return CURLE_SEND_ERROR;
|
||||
}
|
||||
DEBUGASSERT(rc == (int)len);
|
||||
*pnwritten = (size_t)rc;
|
||||
sshc->offset += *pnwritten;
|
||||
infof(data, "sent %zu bytes SFTP from offset %" FMT_OFF_T,
|
||||
len, sshc->offset);
|
||||
sshc->offset += len;
|
||||
return (ssize_t)rc;
|
||||
*pnwritten, sshc->offset);
|
||||
return CURLE_OK;
|
||||
}
|
||||
|
||||
/*
|
||||
* Return number of received (decrypted) bytes
|
||||
* or <0 on error
|
||||
*/
|
||||
static ssize_t wsftp_recv(struct Curl_easy *data, int sockindex,
|
||||
char *mem, size_t len, CURLcode *err)
|
||||
static CURLcode wsftp_recv(struct Curl_easy *data, int sockindex,
|
||||
char *mem, size_t len, size_t *pnread)
|
||||
{
|
||||
int rc;
|
||||
struct connectdata *conn = data->conn;
|
||||
|
|
@ -307,10 +304,10 @@ static ssize_t wsftp_recv(struct Curl_easy *data, int sockindex,
|
|||
word32 offset[2];
|
||||
(void)sockindex;
|
||||
|
||||
if(!sshc) {
|
||||
*err = CURLE_FAILED_INIT;
|
||||
return -1;
|
||||
}
|
||||
*pnread = 0;
|
||||
if(!sshc)
|
||||
return CURLE_FAILED_INIT;
|
||||
|
||||
offset[0] = (word32)sshc->offset & 0xFFFFFFFF;
|
||||
offset[1] = (word32)(sshc->offset >> 32) & 0xFFFFFFFF;
|
||||
|
||||
|
|
@ -322,24 +319,22 @@ static ssize_t wsftp_recv(struct Curl_easy *data, int sockindex,
|
|||
rc = wolfSSH_get_error(sshc->ssh_session);
|
||||
if(rc == WS_WANT_READ) {
|
||||
conn->waitfor = KEEP_RECV;
|
||||
*err = CURLE_AGAIN;
|
||||
return -1;
|
||||
return CURLE_AGAIN;
|
||||
}
|
||||
else if(rc == WS_WANT_WRITE) {
|
||||
conn->waitfor = KEEP_SEND;
|
||||
*err = CURLE_AGAIN;
|
||||
return -1;
|
||||
return CURLE_AGAIN;
|
||||
}
|
||||
|
||||
DEBUGASSERT(rc <= (int)len);
|
||||
|
||||
if(rc < 0) {
|
||||
failf(data, "wolfSSH_SFTP_SendReadPacket returned %d", rc);
|
||||
return -1;
|
||||
return CURLE_RECV_ERROR;
|
||||
}
|
||||
sshc->offset += len;
|
||||
|
||||
return (ssize_t)rc;
|
||||
*pnread = (size_t)rc;
|
||||
sshc->offset += *pnread;
|
||||
return CURLE_OK;
|
||||
}
|
||||
|
||||
static void wssh_easy_dtor(void *key, size_t klen, void *entry)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue