tftpd: another small tweak
authorDenys Vlasenko <vda.linux@googlemail.com>
Sun, 8 Nov 2009 17:27:18 +0000 (18:27 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Sun, 8 Nov 2009 17:27:18 +0000 (18:27 +0100)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
networking/tftp.c

index eddb1486bf9eb8dd247321b773cd2216093aaadc..ef4198be8b4a2b21d2c84f9579b43e522bb1f5ab 100644 (file)
@@ -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 */
        }