A dead mirror emitted zero bytes and the fixed 3600s attempt timeout let it stall the whole chain for an hour (third occurrence tonight: 15m49s frozen at 0 bytes). select() with a 300s idle timeout now kills the attempt and moves to the next mirror; a trickling source (1 line/s Downloading updates) resets the timer and stays alive. Co-Authored-By: Claude <noreply@anthropic.com>