code: func (runner *runner) dbusSignalHandler(bus utildbus.Connection) {
  	firewalld := bus.Object(firewalldName, firewalldPath)
  
  	for s := range runner.signal {
  		if s == nil {
  			// Unregister
  			bus.Signal(runner.signal)
  			return
  		}
  
  		switch s.Name {
  		case "org.freedesktop.DBus.NameOwnerChanged":
  			name := s.Body[0].(string)
  			newOwner := s.Body[2].(string)
  
  			if name != firewalldName || len(newOwner) == 0 {
  				continue
  			}
  
  			// FirewallD startup (specifically the part where it deletes
  			// all existing iptables rules) may not yet be complete when
  			// we get this signal, so make a dummy request to it to
  			// synchronize.
  			firewalld.Call(firewalldInterface+".getDefaultZone", 0)
  
  			runner.reload()
  		case firewalldInterface + ".Reloaded":
  			runner.reload()
  		}
  	}
  }
docs: // goroutine to listen for D-Bus signals