From c72735069db32c563a14a154b1d5b80039c35204 Mon Sep 17 00:00:00 2001 From: Alexander Morozov Date: Fri, 1 May 2015 13:35:54 -0700 Subject: [PATCH] Fix race in FirewalldInit It was possible that signalHandler won't start because connections is not assigned. Signed-off-by: Alexander Morozov Upstream-commit: a05bcd12c44b4daada51267d89fd9ac53812be02 Component: engine --- components/engine/pkg/iptables/firewalld.go | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/components/engine/pkg/iptables/firewalld.go b/components/engine/pkg/iptables/firewalld.go index 3087794131..1c0cddb0f0 100644 --- a/components/engine/pkg/iptables/firewalld.go +++ b/components/engine/pkg/iptables/firewalld.go @@ -2,9 +2,10 @@ package iptables import ( "fmt" + "strings" + "github.com/Sirupsen/logrus" "github.com/godbus/dbus" - "strings" ) type IPV string @@ -40,6 +41,9 @@ func FirewalldInit() { if err != nil { logrus.Errorf("Failed to connect to D-Bus system bus: %s", err) } + if connection != nil { + go signalHandler() + } firewalldRunning = checkRunning() } @@ -76,20 +80,17 @@ func (c *Conn) initConnection() error { c.signal = make(chan *dbus.Signal, 10) c.sysconn.Signal(c.signal) - go signalHandler() return nil } func signalHandler() { - if connection != nil { - for signal := range connection.signal { - if strings.Contains(signal.Name, "NameOwnerChanged") { - firewalldRunning = checkRunning() - dbusConnectionChanged(signal.Body) - } else if strings.Contains(signal.Name, "Reloaded") { - reloaded() - } + for signal := range connection.signal { + if strings.Contains(signal.Name, "NameOwnerChanged") { + firewalldRunning = checkRunning() + dbusConnectionChanged(signal.Body) + } else if strings.Contains(signal.Name, "Reloaded") { + reloaded() } } }