net: tftp: Avoid sending extra ack on completion
authorRamon Fried <rfried.dev@gmail.com>
Wed, 3 Feb 2021 19:28:59 +0000 (21:28 +0200)
committerTom Rini <trini@konsulko.com>
Thu, 18 Feb 2021 13:20:34 +0000 (08:20 -0500)
in tftpboot, if ack was already sent previously for this
packet, don't send again.

Fixes: cc6b87ecaa96 ("net: tftp: Add client support for RFC 7440")

Reported-by: Suneel Garapati <suneelglinux@gmail.com>
Signed-off-by: Ramon Fried <rfried.dev@gmail.com>
Tested-by: Suneel Garapati <suneelglinux@gmail.com>
Tested-by: Oliver Graute <oliver.graute@kococonnector.com>
net/tftp.c

index d8cb121..00ab7ca 100644 (file)
@@ -669,6 +669,12 @@ static void tftp_handler(uchar *pkt, unsigned dest, struct in_addr sip,
                        break;
                }
 
+               if (len < tftp_block_size) {
+                       tftp_send();
+                       tftp_complete();
+                       break;
+               }
+
                /*
                 *      Acknowledge the block just received, which will prompt
                 *      the remote for the next one.
@@ -677,11 +683,6 @@ static void tftp_handler(uchar *pkt, unsigned dest, struct in_addr sip,
                        tftp_send();
                        tftp_next_ack += tftp_windowsize;
                }
-
-               if (len < tftp_block_size) {
-                       tftp_send();
-                       tftp_complete();
-               }
                break;
 
        case TFTP_ERROR: