Better handling of extra upload requests
authorJoseph C. Lehner <joseph.c.lehner@gmail.com>
Wed, 17 Feb 2016 11:42:20 +0000 (12:42 +0100)
committerJoseph C. Lehner <joseph.c.lehner@gmail.com>
Wed, 17 Feb 2016 11:42:20 +0000 (12:42 +0100)
nmrp.c

diff --git a/nmrp.c b/nmrp.c
index f95fd57c20eeadd3cb7f0f16b91fc3b1caf75b6e..e19c843074d5d77854e75b6bf8ba492f8c96ebf7 100644 (file)
--- a/nmrp.c
+++ b/nmrp.c
@@ -349,7 +349,7 @@ int nmrp_do(struct nmrpd_args *args)
        char *filename;
        struct in_addr ipaddr, ipmask;
        time_t beg;
-       int i, status, ulreqs, expect, unexpected;
+       int i, status, ulreqs, expect, upload_ok;
        struct ethsock *sock;
        void (*sigh_orig)(int);
 
@@ -433,6 +433,7 @@ int nmrp_do(struct nmrpd_args *args)
        msg_hton(&tx.msg);
 
        i = 0;
+       upload_ok = 0;
        beg = time(NULL);
 
        while (1) {
@@ -469,9 +470,6 @@ int nmrp_do(struct nmrpd_args *args)
                if (expect != NMRP_C_NONE && rx.msg.code != expect) {
                        fprintf(stderr, "Received %s while waiting for %s!\n",
                                        msg_code_str(rx.msg.code), msg_code_str(expect));
-                       unexpected = 1;
-               } else {
-                       unexpected = 0;
                }
 
                tx.msg.code = NMRP_C_NONE;
@@ -521,7 +519,7 @@ int nmrp_do(struct nmrpd_args *args)
 
                                break;
                        case NMRP_C_TFTP_UL_REQ:
-                               if (!unexpected) {
+                               if (!upload_ok) {
                                        if (++ulreqs > 5) {
                                                printf("Bailing out after %d upload requests.\n",
                                                                ulreqs);
@@ -588,6 +586,7 @@ int nmrp_do(struct nmrpd_args *args)
 
                                if (!status) {
                                        printf("OK\nWaiting for remote to respond.\n");
+                                       upload_ok = 1;
                                        ethsock_set_timeout(sock, args->ul_timeout);
                                        expect = NMRP_C_NONE;
                                } else if (status == -2) {