From ab61c877019475d59fe0c8437cea539fca63af94 Mon Sep 17 00:00:00 2001 From: Juan Font Date: Thu, 12 Aug 2021 21:53:37 +0200 Subject: [PATCH] Also notify peers when deleting ephemerals --- app.go | 1 + machine.go | 23 +++++++++++++++++++++++ namespaces.go | 20 +------------------- 3 files changed, 25 insertions(+), 19 deletions(-) diff --git a/app.go b/app.go index f58cccc4..fcf287f7 100644 --- a/app.go +++ b/app.go @@ -135,6 +135,7 @@ func (h *Headscale) expireEphemeralNodesWorker() { if err != nil { log.Error().Err(err).Str("machine", m.Name).Msg("🤮 Cannot delete ephemeral machine from the database") } + h.notifyChangesToPeers(&m) } } } diff --git a/machine.go b/machine.go index 4c7e5945..81208a83 100644 --- a/machine.go +++ b/machine.go @@ -238,3 +238,26 @@ func (m *Machine) GetHostInfo() (*tailcfg.Hostinfo, error) { } return &hostinfo, nil } + +func (h *Headscale) notifyChangesToPeers(m *Machine) error { + peers, _ := h.getPeers(*m) + for _, p := range *peers { + pUp, ok := h.clientsPolling.Load(uint64(p.ID)) + if ok { + log.Info(). + Str("func", "notifyChangesToPeers"). + Str("machine", m.Name). + Str("peer", m.Name). + Str("address", p.Addresses[0].String()). + Msgf("Notifying peer %s (%s)", p.Name, p.Addresses[0]) + pUp.(chan []byte) <- []byte{} + } else { + log.Info(). + Str("func", "notifyChangesToPeers"). + Str("machine", m.Name). + Str("peer", m.Name). + Msgf("Peer %s does not appear to be polling", p.Name) + } + } + return nil +} diff --git a/namespaces.go b/namespaces.go index 9b8d1904..ff9eeacc 100644 --- a/namespaces.go +++ b/namespaces.go @@ -169,25 +169,7 @@ func (h *Headscale) checkForNamespacesPendingUpdates() { continue } for _, m := range *machines { - peers, _ := h.getPeers(m) - for _, p := range *peers { - pUp, ok := h.clientsPolling.Load(uint64(p.ID)) - if ok { - log.Info(). - Str("func", "checkForNamespacesPendingUpdates"). - Str("machine", m.Name). - Str("peer", m.Name). - Str("address", p.Addresses[0].String()). - Msgf("Notifying peer %s (%s)", p.Name, p.Addresses[0]) - pUp.(chan []byte) <- []byte{} - } else { - log.Info(). - Str("func", "checkForNamespacesPendingUpdates"). - Str("machine", m.Name). - Str("peer", m.Name). - Msgf("Peer %s does not appear to be polling", p.Name) - } - } + h.notifyChangesToPeers(&m) } } newV, err := h.getValue("namespaces_pending_updates")