summaryrefslogtreecommitdiff
path: root/internal/federation/handshake.go
diff options
context:
space:
mode:
authorLibravatar Tobi Smethurst <31960611+tsmethurst@users.noreply.github.com>2021-08-10 13:32:39 +0200
committerLibravatar GitHub <noreply@github.com>2021-08-10 13:32:39 +0200
commit0f2de6394a1c52d47e326bb7d7d129a217ae4f6f (patch)
treee2709bdbbbbcf5e12d6da62b653b67f1789ab1c5 /internal/federation/handshake.go
parentFrodo swaggins (#126) (diff)
downloadgotosocial-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.go75
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)
}