diff options
author | 2021-08-10 13:32:39 +0200 | |
---|---|---|
committer | 2021-08-10 13:32:39 +0200 | |
commit | 0f2de6394a1c52d47e326bb7d7d129a217ae4f6f (patch) | |
tree | e2709bdbbbbcf5e12d6da62b653b67f1789ab1c5 /internal/federation/handshake.go | |
parent | Frodo swaggins (#126) (diff) | |
download | gotosocial-0f2de6394a1c52d47e326bb7d7d129a217ae4f6f.tar.xz |
Dereference remote replies (#132)
* decided where to put reply dereferencing
* fiddling with dereferencing threads
* further adventures
* tidy up some stuff
* move dereferencing functionality
* a bunch of refactoring
* go fmt
* more refactoring
* bleep bloop
* docs and linting
* start implementing replies collection on gts side
* fiddling around
* allow dereferencing our replies
* lint, fmt
Diffstat (limited to 'internal/federation/handshake.go')
-rw-r--r-- | internal/federation/handshake.go | 75 |
1 files changed, 1 insertions, 74 deletions
diff --git a/internal/federation/handshake.go b/internal/federation/handshake.go index 511e3e174..47c8a6c84 100644 --- a/internal/federation/handshake.go +++ b/internal/federation/handshake.go @@ -3,78 +3,5 @@ package federation import "net/url" func (f *federator) Handshaking(username string, remoteAccountID *url.URL) bool { - f.handshakeSync.Lock() - defer f.handshakeSync.Unlock() - - if f.handshakes == nil { - // handshakes isn't even initialized yet so we can't be handshaking with anyone - return false - } - - remoteIDs, ok := f.handshakes[username] - if !ok { - // user isn't handshaking with anyone, bail - return false - } - - for _, id := range remoteIDs { - if id.String() == remoteAccountID.String() { - // we are currently handshaking with the remote account, yep - return true - } - } - - // didn't find it which means we're not handshaking - return false -} - -func (f *federator) startHandshake(username string, remoteAccountID *url.URL) { - f.handshakeSync.Lock() - defer f.handshakeSync.Unlock() - - // lazily initialize handshakes - if f.handshakes == nil { - f.handshakes = make(map[string][]*url.URL) - } - - remoteIDs, ok := f.handshakes[username] - if !ok { - // there was nothing in there yet, so just add this entry and return - f.handshakes[username] = []*url.URL{remoteAccountID} - return - } - - // add the remote ID to the slice - remoteIDs = append(remoteIDs, remoteAccountID) - f.handshakes[username] = remoteIDs -} - -func (f *federator) stopHandshake(username string, remoteAccountID *url.URL) { - f.handshakeSync.Lock() - defer f.handshakeSync.Unlock() - - if f.handshakes == nil { - return - } - - remoteIDs, ok := f.handshakes[username] - if !ok { - // there was nothing in there yet anyway so just bail - return - } - - newRemoteIDs := []*url.URL{} - for _, id := range remoteIDs { - if id.String() != remoteAccountID.String() { - newRemoteIDs = append(newRemoteIDs, id) - } - } - - if len(newRemoteIDs) == 0 { - // there are no handshakes so just remove this user entry from the map and save a few bytes - delete(f.handshakes, username) - } else { - // there are still other handshakes ongoing - f.handshakes[username] = newRemoteIDs - } + return f.dereferencer.Handshaking(username, remoteAccountID) } |