mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-25 07:43:10 -06:00
Add prefer_direct_fetch option
This commit is contained in:
parent
43cdba9a69
commit
4ad297828b
|
|
@ -274,6 +274,11 @@ server_key_api:
|
||||||
- key_id: ed25519:a_RXGa
|
- key_id: ed25519:a_RXGa
|
||||||
public_key: l8Hft5qXKn1vfHrg3p4+W8gELQVo8N13JkluMfmn2sQ
|
public_key: l8Hft5qXKn1vfHrg3p4+W8gELQVo8N13JkluMfmn2sQ
|
||||||
|
|
||||||
|
# This option will control whether Dendrite will prefer to look up keys directly
|
||||||
|
# or whether it should try perspective servers first, using direct fetches as a
|
||||||
|
# last resort.
|
||||||
|
prefer_direct_fetch: false
|
||||||
|
|
||||||
# Configuration for the Sync API.
|
# Configuration for the Sync API.
|
||||||
sync_api:
|
sync_api:
|
||||||
internal_api:
|
internal_api:
|
||||||
|
|
|
||||||
|
|
@ -14,6 +14,9 @@ type ServerKeyAPI struct {
|
||||||
// Perspective keyservers, to use as a backup when direct key fetch
|
// Perspective keyservers, to use as a backup when direct key fetch
|
||||||
// requests don't succeed
|
// requests don't succeed
|
||||||
KeyPerspectives KeyPerspectives `yaml:"key_perspectives"`
|
KeyPerspectives KeyPerspectives `yaml:"key_perspectives"`
|
||||||
|
|
||||||
|
// Should we prefer direct key fetches over perspective ones?
|
||||||
|
PreferDirectFetch bool `yaml:"prefer_direct_fetch"`
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *ServerKeyAPI) Defaults() {
|
func (c *ServerKeyAPI) Defaults() {
|
||||||
|
|
|
||||||
|
|
@ -51,15 +51,26 @@ func NewInternalAPI(
|
||||||
ServerKeyValidity: cfg.Matrix.KeyValidityPeriod,
|
ServerKeyValidity: cfg.Matrix.KeyValidityPeriod,
|
||||||
FedClient: fedClient,
|
FedClient: fedClient,
|
||||||
OurKeyRing: gomatrixserverlib.KeyRing{
|
OurKeyRing: gomatrixserverlib.KeyRing{
|
||||||
KeyFetchers: []gomatrixserverlib.KeyFetcher{
|
KeyFetchers: []gomatrixserverlib.KeyFetcher{},
|
||||||
&gomatrixserverlib.DirectKeyFetcher{
|
|
||||||
Client: fedClient,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
KeyDatabase: serverKeyDB,
|
KeyDatabase: serverKeyDB,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
addDirectFetcher := func() {
|
||||||
|
internalAPI.OurKeyRing.KeyFetchers = append(
|
||||||
|
internalAPI.OurKeyRing.KeyFetchers,
|
||||||
|
&gomatrixserverlib.DirectKeyFetcher{
|
||||||
|
Client: fedClient,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
if cfg.PreferDirectFetch {
|
||||||
|
addDirectFetcher()
|
||||||
|
} else {
|
||||||
|
defer addDirectFetcher()
|
||||||
|
}
|
||||||
|
|
||||||
var b64e = base64.StdEncoding.WithPadding(base64.NoPadding)
|
var b64e = base64.StdEncoding.WithPadding(base64.NoPadding)
|
||||||
for _, ps := range cfg.KeyPerspectives {
|
for _, ps := range cfg.KeyPerspectives {
|
||||||
perspective := &gomatrixserverlib.PerspectiveKeyFetcher{
|
perspective := &gomatrixserverlib.PerspectiveKeyFetcher{
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue