Browse Source

network: gracefully handle EINTR in select syscall

master
Neil Booth 10 years ago
parent
commit
371f8d6dc3
  1. 6
      lib/network.py

6
lib/network.py

@ -1,6 +1,7 @@
import time import time
import Queue import Queue
import os import os
import errno
import sys import sys
import random import random
import select import select
@ -746,7 +747,12 @@ class Network(util.DaemonThread):
return return
rin = [i for i in self.interfaces.values()] rin = [i for i in self.interfaces.values()]
win = [i for i in self.interfaces.values() if i.unsent_requests] win = [i for i in self.interfaces.values() if i.unsent_requests]
try:
rout, wout, xout = select.select(rin, win, [], 0.1) rout, wout, xout = select.select(rin, win, [], 0.1)
except socket.error as (code, msg):
if code == errno.EINTR:
return
raise
assert not xout assert not xout
for interface in wout: for interface in wout:
interface.send_requests() interface.send_requests()

Loading…
Cancel
Save