From a4c04d8f50071f86e5bc1fbcfa8c0b8e30ef6ece Mon Sep 17 00:00:00 2001 From: Milos Gajdos Date: Thu, 26 Sep 2019 12:45:10 +0100 Subject: [PATCH] Only emit Update event if a route was updated/added --- router/table.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/router/table.go b/router/table.go index 18995266..ecef0c62 100644 --- a/router/table.go +++ b/router/table.go @@ -87,7 +87,7 @@ func (t *table) Delete(r Route) error { } delete(t.routes[service], sum) - log.Debugf("Router emitting %s for route: %s", Update, r.Address) + log.Debugf("Router emitting %s for route: %s", Delete, r.Address) go t.sendEvent(&Event{Type: Delete, Timestamp: time.Now(), Route: r}) return nil @@ -106,9 +106,15 @@ func (t *table) Update(r Route) error { t.routes[service] = make(map[uint64]Route) } + if _, ok := t.routes[service][sum]; !ok { + t.routes[service][sum] = r + log.Debugf("Router emitting %s for route: %s", Update, r.Address) + go t.sendEvent(&Event{Type: Update, Timestamp: time.Now(), Route: r}) + return nil + } + + // just update the route, but dont emit Update event t.routes[service][sum] = r - log.Debugf("Router emitting %s for route: %s", Update, r.Address) - go t.sendEvent(&Event{Type: Update, Timestamp: time.Now(), Route: r}) return nil }