More tftp fixes
authorJoseph C. Lehner <joseph.c.lehner@gmail.com>
Fri, 13 Jan 2017 10:48:21 +0000 (11:48 +0100)
committerJoseph C. Lehner <joseph.c.lehner@gmail.com>
Wed, 18 Jan 2017 12:17:42 +0000 (13:17 +0100)
tftp.c

diff --git a/tftp.c b/tftp.c
index 181fdd4ae4cfdfbdfccbdcb004bccf2ae346e32c..bf74650b42340093dcc83339b0e98f3387447f23 100644 (file)
--- a/tftp.c
+++ b/tftp.c
@@ -298,7 +298,7 @@ void sock_perror(const char *msg)
 
 inline bool tftp_is_valid_filename(const char *filename)
 {
 
 inline bool tftp_is_valid_filename(const char *filename)
 {
-       return strlen(filename) <= 500 && is_netascii(filename);
+       return strlen(filename) <= 255 && is_netascii(filename);
 }
 
 int tftp_put(struct nmrpd_args *args)
 }
 
 int tftp_put(struct nmrpd_args *args)
@@ -396,7 +396,9 @@ int tftp_put(struct nmrpd_args *args)
 
                if (timeouts || ackblock == block) {
                        if (!timeouts) {
 
                if (timeouts || ackblock == block) {
                        if (!timeouts) {
+                               // TODO: set block to 1 if ++block == 0 ?
                                ++block;
                                ++block;
+
                                pkt_mknum(tx, DATA);
                                pkt_mknum(tx + 2, block);
                                len = read(fd, tx + 4, blksize);
                                pkt_mknum(tx, DATA);
                                pkt_mknum(tx + 2, block);
                                len = read(fd, tx + 4, blksize);
@@ -440,7 +442,7 @@ int tftp_put(struct nmrpd_args *args)
                        } else if (block) {
                                fprintf(stderr, "Timeout while waiting for ACK(%d).\n", block);
                        } else {
                        } else if (block) {
                                fprintf(stderr, "Timeout while waiting for ACK(%d).\n", block);
                        } else {
-                               fprintf(stderr, "Timeout while waiting for initial reply.\n");
+                               fprintf(stderr, "Timeout while waiting for ACK(0)/OACK.\n");
                        }
                        ret = -1;
                        goto cleanup;
                        }
                        ret = -1;
                        goto cleanup;