network: gracefully handle EINTR in select syscall

This commit is contained in:
Neil Booth 2016-01-16 21:14:14 +09:00
parent fe32d051d1
commit 371f8d6dc3
1 changed files with 7 additions and 1 deletions

View File

@ -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()