diff --git a/scapy.py b/scapy.py index 82450d872f48ab40a8f1bd98bcce7b0c46b12700..11f49ac332ae552737cd44b366bc3fab27686e98 100755 --- a/scapy.py +++ b/scapy.py @@ -11866,7 +11866,7 @@ class TFTP_WRQ_server(Automaton): @ATMT.state(initial=1) def BEGIN(self): self.blksize=512 - self.blk=0 + self.blk=1 self.filedata="" self.my_tid = self.sport or random.randint(10000,65500) bind_bottom_up(UDP, TFTP, dport=self.my_tid) @@ -11897,8 +11897,13 @@ class TFTP_WRQ_server(Automaton): @ATMT.state() def WAIT_DATA(self): - self.blk += 1 + pass + @ATMT.timeout(WAIT_DATA, 1) + def resend_ack(self): + self.send(self.last_packet) + raise self.WAIT_DATA() + @ATMT.receive_condition(WAIT_DATA) def receive_data(self, pkt): if TFTP_DATA in pkt: @@ -11916,6 +11921,7 @@ class TFTP_WRQ_server(Automaton): self.filedata += data.load if len(data.load) < self.blksize: raise self.END() + self.blk += 1 raise self.WAIT_DATA() @ATMT.state(final=1)