Commit 250f9670 authored by Daniel Stenberg's avatar Daniel Stenberg
Browse files

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.
parent ed4936fd
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -5,9 +5,16 @@
                             \___|\___/|_| \_\_____|

                                  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)
- 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.
  Bug report #1715392 (http://curl.haxx.se/bug/view.cgi?id=1715392)

Dan F (16 May 2007)
- Added support for compiling under Minix 3.1.3 using ACK.
+2 −1
Original line number Diff line number Diff line
@@ -5,7 +5,7 @@ Curl and libcurl 7.16.3
 Available command line options:           118
 Available curl_easy_setopt() options:     141
 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 contributors:                   554

@@ -44,6 +44,7 @@ This release includes the following bugfixes:
 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 TFTP connect timouts less than 5 seconds
 o improved curl -w for TFTP transfers

This release includes the following known bugs:

+6 −3
Original line number Diff line number Diff line
@@ -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:
+5 −3
Original line number Diff line number Diff line
@@ -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);
  }