in tools/tftp_tester.py [0:0]
def loop(self):
finished = False
current = 0
data = self.send_and_expect(self.gen_RRQ(), TFTP.OACK, current)
oack = data.decode("ascii").split("\x00")
self.actual_blksize = int(oack[4])
while not finished:
resp = self.send_and_expect(self.gen_ACK(current), TFTP.DATA, current)
num = get_packet_num(resp)
data = get_packet_data(resp)
if num > current:
current = num
self.hash.update(data)
if len(data) < self.actual_blksize:
finished = True
# pretend the last ack was lost in transit
while -1 in self.failsend:
self.failsend.remove(-1)
time.sleep(self.timeout)
self.sock.sendto(self.gen_ACK(current), (self.server, self.port))
print("\rFinished")