NET-613 TFTPClient assumes that lastBlock == 0 only once
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/net/trunk@1782372 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index d29c94a..96d0c96 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -87,6 +87,9 @@
The POP3Mail examples can now get password from console, stdin or an environment variable.
">
+ <action issue="NET-613" type="fix" dev="sebb">
+ TFTPClient assumes that lastBlock == 0 only once
+ </action>
<action issue="NET-320" type="fix" dev="sebb" due-to="Kevin Bulebush">
Allow TFTPServer.java to bind to a specific network adapter
</action>
diff --git a/src/main/java/org/apache/commons/net/tftp/TFTPClient.java b/src/main/java/org/apache/commons/net/tftp/TFTPClient.java
index 23ceb3e..c554f1c 100644
--- a/src/main/java/org/apache/commons/net/tftp/TFTPClient.java
+++ b/src/main/java/org/apache/commons/net/tftp/TFTPClient.java
@@ -163,6 +163,7 @@
beginBufferedOps();
+ boolean justStarted = true;
try {
do { // while more data to fetch
bufferedSend(sent); // start the fetch/send an ack
@@ -175,8 +176,8 @@
// answering host address (for hosts with multiple IPs)
final int recdPort = received.getPort();
final InetAddress recdAddress = received.getAddress();
- if (lastBlock == 0)
- {
+ if (justStarted) {
+ justStarted = false;
if (recdPort == port) { // must not use the control port here
TFTPErrorPacket error = new TFTPErrorPacket(recdAddress,
recdPort, TFTPErrorPacket.UNKNOWN_TID,