From c79b1294eeea8ecce6b400d44e82022eeb0ef233 Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Mon, 4 May 2020 16:42:01 +0100 Subject: [PATCH] Fix bugs --- federationapi/routing/leave.go | 14 +++++++++++++- federationsender/internal/perform.go | 5 +---- roomserver/internal/perform_leave.go | 12 +++++++----- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/federationapi/routing/leave.go b/federationapi/routing/leave.go index 1124bfa27..bab3fd0b5 100644 --- a/federationapi/routing/leave.go +++ b/federationapi/routing/leave.go @@ -33,6 +33,15 @@ func MakeLeave( rsAPI api.RoomserverInternalAPI, roomID, userID string, ) util.JSONResponse { + verReq := api.QueryRoomVersionForRoomRequest{RoomID: roomID} + verRes := api.QueryRoomVersionForRoomResponse{} + if err := rsAPI.QueryRoomVersionForRoom(httpReq.Context(), &verReq, &verRes); err != nil { + return util.JSONResponse{ + Code: http.StatusInternalServerError, + JSON: jsonerror.InternalServerError(), + } + } + _, domain, err := gomatrixserverlib.SplitID('@', userID) if err != nil { return util.JSONResponse{ @@ -87,7 +96,10 @@ func MakeLeave( return util.JSONResponse{ Code: http.StatusOK, - JSON: map[string]interface{}{"event": builder}, + JSON: map[string]interface{}{ + "room_version": verRes.RoomVersion, + "event": builder, + }, } } diff --git a/federationsender/internal/perform.go b/federationsender/internal/perform.go index 5d998b8d3..7b9fbedd5 100644 --- a/federationsender/internal/perform.go +++ b/federationsender/internal/perform.go @@ -193,11 +193,8 @@ func (r *FederationSenderInternalAPI) PerformLeave( // Work out if we support the room version that has been supplied in // the make_leave response. - if respMakeLeave.RoomVersion == "" { - respMakeLeave.RoomVersion = gomatrixserverlib.RoomVersionV1 - } if _, err = respMakeLeave.RoomVersion.EventFormat(); err != nil { - return fmt.Errorf("respMakeLeave.RoomVersion.EventFormat: %w", err) + return gomatrixserverlib.UnsupportedRoomVersionError{} } // Build the leave event. diff --git a/roomserver/internal/perform_leave.go b/roomserver/internal/perform_leave.go index 65e429bb2..e9ac1e7ab 100644 --- a/roomserver/internal/perform_leave.go +++ b/roomserver/internal/perform_leave.go @@ -155,9 +155,6 @@ func (r *RoomserverInternalAPI) performRejectInvite( return fmt.Errorf("fsAPI.PerformLeave: %w", err) } - // If this succeeded then we can clean up the invite. - fmt.Println("REMOVE THE INVITE!") - return nil } @@ -189,14 +186,19 @@ func (r *RoomserverInternalAPI) isInvitePending( if err != nil { return "", fmt.Errorf("r.DB.GetInvitesForUser: %w", err) } - fmt.Println("Sender user NIDs:", senderUserNIDs) + if len(senderUserNIDs) == 0 { + return "", fmt.Errorf("no senderUserNIDs") + } // Look up the user ID from the NID. senderUsers, err := r.DB.EventStateKeys(ctx, senderUserNIDs) if err != nil { return "", fmt.Errorf("r.DB.EventStateKeys: %w", err) } - fmt.Println("Sender users:", senderUsers) + if len(senderUsers) == 0 { + return "", fmt.Errorf("no senderUsers") + } + senderUser, senderUserFound := senderUsers[senderUserNIDs[0]] if !senderUserFound { return "", fmt.Errorf("missing user for NID %d (%+v)", senderUserNIDs[0], senderUsers)