From b33c6c77dd9ce06c7349a490a7602f769e06c15f Mon Sep 17 00:00:00 2001 From: Sarah Jamie Lewis Date: Tue, 22 Jun 2021 15:34:46 -0700 Subject: [PATCH 1/4] Remove Unused Map --- utils/eventHandler.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/utils/eventHandler.go b/utils/eventHandler.go index 978fb49..cd439f0 100644 --- a/utils/eventHandler.go +++ b/utils/eventHandler.go @@ -23,11 +23,10 @@ type EventHandler struct { app app.Application appBusQueue event.Queue profileEvents chan EventProfileEnvelope - profileQueues map[string]event.Queue } func NewEventHandler() *EventHandler { - eh := &EventHandler{app: nil, appBusQueue: event.NewQueue(), profileQueues: make(map[string]event.Queue), profileEvents: make(chan EventProfileEnvelope)} + eh := &EventHandler{app: nil, appBusQueue: event.NewQueue(), profileEvents: make(chan EventProfileEnvelope)} return eh } @@ -345,7 +344,6 @@ func (eh *EventHandler) startHandlingPeer(onion string) { eventBus.Subscribe(event.ChangePasswordError, q) eventBus.Subscribe(event.NewRetValMessageFromPeer, q) eventBus.Subscribe(event.SetAttribute, q) - eh.profileQueues[onion] = q go eh.forwardProfileMessages(onion, q) @@ -357,6 +355,9 @@ func (eh *EventHandler) forwardProfileMessages(onion string, q event.Queue) { e := q.Next() ev := EventProfileEnvelope{Event: e, Profile: onion} eh.profileEvents <- ev + if ev.Event.EventType == event.Shutdown { + return + } } } From 6c5b48311d21ca3cddb959e3259d7eeb6d26ea11 Mon Sep 17 00:00:00 2001 From: Sarah Jamie Lewis Date: Tue, 22 Jun 2021 15:46:28 -0700 Subject: [PATCH 2/4] 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() From b2d8f3f34ae296e3a5f7c3242773a827fa3d76a2 Mon Sep 17 00:00:00 2001 From: Sarah Jamie Lewis Date: Tue, 22 Jun 2021 16:56:53 -0700 Subject: [PATCH 3/4] Reconnect Fix --- lib.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib.go b/lib.go index 4f52796..1296341 100644 --- a/lib.go +++ b/lib.go @@ -1,6 +1,6 @@ -//package cwtch +package cwtch -package main +//package main import "C" import ( @@ -735,4 +735,4 @@ func ShutdownCwtch() { } // Leave as is, needed by ffi -func main() {} +//func main() {} From a460b900b6d1338a99e2d4aceca6b71d91ff2d82 Mon Sep 17 00:00:00 2001 From: Sarah Jamie Lewis Date: Tue, 22 Jun 2021 16:58:01 -0700 Subject: [PATCH 4/4] Reset --- lib.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib.go b/lib.go index 1296341..4f52796 100644 --- a/lib.go +++ b/lib.go @@ -1,6 +1,6 @@ -package cwtch +//package cwtch -//package main +package main import "C" import ( @@ -735,4 +735,4 @@ func ShutdownCwtch() { } // Leave as is, needed by ffi -//func main() {} +func main() {}