1
0
mirror of https://github.com/moparisthebest/curl synced 2024-12-22 16:18:48 -05: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:
Daniel Stenberg 2007-05-18 10:32:48 +00:00
parent ed4936fd30
commit 250f9670b7
4 changed files with 20 additions and 7 deletions

View File

@ -5,9 +5,16 @@
\___|\___/|_| \_\_____| \___|\___/|_| \_\_____|
Changelog Changelog
Daniel S (18 May 2007)
- 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.
Daniel S (17 May 2007) Daniel S (17 May 2007)
- Feng Tu pointed out a division by zero error in the TFTP connect timeout - Feng Tu pointed out a division by zero error in the TFTP connect timeout
code for timeouts less than five seconds, and also provided a fix for it. code for timeouts less than five seconds, and also provided a fix for it.
Bug report #1715392 (http://curl.haxx.se/bug/view.cgi?id=1715392)
Dan F (16 May 2007) Dan F (16 May 2007)
- Added support for compiling under Minix 3.1.3 using ACK. - Added support for compiling under Minix 3.1.3 using ACK.

View File

@ -5,7 +5,7 @@ Curl and libcurl 7.16.3
Available command line options: 118 Available command line options: 118
Available curl_easy_setopt() options: 141 Available curl_easy_setopt() options: 141
Number of public functions in libcurl: 54 Number of public functions in libcurl: 54
Amount of public web site mirrors: 39 Amount of public web site mirrors: 38
Number of known libcurl bindings: 35 Number of known libcurl bindings: 35
Number of contributors: 554 Number of contributors: 554
@ -44,6 +44,7 @@ This release includes the following bugfixes:
o overwriting an uploaded file with sftp now truncates it first o overwriting an uploaded file with sftp now truncates it first
o SFTP quote commands chmod, chown, chgrp can now set a value of 0 o SFTP quote commands chmod, chown, chgrp can now set a value of 0
o TFTP connect timouts less than 5 seconds o TFTP connect timouts less than 5 seconds
o improved curl -w for TFTP transfers
This release includes the following known bugs: This release includes the following known bugs:

View File

@ -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 return CURLE_TFTP_ILLEGAL; /* not really the perfect return code for
this */ this */
} }
Curl_pgrsSetDownloadCounter(data,
(curl_off_t) state->block*TFTP_BLOCKSIZE);
return CURLE_OK; 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 */ /* Check all sbytes were sent */
if(sbytes<0) { if(sbytes<0) {
failf(data, "%s\n", Curl_strerror(state->conn, SOCKERRNO)); failf(data, "%s\n", Curl_strerror(state->conn, SOCKERRNO));
return CURLE_SEND_ERROR;
} }
break; break;
@ -497,7 +496,8 @@ static CURLcode tftp_tx(tftp_state_data_t *state, tftp_event_t event)
if(state->retries > state->retry_max) { if(state->retries > state->retry_max) {
state->error = TFTP_ERR_TIMEOUT; state->error = TFTP_ERR_TIMEOUT;
state->state = TFTP_STATE_FIN; state->state = TFTP_STATE_FIN;
} else { }
else {
/* Re-send the data packet */ /* Re-send the data packet */
sbytes = sendto(state->sockfd, (void *)&state->spacket, sbytes = sendto(state->sockfd, (void *)&state->spacket,
4+state->sbytes, SEND_4TH_ARG, 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 */ /* Check all sbytes were sent */
if(sbytes<0) { if(sbytes<0) {
failf(data, "%s\n", Curl_strerror(state->conn, SOCKERRNO)); failf(data, "%s\n", Curl_strerror(state->conn, SOCKERRNO));
return CURLE_SEND_ERROR;
} }
} }
break; break;
@ -738,6 +739,8 @@ CURLcode Curl_tftp(struct connectdata *conn, bool *done)
state->rbytes-4); state->rbytes-4);
if(code) if(code)
return code; return code;
Curl_pgrsSetDownloadCounter(data,
(curl_off_t) state->rbytes-4);
} }
break; break;
case TFTP_EVENT_ERROR: case TFTP_EVENT_ERROR:

View File

@ -1792,9 +1792,11 @@ Transfer(struct connectdata *conn)
struct Curl_transfer_keeper *k = &data->reqdata.keep; struct Curl_transfer_keeper *k = &data->reqdata.keep;
bool done=FALSE; bool done=FALSE;
if(!(conn->protocol & PROT_FILE)) { if(!(conn->protocol & (PROT_FILE|PROT_TFTP))) {
/* Only do this if we are not transferring FILE:, since the file: treatment /* Only do this if we are not transferring FILE or TFTP, since those
is different*/ 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_readwrite_init(conn);
Curl_pre_readwrite(conn); Curl_pre_readwrite(conn);
} }