mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-26 08:13:09 -06:00
Use stripped state not room version
This commit is contained in:
parent
04f9a43f14
commit
1177c6eb01
|
|
@ -22,7 +22,7 @@ type FederationClient interface {
|
||||||
GetEvent(ctx context.Context, s gomatrixserverlib.ServerName, eventID string) (res gomatrixserverlib.Transaction, err error)
|
GetEvent(ctx context.Context, s gomatrixserverlib.ServerName, eventID string) (res gomatrixserverlib.Transaction, err error)
|
||||||
GetServerKeys(ctx context.Context, matrixServer gomatrixserverlib.ServerName) (gomatrixserverlib.ServerKeys, error)
|
GetServerKeys(ctx context.Context, matrixServer gomatrixserverlib.ServerName) (gomatrixserverlib.ServerKeys, error)
|
||||||
MSC2836EventRelationships(ctx context.Context, dst gomatrixserverlib.ServerName, r gomatrixserverlib.MSC2836EventRelationshipsRequest, roomVersion gomatrixserverlib.RoomVersion) (res gomatrixserverlib.MSC2836EventRelationshipsResponse, err error)
|
MSC2836EventRelationships(ctx context.Context, dst gomatrixserverlib.ServerName, r gomatrixserverlib.MSC2836EventRelationshipsRequest, roomVersion gomatrixserverlib.RoomVersion) (res gomatrixserverlib.MSC2836EventRelationshipsResponse, err error)
|
||||||
MSC2946Spaces(ctx context.Context, dst gomatrixserverlib.ServerName, roomID string, r gomatrixserverlib.MSC2946SpacesRequest, roomVersion gomatrixserverlib.RoomVersion) (res gomatrixserverlib.MSC2946SpacesResponse, err error)
|
MSC2946Spaces(ctx context.Context, dst gomatrixserverlib.ServerName, roomID string, r gomatrixserverlib.MSC2946SpacesRequest) (res gomatrixserverlib.MSC2946SpacesResponse, err error)
|
||||||
LookupServerKeys(ctx context.Context, s gomatrixserverlib.ServerName, keyRequests map[gomatrixserverlib.PublicKeyLookupRequest]gomatrixserverlib.Timestamp) ([]gomatrixserverlib.ServerKeys, error)
|
LookupServerKeys(ctx context.Context, s gomatrixserverlib.ServerName, keyRequests map[gomatrixserverlib.PublicKeyLookupRequest]gomatrixserverlib.Timestamp) ([]gomatrixserverlib.ServerKeys, error)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -247,12 +247,11 @@ func (a *FederationSenderInternalAPI) MSC2836EventRelationships(
|
||||||
|
|
||||||
func (a *FederationSenderInternalAPI) MSC2946Spaces(
|
func (a *FederationSenderInternalAPI) MSC2946Spaces(
|
||||||
ctx context.Context, s gomatrixserverlib.ServerName, roomID string, r gomatrixserverlib.MSC2946SpacesRequest,
|
ctx context.Context, s gomatrixserverlib.ServerName, roomID string, r gomatrixserverlib.MSC2946SpacesRequest,
|
||||||
roomVersion gomatrixserverlib.RoomVersion,
|
|
||||||
) (res gomatrixserverlib.MSC2946SpacesResponse, err error) {
|
) (res gomatrixserverlib.MSC2946SpacesResponse, err error) {
|
||||||
ctx, cancel := context.WithTimeout(ctx, time.Minute)
|
ctx, cancel := context.WithTimeout(ctx, time.Minute)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
ires, err := a.doRequest(s, func() (interface{}, error) {
|
ires, err := a.doRequest(s, func() (interface{}, error) {
|
||||||
return a.federation.MSC2946Spaces(ctx, s, roomID, r, roomVersion)
|
return a.federation.MSC2946Spaces(ctx, s, roomID, r)
|
||||||
})
|
})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return res, err
|
return res, err
|
||||||
|
|
|
||||||
|
|
@ -452,26 +452,23 @@ func (h *httpFederationSenderInternalAPI) MSC2836EventRelationships(
|
||||||
}
|
}
|
||||||
|
|
||||||
type spacesReq struct {
|
type spacesReq struct {
|
||||||
S gomatrixserverlib.ServerName
|
S gomatrixserverlib.ServerName
|
||||||
Req gomatrixserverlib.MSC2946SpacesRequest
|
Req gomatrixserverlib.MSC2946SpacesRequest
|
||||||
RoomID string
|
RoomID string
|
||||||
RoomVer gomatrixserverlib.RoomVersion
|
Res gomatrixserverlib.MSC2946SpacesResponse
|
||||||
Res gomatrixserverlib.MSC2946SpacesResponse
|
Err *api.FederationClientError
|
||||||
Err *api.FederationClientError
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (h *httpFederationSenderInternalAPI) MSC2946Spaces(
|
func (h *httpFederationSenderInternalAPI) MSC2946Spaces(
|
||||||
ctx context.Context, dst gomatrixserverlib.ServerName, roomID string, r gomatrixserverlib.MSC2946SpacesRequest,
|
ctx context.Context, dst gomatrixserverlib.ServerName, roomID string, r gomatrixserverlib.MSC2946SpacesRequest,
|
||||||
roomVersion gomatrixserverlib.RoomVersion,
|
|
||||||
) (res gomatrixserverlib.MSC2946SpacesResponse, err error) {
|
) (res gomatrixserverlib.MSC2946SpacesResponse, err error) {
|
||||||
span, ctx := opentracing.StartSpanFromContext(ctx, "MSC2946Spaces")
|
span, ctx := opentracing.StartSpanFromContext(ctx, "MSC2946Spaces")
|
||||||
defer span.Finish()
|
defer span.Finish()
|
||||||
|
|
||||||
request := spacesReq{
|
request := spacesReq{
|
||||||
S: dst,
|
S: dst,
|
||||||
Req: r,
|
Req: r,
|
||||||
RoomID: roomID,
|
RoomID: roomID,
|
||||||
RoomVer: roomVersion,
|
|
||||||
}
|
}
|
||||||
var response spacesReq
|
var response spacesReq
|
||||||
apiURL := h.federationSenderURL + FederationSenderSpacesSummaryPath
|
apiURL := h.federationSenderURL + FederationSenderSpacesSummaryPath
|
||||||
|
|
|
||||||
|
|
@ -336,7 +336,7 @@ func AddRoutes(intAPI api.FederationSenderInternalAPI, internalAPIMux *mux.Route
|
||||||
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
if err := json.NewDecoder(req.Body).Decode(&request); err != nil {
|
||||||
return util.MessageResponse(http.StatusBadRequest, err.Error())
|
return util.MessageResponse(http.StatusBadRequest, err.Error())
|
||||||
}
|
}
|
||||||
res, err := intAPI.MSC2946Spaces(req.Context(), request.S, request.RoomID, request.Req, request.RoomVer)
|
res, err := intAPI.MSC2946Spaces(req.Context(), request.S, request.RoomID, request.Req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
ferr, ok := err.(*api.FederationClientError)
|
ferr, ok := err.(*api.FederationClientError)
|
||||||
if ok {
|
if ok {
|
||||||
|
|
|
||||||
2
go.mod
2
go.mod
|
|
@ -22,7 +22,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-20200827122206-7dd5e2a05bcd
|
github.com/matrix-org/gomatrix v0.0.0-20200827122206-7dd5e2a05bcd
|
||||||
github.com/matrix-org/gomatrixserverlib v0.0.0-20210115152401-7c4619994337
|
github.com/matrix-org/gomatrixserverlib v0.0.0-20210119115951-bd57c7cff614
|
||||||
github.com/matrix-org/naffka v0.0.0-20200901083833-bcdd62999a91
|
github.com/matrix-org/naffka v0.0.0-20200901083833-bcdd62999a91
|
||||||
github.com/matrix-org/util v0.0.0-20200807132607-55161520e1d4
|
github.com/matrix-org/util v0.0.0-20200807132607-55161520e1d4
|
||||||
github.com/mattn/go-sqlite3 v1.14.2
|
github.com/mattn/go-sqlite3 v1.14.2
|
||||||
|
|
|
||||||
2
go.sum
2
go.sum
|
|
@ -571,6 +571,8 @@ github.com/matrix-org/gomatrixserverlib v0.0.0-20210115150839-9ba5f3e11086 h1:nf
|
||||||
github.com/matrix-org/gomatrixserverlib v0.0.0-20210115150839-9ba5f3e11086/go.mod h1:JsAzE1Ll3+gDWS9JSUHPJiiyAksvOOnGWF2nXdg4ZzU=
|
github.com/matrix-org/gomatrixserverlib v0.0.0-20210115150839-9ba5f3e11086/go.mod h1:JsAzE1Ll3+gDWS9JSUHPJiiyAksvOOnGWF2nXdg4ZzU=
|
||||||
github.com/matrix-org/gomatrixserverlib v0.0.0-20210115152401-7c4619994337 h1:HJ9iH00PwMDaXsH7vWpO7nRucz+d92QLoH0PNW7hs58=
|
github.com/matrix-org/gomatrixserverlib v0.0.0-20210115152401-7c4619994337 h1:HJ9iH00PwMDaXsH7vWpO7nRucz+d92QLoH0PNW7hs58=
|
||||||
github.com/matrix-org/gomatrixserverlib v0.0.0-20210115152401-7c4619994337/go.mod h1:JsAzE1Ll3+gDWS9JSUHPJiiyAksvOOnGWF2nXdg4ZzU=
|
github.com/matrix-org/gomatrixserverlib v0.0.0-20210115152401-7c4619994337/go.mod h1:JsAzE1Ll3+gDWS9JSUHPJiiyAksvOOnGWF2nXdg4ZzU=
|
||||||
|
github.com/matrix-org/gomatrixserverlib v0.0.0-20210119115951-bd57c7cff614 h1:X5FP1YOiGmPfpK4IAc8KyX8lOW4nC81/YZPTbOWAyKs=
|
||||||
|
github.com/matrix-org/gomatrixserverlib v0.0.0-20210119115951-bd57c7cff614/go.mod h1:JsAzE1Ll3+gDWS9JSUHPJiiyAksvOOnGWF2nXdg4ZzU=
|
||||||
github.com/matrix-org/naffka v0.0.0-20200901083833-bcdd62999a91 h1:HJ6U3S3ljJqNffYMcIeAncp5qT/i+ZMiJ2JC2F0aXP4=
|
github.com/matrix-org/naffka v0.0.0-20200901083833-bcdd62999a91 h1:HJ6U3S3ljJqNffYMcIeAncp5qT/i+ZMiJ2JC2F0aXP4=
|
||||||
github.com/matrix-org/naffka v0.0.0-20200901083833-bcdd62999a91/go.mod h1:sjyPyRxKM5uw1nD2cJ6O2OxI6GOqyVBfNXqKjBZTBZE=
|
github.com/matrix-org/naffka v0.0.0-20200901083833-bcdd62999a91/go.mod h1:sjyPyRxKM5uw1nD2cJ6O2OxI6GOqyVBfNXqKjBZTBZE=
|
||||||
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=
|
||||||
|
|
|
||||||
|
|
@ -271,11 +271,14 @@ func (w *walker) walk() *gomatrixserverlib.MSC2946SpacesResponse {
|
||||||
if w.rootRoomID == roomID {
|
if w.rootRoomID == roomID {
|
||||||
for _, ev := range refs.events() {
|
for _, ev := range refs.events() {
|
||||||
if !w.alreadySent(ev.EventID()) {
|
if !w.alreadySent(ev.EventID()) {
|
||||||
res.Events = append(res.Events, ev.Event)
|
strip := stripped(ev.Event)
|
||||||
|
if strip == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
res.Events = append(res.Events, *strip)
|
||||||
uniqueRooms[ev.RoomID()] = true
|
uniqueRooms[ev.RoomID()] = true
|
||||||
uniqueRooms[SpaceTarget(ev)] = true
|
uniqueRooms[SpaceTarget(ev)] = true
|
||||||
w.markSent(ev.EventID())
|
w.markSent(ev.EventID())
|
||||||
res.SetRoomVersion(ev.RoomVersion)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -297,7 +300,11 @@ func (w *walker) walk() *gomatrixserverlib.MSC2946SpacesResponse {
|
||||||
if w.roomIsExcluded(ev.RoomID()) {
|
if w.roomIsExcluded(ev.RoomID()) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
res.Events = append(res.Events, ev.Event)
|
strip := stripped(ev.Event)
|
||||||
|
if strip == nil {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
res.Events = append(res.Events, *strip)
|
||||||
uniqueRooms[ev.RoomID()] = true
|
uniqueRooms[ev.RoomID()] = true
|
||||||
uniqueRooms[SpaceTarget(ev)] = true
|
uniqueRooms[SpaceTarget(ev)] = true
|
||||||
w.markSent(ev.EventID())
|
w.markSent(ev.EventID())
|
||||||
|
|
@ -479,3 +486,16 @@ func (el eventLookup) events() (events []*gomatrixserverlib.HeaderedEvent) {
|
||||||
}
|
}
|
||||||
|
|
||||||
type set map[string]bool
|
type set map[string]bool
|
||||||
|
|
||||||
|
func stripped(ev *gomatrixserverlib.Event) *gomatrixserverlib.MSC2946StrippedEvent {
|
||||||
|
if ev.StateKey() == nil {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return &gomatrixserverlib.MSC2946StrippedEvent{
|
||||||
|
Type: ev.Type(),
|
||||||
|
StateKey: *ev.StateKey(),
|
||||||
|
Content: ev.Content(),
|
||||||
|
Sender: ev.Sender(),
|
||||||
|
RoomID: ev.RoomID(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -326,7 +326,6 @@ func postSpaces(t *testing.T, expectCode int, accessToken, roomID string, req *g
|
||||||
}
|
}
|
||||||
if res.StatusCode == 200 {
|
if res.StatusCode == 200 {
|
||||||
var result gomatrixserverlib.MSC2946SpacesResponse
|
var result gomatrixserverlib.MSC2946SpacesResponse
|
||||||
result.SetRoomVersion(roomVer)
|
|
||||||
body, err := ioutil.ReadAll(res.Body)
|
body, err := ioutil.ReadAll(res.Body)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatalf("response 200 OK but failed to read response body: %s", err)
|
t.Fatalf("response 200 OK but failed to read response body: %s", err)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue