From 4d7b155256b40e39be13cb2310943f7810e697ef Mon Sep 17 00:00:00 2001 From: Sarah Jamie Lewis Date: Thu, 29 Oct 2020 14:51:59 -0700 Subject: [PATCH] Add Leave Server Event --- event/common.go | 3 +++ protocol/connections/engine.go | 8 ++++++++ 2 files changed, 11 insertions(+) diff --git a/event/common.go b/event/common.go index 610bdc1..ffe6a8a 100644 --- a/event/common.go +++ b/event/common.go @@ -30,6 +30,9 @@ const ( // GroupServer JoinServer = Type("JoinServer") + // attributes GroupServer - the onion of the server to leave + LeaveServer = Type("LeaveServer") + ProtocolEngineStartListen = Type("ProtocolEngineStartListen") ProtocolEngineStopped = Type("ProtocolEngineStopped") diff --git a/protocol/connections/engine.go b/protocol/connections/engine.go index 4f03336..386f3fd 100644 --- a/protocol/connections/engine.go +++ b/protocol/connections/engine.go @@ -80,6 +80,7 @@ func NewProtocolEngine(identity primitives.Identity, privateKey ed25519.PrivateK engine.eventManager.Subscribe(event.RetryPeerRequest, engine.queue) engine.eventManager.Subscribe(event.InvitePeerToGroup, engine.queue) engine.eventManager.Subscribe(event.JoinServer, engine.queue) + engine.eventManager.Subscribe(event.LeaveServer, engine.queue) engine.eventManager.Subscribe(event.SendMessageToGroup, engine.queue) engine.eventManager.Subscribe(event.SendMessageToPeer, engine.queue) engine.eventManager.Subscribe(event.SendGetValMessageToPeer, engine.queue) @@ -127,6 +128,13 @@ func (e *engine) eventHandler() { e.sendMessageToPeer(ev.EventID, ev.Data[event.RemotePeer], event.ContextInvite, []byte(ev.Data[event.GroupInvite])) case event.JoinServer: e.peerWithTokenServer(ev.Data[event.GroupServer], ev.Data[event.ServerTokenOnion], ev.Data[event.ServerTokenY]) + case event.LeaveServer: + es, ok := e.ephemeralServices.Load(ev.Data[event.GroupServer]) + if ok { + ephemeralService := es.(tapir.Service) + ephemeralService.Shutdown() + e.ephemeralServices.Delete(ev.Data[event.GroupServer]) + } case event.DeleteContact: onion := ev.Data[event.RemotePeer] // We remove this peer from out blocklist which will prevent them from contacting us if we have "block unknown peers" turned on.