[PATCH] tester: Avoid TFTP race condition

Chris Johns chrisj at rtems.org
Tue May 18 05:49:55 UTC 2021


Ok to push.

On 18/5/21 6:29 am, Kinsey Moore wrote:
> The u-boot TFTP client will fail a fully completed file retrieval if the
> final ACK gets an ICMP response that the port is unavailable which can
> occur if the port is closed before the ACK arrives from the client. This
> change causes the TFTP server to wait for the final ACK before closing
> the socket and prevents transfers from failing due to the race
> condition.
> ---
>  tester/rt/tftpserver.py | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/tester/rt/tftpserver.py b/tester/rt/tftpserver.py
> index d733301..46b594f 100644
> --- a/tester/rt/tftpserver.py
> +++ b/tester/rt/tftpserver.py
> @@ -418,8 +418,6 @@ class udp_handler(socketserver.BaseRequestHandler):
>                              ' < ' +
>                              session.decode(client_ip, client_port, response))
>                      sock.sendto(response, (client_ip, client_port))
> -                    if session.finished:
> -                        break
>                      try:
>                          data, address = sock.recvfrom(2 + 2 +
>                                                        session.get_block_size())
> @@ -438,6 +436,8 @@ class udp_handler(socketserver.BaseRequestHandler):
>                              log.trace('] tftp: %d: receive: %s: error: %s' \
>                                        % (index, client, serr))
>                          return
> +                    if session.finished:
> +                        break
>                      response = session.process(address[0], address[1], data)
>          except error.general as gerr:
>              self._notice('] tftp: %dd: error: %s' % (index, gerr))
> 


More information about the devel mailing list