From 371f8d6dc34e95008358b2226475e8513e2d5267 Mon Sep 17 00:00:00 2001 From: Neil Booth Date: Sat, 16 Jan 2016 21:14:14 +0900 Subject: [PATCH] network: gracefully handle EINTR in select syscall --- lib/network.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/network.py b/lib/network.py index 3e743cbb..8c6bcfae 100644 --- a/lib/network.py +++ b/lib/network.py @@ -1,6 +1,7 @@ import time import Queue import os +import errno import sys import random import select @@ -746,7 +747,12 @@ class Network(util.DaemonThread): return rin = [i for i in self.interfaces.values()] win = [i for i in self.interfaces.values() if i.unsent_requests] - rout, wout, xout = select.select(rin, win, [], 0.1) + try: + rout, wout, xout = select.select(rin, win, [], 0.1) + except socket.error as (code, msg): + if code == errno.EINTR: + return + raise assert not xout for interface in wout: interface.send_requests()