--- TFTPClient.java.original 2004-12-28 15:02:37.235997984 +0200 +++ TFTPClient.java.patched 2004-12-28 15:09:14.516602152 +0200 @@ -372,6 +372,7 @@ dataLength = lastBlock = hostPort = bytesRead = 0; block = 0; + boolean lastAckWait = false; if (mode == TFTP.ASCII_MODE) input = new ToNetASCIIInputStream(input); @@ -455,7 +456,10 @@ if (lastBlock == block) { ++block; - break _receivePacket; + if (lastAckWait) + break _sendPacket; + else + break _receivePacket; } else { @@ -501,9 +505,8 @@ data.setData(_sendBuffer, 4, offset - 4); sent = data; } - while (dataLength == 0); + while (dataLength == 0 || lastAckWait); - bufferedSend(sent); endBufferedOps(); }