mirror of
https://github.com/curl/curl.git
synced 2026-08-24 21:43:32 +03:00
Feng Tu reported that curl -w did wrong on TFTP transfers in
bug report #1715394 (http://curl.haxx.se/bug/view.cgi?id=1715394), and the transfer-related info "variables" were indeed overwritten with zeroes wrongly and have now been adjusted. The upload size still isn't accurate.
This commit is contained in:
parent
ed4936fd30
commit
250f9670b7
4 changed files with 20 additions and 7 deletions
|
|
@ -415,8 +415,6 @@ static CURLcode tftp_rx(tftp_state_data_t *state, tftp_event_t event)
|
|||
return CURLE_TFTP_ILLEGAL; /* not really the perfect return code for
|
||||
this */
|
||||
}
|
||||
Curl_pgrsSetDownloadCounter(data,
|
||||
(curl_off_t) state->block*TFTP_BLOCKSIZE);
|
||||
return CURLE_OK;
|
||||
}
|
||||
|
||||
|
|
@ -485,6 +483,7 @@ static CURLcode tftp_tx(tftp_state_data_t *state, tftp_event_t event)
|
|||
/* Check all sbytes were sent */
|
||||
if(sbytes<0) {
|
||||
failf(data, "%s\n", Curl_strerror(state->conn, SOCKERRNO));
|
||||
return CURLE_SEND_ERROR;
|
||||
}
|
||||
break;
|
||||
|
||||
|
|
@ -497,7 +496,8 @@ static CURLcode tftp_tx(tftp_state_data_t *state, tftp_event_t event)
|
|||
if(state->retries > state->retry_max) {
|
||||
state->error = TFTP_ERR_TIMEOUT;
|
||||
state->state = TFTP_STATE_FIN;
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
/* Re-send the data packet */
|
||||
sbytes = sendto(state->sockfd, (void *)&state->spacket,
|
||||
4+state->sbytes, SEND_4TH_ARG,
|
||||
|
|
@ -506,6 +506,7 @@ static CURLcode tftp_tx(tftp_state_data_t *state, tftp_event_t event)
|
|||
/* Check all sbytes were sent */
|
||||
if(sbytes<0) {
|
||||
failf(data, "%s\n", Curl_strerror(state->conn, SOCKERRNO));
|
||||
return CURLE_SEND_ERROR;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
@ -738,6 +739,8 @@ CURLcode Curl_tftp(struct connectdata *conn, bool *done)
|
|||
state->rbytes-4);
|
||||
if(code)
|
||||
return code;
|
||||
Curl_pgrsSetDownloadCounter(data,
|
||||
(curl_off_t) state->rbytes-4);
|
||||
}
|
||||
break;
|
||||
case TFTP_EVENT_ERROR:
|
||||
|
|
|
|||
|
|
@ -1792,9 +1792,11 @@ Transfer(struct connectdata *conn)
|
|||
struct Curl_transfer_keeper *k = &data->reqdata.keep;
|
||||
bool done=FALSE;
|
||||
|
||||
if(!(conn->protocol & PROT_FILE)) {
|
||||
/* Only do this if we are not transferring FILE:, since the file: treatment
|
||||
is different*/
|
||||
if(!(conn->protocol & (PROT_FILE|PROT_TFTP))) {
|
||||
/* Only do this if we are not transferring FILE or TFTP, since those
|
||||
transfers are treated differently. They do their entire transfers in
|
||||
the DO function and just returns from this. That is ugly indeed.
|
||||
*/
|
||||
Curl_readwrite_init(conn);
|
||||
Curl_pre_readwrite(conn);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue