summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPetr Spacek <pspacek@redhat.com>2015-08-31 17:58:07 +0200
committerMartin Basti <mbasti@redhat.com>2015-09-03 18:20:36 +0200
commitf1436c4ed89e96312d65e648e0b4ee47fa3a21a4 (patch)
treedb6f0dd5c1dee207e3443b143dbdb498acff263f
parente7a876d88a0ed07de69d9654ebdbf8ebb7bda364 (diff)
downloadfreeipa-f1436c4ed89e96312d65e648e0b4ee47fa3a21a4.tar.gz
freeipa-f1436c4ed89e96312d65e648e0b4ee47fa3a21a4.tar.xz
freeipa-f1436c4ed89e96312d65e648e0b4ee47fa3a21a4.zip
DNSSEC: prevent ipa-ods-exporter from looping after service auto-restart
It might happen that systemd will restart the service even if there is no incomming connection to service socket. In that case we want to exit because HSM synchronization is done before socket.accept() and we want to synchronize HSM and DNS zones at the same time. https://fedorahosted.org/freeipa/ticket/5273 Reviewed-By: Martin Basti <mbasti@redhat.com> Reviewed-By: Oleg Fayans <ofayans@redhat.com>
-rwxr-xr-xdaemons/dnssec/ipa-ods-exporter6
1 files changed, 6 insertions, 0 deletions
diff --git a/daemons/dnssec/ipa-ods-exporter b/daemons/dnssec/ipa-ods-exporter
index 49be502d2..13dd2ced1 100755
--- a/daemons/dnssec/ipa-ods-exporter
+++ b/daemons/dnssec/ipa-ods-exporter
@@ -26,6 +26,7 @@ import logging
import os
import subprocess
import socket
+import select
import sys
import systemd.daemon
import systemd.journal
@@ -347,7 +348,12 @@ def receive_systemd_command(log):
raise KeyError('Exactly one socket is expected.')
sck = socket.fromfd(fds[0], socket.AF_UNIX, socket.SOCK_STREAM)
+ rlist, wlist, xlist = select.select([sck], [], [], 0)
+ if not rlist:
+ log.critical('socket activation did not return socket with a command')
+ sys.exit(0)
+ log.debug('accepting new connection')
conn, addr = sck.accept()
log.debug('accepted new connection %s', repr(conn))