From 4a08331675bb7465983ad5ea865e7cc637d8de69 Mon Sep 17 00:00:00 2001 From: Sarah Jamie Lewis Date: Wed, 7 Aug 2019 11:12:15 -0700 Subject: [PATCH] Issue a PeerAuth event when attempting to peer to an existing authed connection --- protocol/connections/engine.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/protocol/connections/engine.go b/protocol/connections/engine.go index 04189ae..f6a6a26 100644 --- a/protocol/connections/engine.go +++ b/protocol/connections/engine.go @@ -4,6 +4,7 @@ import ( "cwtch.im/cwtch/event" "cwtch.im/cwtch/protocol" "cwtch.im/tapir" + "cwtch.im/tapir/applications" "cwtch.im/tapir/networks/tor" "errors" "git.openprivacy.ca/openprivacy/libricochet-go/connectivity" @@ -175,6 +176,19 @@ func (e *engine) peerWithOnion(onion string) { if !blocked { e.ignoreOnShutdown(e.peerConnecting)(onion) connected, err := e.service.Connect(onion, e.createPeerTemplate()) + + // If we are already connected...check if we are authed and issue an auth event + // (This allows the ui to be stateless) + if connected && err != nil { + conn, err := e.service.GetConnection(onion) + if err == nil { + if conn.HasCapability(applications.AuthCapability) { + e.ignoreOnShutdown(e.peerAuthed)(onion) + return + } + } + } + // Only issue a disconnected error if we are disconnected (Connect will fail if a connection already exists) if !connected && err != nil { e.ignoreOnShutdown(e.peerDisconnected)(onion)