mirror of
https://github.com/isc-projects/bind9.git
synced 2026-05-28 04:34:54 -04:00
Fix the "pipelined" system test on OpenBSD
On OpenBSD, the bin/tests/system/pipelined/ans5/ans.py script does not shut down when it is sent the SIGTERM signal. What seems to be happening is that starting the UDP listening thread somehow makes the accept() calls in the script's main thread uninterruptible and thus the SIGTERM signal sent to the main thread does not get processed until a TCP connection is established with the script's TCP socket. Work around the issue by setting a timeout for operations performed on the script's TCP socket, so that each accept() call in the main thread's infinite loop returns after at most 1 second, allowing termination signals sent to the script to be processed.
This commit is contained in:
parent
95483951ce
commit
a5e90f2aa7
1 changed files with 9 additions and 5 deletions
|
|
@ -182,13 +182,17 @@ def main():
|
|||
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
|
||||
sock.bind((listenip, port))
|
||||
sock.listen(1)
|
||||
sock.settimeout(1)
|
||||
|
||||
while True:
|
||||
(clientsock, _) = sock.accept()
|
||||
log('Accepted connection from %s' % clientsock)
|
||||
thread = TCPDelayer(clientsock, serverip, port)
|
||||
thread.start()
|
||||
THREADS.append(thread)
|
||||
try:
|
||||
(clientsock, _) = sock.accept()
|
||||
log('Accepted connection from %s' % clientsock)
|
||||
thread = TCPDelayer(clientsock, serverip, port)
|
||||
thread.start()
|
||||
THREADS.append(thread)
|
||||
except socket.timeout:
|
||||
pass
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
|
|
|||
Loading…
Reference in a new issue