diff options
author | 2023-10-31 11:12:22 +0000 | |
---|---|---|
committer | 2023-10-31 11:12:22 +0000 | |
commit | ce71a5a7902963538fc54583588850563f6746cc (patch) | |
tree | 3e869eba6d25d2db5fe81184ffee595e451b3147 /internal/federation/dereferencing/dereferencer.go | |
parent | [bugfix] Relax `Mention` parsing, allowing either href or name (#2320) (diff) | |
download | gotosocial-ce71a5a7902963538fc54583588850563f6746cc.tar.xz |
[feature] add per-uri dereferencer locks (#2291)
Diffstat (limited to 'internal/federation/dereferencing/dereferencer.go')
-rw-r--r-- | internal/federation/dereferencing/dereferencer.go | 23 |
1 files changed, 8 insertions, 15 deletions
diff --git a/internal/federation/dereferencing/dereferencer.go b/internal/federation/dereferencing/dereferencer.go index a5c68bd80..5bd16c1e0 100644 --- a/internal/federation/dereferencing/dereferencer.go +++ b/internal/federation/dereferencing/dereferencer.go @@ -21,7 +21,6 @@ import ( "net/url" "sync" - "codeberg.org/gruf/go-mutexes" "github.com/superseriousbusiness/gotosocial/internal/media" "github.com/superseriousbusiness/gotosocial/internal/state" "github.com/superseriousbusiness/gotosocial/internal/transport" @@ -35,14 +34,14 @@ type Dereferencer struct { converter *typeutils.Converter transportController transport.Controller mediaManager *media.Manager - derefAvatars map[string]*media.ProcessingMedia - derefAvatarsMu mutexes.Mutex - derefHeaders map[string]*media.ProcessingMedia - derefHeadersMu mutexes.Mutex - derefEmojis map[string]*media.ProcessingEmoji - derefEmojisMu mutexes.Mutex - handshakes map[string][]*url.URL - handshakesMu sync.Mutex // mutex to lock/unlock when checking or updating the handshakes map + + // all protected by State{}.FedLocks. + derefAvatars map[string]*media.ProcessingMedia + derefHeaders map[string]*media.ProcessingMedia + derefEmojis map[string]*media.ProcessingEmoji + + handshakes map[string][]*url.URL + handshakesMu sync.Mutex } // NewDereferencer returns a Dereferencer initialized with the given parameters. @@ -61,11 +60,5 @@ func NewDereferencer( derefHeaders: make(map[string]*media.ProcessingMedia), derefEmojis: make(map[string]*media.ProcessingEmoji), handshakes: make(map[string][]*url.URL), - - // use wrapped mutexes to allow safely deferring unlock - // even when more granular locks are required (only unlocks once). - derefAvatarsMu: mutexes.WithSafety(mutexes.New()), - derefHeadersMu: mutexes.WithSafety(mutexes.New()), - derefEmojisMu: mutexes.WithSafety(mutexes.New()), } } |