mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-20 13:23:22 -06:00
Use AuthChainProvider
This commit is contained in:
parent
3b44697b1f
commit
4298a7ac0d
|
|
@ -33,37 +33,49 @@ func (r joinContext) CheckSendJoinResponse(
|
||||||
) error {
|
) error {
|
||||||
// A list of events that we have retried, if they were not included in
|
// A list of events that we have retried, if they were not included in
|
||||||
// the auth events supplied in the send_join.
|
// the auth events supplied in the send_join.
|
||||||
retries := map[string]*gomatrixserverlib.Event{}
|
retries := map[string][]gomatrixserverlib.Event{}
|
||||||
|
|
||||||
// Define a function which we can pass to Check to retrieve missing
|
// Define a function which we can pass to Check to retrieve missing
|
||||||
// auth events inline. This greatly increases our chances of not having
|
// auth events inline. This greatly increases our chances of not having
|
||||||
// to repeat the entire set of checks just for a missing event or two.
|
// to repeat the entire set of checks just for a missing event or two.
|
||||||
missingAuth := func(eventID string, roomVersion gomatrixserverlib.RoomVersion) (*gomatrixserverlib.Event, error) {
|
missingAuth := func(roomVersion gomatrixserverlib.RoomVersion, eventIDs []string) ([]gomatrixserverlib.Event, error) {
|
||||||
if retry, ok := retries[eventID]; ok {
|
returning := []gomatrixserverlib.Event{}
|
||||||
if retry == nil {
|
|
||||||
return nil, fmt.Errorf("missingAuth: not retrying failed event ID %q", eventID)
|
// See if we have retry entries for each of the supplied event IDs.
|
||||||
|
for _, eventID := range eventIDs {
|
||||||
|
// If we've already satisfied a request for ths event ID before then
|
||||||
|
// just append the results.
|
||||||
|
if retry, ok := retries[eventID]; ok {
|
||||||
|
if retry == nil {
|
||||||
|
return nil, fmt.Errorf("missingAuth: not retrying failed event ID %q", eventID)
|
||||||
|
}
|
||||||
|
returning = append(returning, retry...)
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
return retries[eventID], nil
|
|
||||||
}
|
// Make a note of the fact that we tried to do something with this
|
||||||
// Make a note of the fact that we tried to do something with this
|
// event ID, even if we don't succeed.
|
||||||
// event ID, even if we don't succeed.
|
retries[event.EventID()] = nil
|
||||||
retries[eventID] = nil
|
|
||||||
// Try to retrieve the event from the server that sent us the send
|
// Try to retrieve the event from the server that sent us the send
|
||||||
// join response.
|
// join response.
|
||||||
tx, txerr := r.federation.GetEvent(ctx, server, eventID)
|
tx, txerr := r.federation.GetEvent(ctx, server, eventID)
|
||||||
if txerr != nil {
|
if txerr != nil {
|
||||||
return nil, fmt.Errorf("missingAuth r.federation.GetEvent: %w", txerr)
|
return nil, fmt.Errorf("missingAuth r.federation.GetEvent: %w", txerr)
|
||||||
}
|
}
|
||||||
// For each event returned, add it to the auth events.
|
|
||||||
for _, pdu := range tx.PDUs {
|
// For each event returned, add it to the auth events.
|
||||||
ev, everr := gomatrixserverlib.NewEventFromUntrustedJSON(pdu, roomVersion)
|
for _, pdu := range tx.PDUs {
|
||||||
if everr != nil {
|
ev, everr := gomatrixserverlib.NewEventFromUntrustedJSON(pdu, roomVersion)
|
||||||
return nil, fmt.Errorf("missingAuth gomatrixserverlib.NewEventFromUntrustedJSON: %w", everr)
|
if everr != nil {
|
||||||
|
return nil, fmt.Errorf("missingAuth gomatrixserverlib.NewEventFromUntrustedJSON: %w", everr)
|
||||||
|
}
|
||||||
|
returning = append(returning, ev)
|
||||||
|
retries[event.EventID()] = append(retries[event.EventID()], ev)
|
||||||
}
|
}
|
||||||
respSendJoin.AuthEvents = append(respSendJoin.AuthEvents, ev)
|
|
||||||
retries[ev.EventID()] = &ev
|
|
||||||
}
|
}
|
||||||
return retries[eventID], nil
|
|
||||||
|
return returning, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Can we expand Check here to return a list of missing auth
|
// TODO: Can we expand Check here to return a list of missing auth
|
||||||
|
|
|
||||||
2
go.mod
2
go.mod
|
|
@ -18,7 +18,7 @@ require (
|
||||||
github.com/matrix-org/go-http-js-libp2p v0.0.0-20200518170932-783164aeeda4
|
github.com/matrix-org/go-http-js-libp2p v0.0.0-20200518170932-783164aeeda4
|
||||||
github.com/matrix-org/go-sqlite3-js v0.0.0-20200522092705-bc8506ccbcf3
|
github.com/matrix-org/go-sqlite3-js v0.0.0-20200522092705-bc8506ccbcf3
|
||||||
github.com/matrix-org/gomatrix v0.0.0-20190528120928-7df988a63f26
|
github.com/matrix-org/gomatrix v0.0.0-20190528120928-7df988a63f26
|
||||||
github.com/matrix-org/gomatrixserverlib v0.0.0-20200605092912-92df423db8b1
|
github.com/matrix-org/gomatrixserverlib v0.0.0-20200605095527-c03da98710cd
|
||||||
github.com/matrix-org/naffka v0.0.0-20200422140631-181f1ee7401f
|
github.com/matrix-org/naffka v0.0.0-20200422140631-181f1ee7401f
|
||||||
github.com/matrix-org/util v0.0.0-20190711121626-527ce5ddefc7
|
github.com/matrix-org/util v0.0.0-20190711121626-527ce5ddefc7
|
||||||
github.com/mattn/go-sqlite3 v2.0.2+incompatible
|
github.com/mattn/go-sqlite3 v2.0.2+incompatible
|
||||||
|
|
|
||||||
4
go.sum
4
go.sum
|
|
@ -356,8 +356,8 @@ github.com/matrix-org/go-sqlite3-js v0.0.0-20200522092705-bc8506ccbcf3 h1:Yb+Wlf
|
||||||
github.com/matrix-org/go-sqlite3-js v0.0.0-20200522092705-bc8506ccbcf3/go.mod h1:e+cg2q7C7yE5QnAXgzo512tgFh1RbQLC0+jozuegKgo=
|
github.com/matrix-org/go-sqlite3-js v0.0.0-20200522092705-bc8506ccbcf3/go.mod h1:e+cg2q7C7yE5QnAXgzo512tgFh1RbQLC0+jozuegKgo=
|
||||||
github.com/matrix-org/gomatrix v0.0.0-20190528120928-7df988a63f26 h1:Hr3zjRsq2bhrnp3Ky1qgx/fzCtCALOoGYylh2tpS9K4=
|
github.com/matrix-org/gomatrix v0.0.0-20190528120928-7df988a63f26 h1:Hr3zjRsq2bhrnp3Ky1qgx/fzCtCALOoGYylh2tpS9K4=
|
||||||
github.com/matrix-org/gomatrix v0.0.0-20190528120928-7df988a63f26/go.mod h1:3fxX6gUjWyI/2Bt7J1OLhpCzOfO/bB3AiX0cJtEKud0=
|
github.com/matrix-org/gomatrix v0.0.0-20190528120928-7df988a63f26/go.mod h1:3fxX6gUjWyI/2Bt7J1OLhpCzOfO/bB3AiX0cJtEKud0=
|
||||||
github.com/matrix-org/gomatrixserverlib v0.0.0-20200605092912-92df423db8b1 h1:6H7xPq0h2am96DIERFWaTCTkQDYqnfU0nE5pVToOO9s=
|
github.com/matrix-org/gomatrixserverlib v0.0.0-20200605095527-c03da98710cd h1:87mjWypZO9qmHhh51ncZTkOZTdLbG4bU1gMNDW3bBH4=
|
||||||
github.com/matrix-org/gomatrixserverlib v0.0.0-20200605092912-92df423db8b1/go.mod h1:JsAzE1Ll3+gDWS9JSUHPJiiyAksvOOnGWF2nXdg4ZzU=
|
github.com/matrix-org/gomatrixserverlib v0.0.0-20200605095527-c03da98710cd/go.mod h1:JsAzE1Ll3+gDWS9JSUHPJiiyAksvOOnGWF2nXdg4ZzU=
|
||||||
github.com/matrix-org/naffka v0.0.0-20200422140631-181f1ee7401f h1:pRz4VTiRCO4zPlEMc3ESdUOcW4PXHH4Kj+YDz1XyE+Y=
|
github.com/matrix-org/naffka v0.0.0-20200422140631-181f1ee7401f h1:pRz4VTiRCO4zPlEMc3ESdUOcW4PXHH4Kj+YDz1XyE+Y=
|
||||||
github.com/matrix-org/naffka v0.0.0-20200422140631-181f1ee7401f/go.mod h1:y0oDTjZDv5SM9a2rp3bl+CU+bvTRINQsdb7YlDql5Go=
|
github.com/matrix-org/naffka v0.0.0-20200422140631-181f1ee7401f/go.mod h1:y0oDTjZDv5SM9a2rp3bl+CU+bvTRINQsdb7YlDql5Go=
|
||||||
github.com/matrix-org/util v0.0.0-20190711121626-527ce5ddefc7 h1:ntrLa/8xVzeSs8vHFHK25k0C+NV74sYMJnNSg5NoSRo=
|
github.com/matrix-org/util v0.0.0-20190711121626-527ce5ddefc7 h1:ntrLa/8xVzeSs8vHFHK25k0C+NV74sYMJnNSg5NoSRo=
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue