From 6c5b48311d21ca3cddb959e3259d7eeb6d26ea11 Mon Sep 17 00:00:00 2001 From: Sarah Jamie Lewis Date: Tue, 22 Jun 2021 15:46:28 -0700 Subject: [PATCH] Only launch 1 profile handling thread per profile (on reload) --- lib.go | 2 +- utils/eventHandler.go | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/lib.go b/lib.go index c4766b1..4f52796 100644 --- a/lib.go +++ b/lib.go @@ -184,7 +184,7 @@ func ReconnectCwtchForeground() { // populate profile list peerList := application.ListPeers() for onion := range peerList { - eventHandler.Push(event.NewEvent(event.NewPeer, map[event.Field]string{event.Identity: onion, event.Created: event.False})) + eventHandler.Push(event.NewEvent(event.NewPeer, map[event.Field]string{event.Identity: onion, event.Created: event.False, "Reload": event.True})) } for onion := range peerList { diff --git a/utils/eventHandler.go b/utils/eventHandler.go index cd439f0..9d1c15c 100644 --- a/utils/eventHandler.go +++ b/utils/eventHandler.go @@ -78,7 +78,10 @@ func (eh *EventHandler) handleAppBusEvent(e *event.Event) string { onion := e.Data[event.Identity] profile := eh.app.GetPeer(e.Data[event.Identity]) log.Debug("New Peer Event: %v", e) - eh.startHandlingPeer(onion) + + if e.Data["Reload"] != event.True { + eh.startHandlingPeer(onion) + } if e.Data[event.Created] == event.True { name, _ := profile.GetAttribute(attr.GetLocalScope(constants.Name)) @@ -350,6 +353,7 @@ func (eh *EventHandler) startHandlingPeer(onion string) { } func (eh *EventHandler) forwardProfileMessages(onion string, q event.Queue) { + log.Infof("Launching Forwarding Goroutine for %v", onion) // TODO: graceful shutdown, via an injected event of special QUIT type exiting loop/go routine for { e := q.Next()