mirror of
https://git.FreeBSD.org/src.git
synced 2024-11-24 07:40:52 +00:00
79c342aaf8
The tftpd tests all follow the same pattern: 1. open a UDP socket, 2. fork a child to exec tftpd, which subsequently handles requests on the socket, 3. use a client socket to send some message to the tftpd daemon. However, tftpd's first action is to mark its socket as non-blocking and then read a request from it. If no data is present in the socket, tftpd exits immediately with an error. So, there is a race; we often see tftpd test timeouts when running tests in parallel. These timeouts also arise periodically in CI runs. One solution is to restructure each test to create the server socket, then write the request to the client socket, then fork tftpd. This closes the race. However, this involves a lot of churn. This patch fixes the problem a different way, by adding a new -b flag to tftpd which makes it block to read the initial request. Each test is modified to use -b, closing the race. Reviewed by: imp, asomers MFC after: 2 weeks Differential Revision: https://reviews.freebsd.org/D47404 |
||
---|---|---|
.. | ||
tests | ||
Makefile | ||
Makefile.depend | ||
Makefile.depend.options | ||
tftp-file.c | ||
tftp-file.h | ||
tftp-io.c | ||
tftp-io.h | ||
tftp-options.c | ||
tftp-options.h | ||
tftp-transfer.c | ||
tftp-transfer.h | ||
tftp-utils.c | ||
tftp-utils.h | ||
tftpd.8 | ||
tftpd.c |