diff --git a/daemons/ganeti-confd b/daemons/ganeti-confd index 8cf896a0c1b6e9db252bcc981b48506f81561792..b1696d658b35aaba43f1d6b27e887c1f0ac424a3 100755 --- a/daemons/ganeti-confd +++ b/daemons/ganeti-confd @@ -33,6 +33,7 @@ import asyncore import socket import pyinotify import time +import errno from optparse import OptionParser @@ -77,7 +78,15 @@ class ConfdAsyncUDPServer(asyncore.dispatcher): # this method is overriding an asyncore.dispatcher method def handle_read(self): try: - payload_in, address = self.recvfrom(4096) + try: + payload_in, address = self.recvfrom(4096) + except socket.error, err: + if err.errno == errno.EINTR: + # we got a signal while trying to read. no need to do anything, + # handle_read will be called again if there is data on the socket. + return + else: + raise ip, port = address payload_out = self.processor.ExecQuery(payload_in, ip, port) if payload_out is not None: