diff --git a/networking/tftp.c b/networking/tftp.c index eddb1486b..ef4198be8 100644 --- a/networking/tftp.c +++ b/networking/tftp.c @@ -743,7 +743,7 @@ int tftpd_main(int argc UNUSED_PARAM, char **argv) const char *error_msg; int opt, result, opcode; IF_FEATURE_TFTP_BLOCKSIZE(int blksize = TFTP_BLKSIZE_DEFAULT;) - IF_FEATURE_TFTP_BLOCKSIZE(int want_transfer_size = 0;) + IF_FEATURE_TFTP_BLOCKSIZE(int want_transfer_size;) INIT_G(); @@ -791,6 +791,7 @@ int tftpd_main(int argc UNUSED_PARAM, char **argv) goto err; } # if ENABLE_FEATURE_TFTP_BLOCKSIZE + want_transfer_size = 0; { char *res; char *opt_str = mode + sizeof("octet"); @@ -805,8 +806,10 @@ int tftpd_main(int argc UNUSED_PARAM, char **argv) goto do_proto; } } + if (opcode != TFTP_WRQ /* download? */ /* did client ask us about file size? */ - if (tftp_get_option("tsize", opt_str, opt_len)) { + && tftp_get_option("tsize", opt_str, opt_len) + ) { want_transfer_size = 1; } } @@ -821,7 +824,6 @@ int tftpd_main(int argc UNUSED_PARAM, char **argv) goto err; } IF_GETPUT(option_mask32 |= TFTP_OPT_GET;) /* will receive file's data */ - want_transfer_size = 0; /* do not send file size, it's meaningless */ } else { IF_GETPUT(option_mask32 |= TFTP_OPT_PUT;) /* will send file's data */ }