diff options
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/tftp.c | 9 | 
1 files changed, 7 insertions, 2 deletions
| diff --git a/lib/tftp.c b/lib/tftp.c index 0a1dc59bd..fe55e9dfc 100644 --- a/lib/tftp.c +++ b/lib/tftp.c @@ -443,7 +443,7 @@ static CURLcode tftp_send_first(tftp_state_data_t *state, tftp_event_t event)    size_t sbytes;    const char *mode = "octet";    char *filename; -  char buf[8]; +  char buf[64];    struct SessionHandle *data = state->conn->data;    CURLcode res = CURLE_OK; @@ -489,11 +489,16 @@ static CURLcode tftp_send_first(tftp_state_data_t *state, tftp_event_t event)      sbytes = 4 + strlen(filename) + strlen(mode);      /* add tsize option */ +    if(data->set.upload && (data->set.infilesize != -1)) +      snprintf( buf, sizeof(buf), "%" FORMAT_OFF_T, data->set.infilesize ); +    else +      strcpy(buf, "0"); /* the destination is large enough */ +      sbytes += tftp_option_add(state, sbytes,                                (char *)state->spacket.data+sbytes,                                TFTP_OPTION_TSIZE);      sbytes += tftp_option_add(state, sbytes, -                              (char *)state->spacket.data+sbytes, "0"); +                              (char *)state->spacket.data+sbytes, buf);      /* add blksize option */      snprintf( buf, sizeof(buf), "%d", state->requested_blksize );      sbytes += tftp_option_add(state, sbytes, | 
