diff --git a/federationapi/routing/join.go b/federationapi/routing/join.go index bfa1ba8b8..f0784e604 100644 --- a/federationapi/routing/join.go +++ b/federationapi/routing/join.go @@ -65,7 +65,13 @@ func MakeJoin( } createJoinTemplate := func(proto *gomatrixserverlib.ProtoEvent) (gomatrixserverlib.PDU, []gomatrixserverlib.PDU, error) { - identity, signErr := cfg.Matrix.SigningIdentityFor(request.Destination()) + // TODO: remove this once the join dance understands pseudo IDs + var dummyUserID *spec.UserID + dummyUserID, err = spec.NewUserID(fmt.Sprintf("@dummy:%s", request.Destination()), true) + if err != nil { + return nil, nil, err + } + identity, signErr := rsAPI.SigningIdentityFor(httpReq.Context(), roomID, *dummyUserID) if signErr != nil { util.GetLogger(httpReq.Context()).WithError(signErr).Errorf("obtaining signing identity for %s failed", request.Destination()) return nil, nil, spec.NotFound(fmt.Sprintf("Server name %q does not exist", request.Destination())) @@ -74,7 +80,7 @@ func MakeJoin( queryRes := api.QueryLatestEventsAndStateResponse{ RoomVersion: roomVersion, } - event, signErr := eventutil.QueryAndBuildEvent(httpReq.Context(), proto, identity, time.Now(), rsAPI, &queryRes) + event, signErr := eventutil.QueryAndBuildEvent(httpReq.Context(), proto, &identity, time.Now(), rsAPI, &queryRes) switch e := signErr.(type) { case nil: case eventutil.ErrRoomNoExists: diff --git a/federationapi/routing/leave.go b/federationapi/routing/leave.go index 5c8dd00f3..3806341b3 100644 --- a/federationapi/routing/leave.go +++ b/federationapi/routing/leave.go @@ -59,14 +59,20 @@ func MakeLeave( } createLeaveTemplate := func(proto *gomatrixserverlib.ProtoEvent) (gomatrixserverlib.PDU, []gomatrixserverlib.PDU, error) { - identity, signErr := cfg.Matrix.SigningIdentityFor(request.Destination()) + // TODO: remove this once the leave dance understands pseudo IDs + var dummyUserID *spec.UserID + dummyUserID, err = spec.NewUserID(fmt.Sprintf("@dummy:%s", request.Destination()), true) + if err != nil { + return nil, nil, err + } + identity, signErr := rsAPI.SigningIdentityFor(httpReq.Context(), roomID, *dummyUserID) if signErr != nil { util.GetLogger(httpReq.Context()).WithError(signErr).Errorf("obtaining signing identity for %s failed", request.Destination()) return nil, nil, spec.NotFound(fmt.Sprintf("Server name %q does not exist", request.Destination())) } queryRes := api.QueryLatestEventsAndStateResponse{} - event, buildErr := eventutil.QueryAndBuildEvent(httpReq.Context(), proto, identity, time.Now(), rsAPI, &queryRes) + event, buildErr := eventutil.QueryAndBuildEvent(httpReq.Context(), proto, &identity, time.Now(), rsAPI, &queryRes) switch e := buildErr.(type) { case nil: case eventutil.ErrRoomNoExists: