Adjust tftp_put return values
authorJoseph C. Lehner <joseph.c.lehner@gmail.com>
Mon, 8 Feb 2016 10:55:25 +0000 (11:55 +0100)
committerJoseph C. Lehner <joseph.c.lehner@gmail.com>
Mon, 8 Feb 2016 10:55:25 +0000 (11:55 +0100)
nmrp.c
tftp.c

diff --git a/nmrp.c b/nmrp.c
index 7eda8704c26874e9a8af6d1686d9c4971c17a556..77ed6470ee14c6547295b2448ede5ba6b3af4ef9 100644 (file)
--- a/nmrp.c
+++ b/nmrp.c
@@ -436,8 +436,9 @@ int nmrp_do(struct nmrpd_args *args)
                                        printf("OK\nWaiting for remote to respond.\n");
                                        ethsock_set_timeout(sock, args->ul_timeout);
                                        expect = NMRP_C_CLOSE_REQ;
+                               } else if (err == -2) {
+                                       expect = NMRP_C_TFTP_UL_REQ;
                                } else {
-                                       printf("\n");
                                        goto out;
                                }
 
diff --git a/tftp.c b/tftp.c
index ffeff2b19d536910425b2163524f4d16356a04a2..bb9bdb116465a6910123857e4db9d62bfea5ecd7 100644 (file)
--- a/tftp.c
+++ b/tftp.c
@@ -149,12 +149,12 @@ static ssize_t tftp_recvfrom(int sock, char *pkt, uint16_t* port,
                 * at offset 0. The limit of 32 chars is arbitrary.
                 */
                fprintf(stderr, "Error: %.32s\n", pkt);
-               return -3;
+               return -2;
        } else if (!opcode || opcode > ERR) {
                fprintf(stderr, "Received invalid packet: ");
                pkt_print(pkt, stderr);
                fprintf(stderr, ".\n");
-               return -2;
+               return -1;
        }
 
        if (verbosity > 2) {
@@ -307,8 +307,12 @@ int tftp_put(struct nmrpd_args *args)
                } else if (!ret) {
                        if (++timeout < 5) {
                                continue;
+                       } 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(%d).\n", block);
+                       ret = -1;
                        goto cleanup;
                } else {
                        timeout = 0;