"""Double Ctrl-C must exit even while the daemon RPC is stalled.""" import os,signal,socket,subprocess,tempfile,threading,queue from pathlib import Path BINARY=Path(__file__).resolve().parents[1]/'target/debug/grokboy' for stalled in (False,True): with tempfile.TemporaryDirectory(prefix='gb-interrupt-',dir='/tmp') as root: server=socket.socket(socket.AF_UNIX);server.bind(root+'/service.sock');server.listen() peers=[];stop=threading.Event() def serve(): while not stop.is_set(): try:peer,_=server.accept() except OSError:return peers.append(peer) if not stalled: peer.recv(65536);peer.sendall(b'{"events":[],"ok":true}\n');peer.close() threading.Thread(target=serve,daemon=True).start() p=subprocess.Popen([str(BINARY),'agent','--name','test'],env={**os.environ,'GROKBOY_DATA_DIR':root},stdin=subprocess.PIPE,stdout=subprocess.PIPE,stderr=subprocess.PIPE,text=True) lines=queue.Queue();threading.Thread(target=lambda:[lines.put(l) for l in p.stderr],daemon=True).start() try: import time deadline=time.monotonic()+5 while not peers and time.monotonic()