From b50694eb8f41da280608626ab3f730338eac4c72 Mon Sep 17 00:00:00 2001 From: Neil Alexander Date: Wed, 3 Mar 2021 16:44:06 +0000 Subject: [PATCH] More logical naming, clean up a bit --- clientapi/routing/createroom.go | 4 +-- clientapi/routing/directory.go | 9 ++++-- federationapi/routing/query.go | 9 ++++-- roomserver/api/alias.go | 6 ++-- roomserver/internal/alias.go | 35 +++++++++++---------- roomserver/internal/perform/perform_join.go | 4 +-- 6 files changed, 38 insertions(+), 29 deletions(-) diff --git a/clientapi/routing/createroom.go b/clientapi/routing/createroom.go index 0e3299115..2d8867466 100644 --- a/clientapi/routing/createroom.go +++ b/clientapi/routing/createroom.go @@ -217,8 +217,8 @@ func createRoom( roomAlias = fmt.Sprintf("#%s:%s", r.RoomAliasName, cfg.Matrix.ServerName) // check it's free TODO: This races but is better than nothing hasAliasReq := roomserverAPI.GetRoomIDForAliasRequest{ - Alias: roomAlias, - ShouldHitAppservice: false, + Alias: roomAlias, + IncludeAppservices: false, } var aliasResp roomserverAPI.GetRoomIDForAliasResponse diff --git a/clientapi/routing/directory.go b/clientapi/routing/directory.go index 2fddba94d..0e994b645 100644 --- a/clientapi/routing/directory.go +++ b/clientapi/routing/directory.go @@ -61,9 +61,12 @@ func DirectoryRoom( var res roomDirectoryResponse // Query the roomserver API to check if the alias exists locally. - queryReq := roomserverAPI.GetRoomIDForAliasRequest{Alias: roomAlias, ShouldHitAppservice: true} - var queryRes roomserverAPI.GetRoomIDForAliasResponse - if err = rsAPI.GetRoomIDForAlias(req.Context(), &queryReq, &queryRes); err != nil { + queryReq := &roomserverAPI.GetRoomIDForAliasRequest{ + Alias: roomAlias, + IncludeAppservices: true, + } + queryRes := &roomserverAPI.GetRoomIDForAliasResponse{} + if err = rsAPI.GetRoomIDForAlias(req.Context(), queryReq, queryRes); err != nil { util.GetLogger(req.Context()).WithError(err).Error("rsAPI.GetRoomIDForAlias failed") return jsonerror.InternalServerError() } diff --git a/federationapi/routing/query.go b/federationapi/routing/query.go index ea4fff147..b4158f0cd 100644 --- a/federationapi/routing/query.go +++ b/federationapi/routing/query.go @@ -53,9 +53,12 @@ func RoomAliasToID( var resp gomatrixserverlib.RespDirectory if domain == cfg.Matrix.ServerName { - queryReq := roomserverAPI.GetRoomIDForAliasRequest{Alias: roomAlias, ShouldHitAppservice: true} - var queryRes roomserverAPI.GetRoomIDForAliasResponse - if err = rsAPI.GetRoomIDForAlias(httpReq.Context(), &queryReq, &queryRes); err != nil { + queryReq := &roomserverAPI.GetRoomIDForAliasRequest{ + Alias: roomAlias, + IncludeAppservices: true, + } + queryRes := &roomserverAPI.GetRoomIDForAliasResponse{} + if err = rsAPI.GetRoomIDForAlias(httpReq.Context(), queryReq, queryRes); err != nil { util.GetLogger(httpReq.Context()).WithError(err).Error("aliasAPI.GetRoomIDForAlias failed") return jsonerror.InternalServerError() } diff --git a/roomserver/api/alias.go b/roomserver/api/alias.go index 2a7049069..2eb911293 100644 --- a/roomserver/api/alias.go +++ b/roomserver/api/alias.go @@ -33,8 +33,10 @@ type SetRoomAliasResponse struct { // GetRoomIDForAliasRequest is a request to GetRoomIDForAlias type GetRoomIDForAliasRequest struct { // Alias we want to lookup - Alias string `json:"alias"` - ShouldHitAppservice bool `json:"shouldHitAppservice"` + Alias string `json:"alias"` + // Should we ask appservices for their aliases as a part of + // the request? + IncludeAppservices bool `json:"include_appservices"` } // GetRoomIDForAliasResponse is a response to GetRoomIDForAlias diff --git a/roomserver/internal/alias.go b/roomserver/internal/alias.go index e620c5a7f..f15881d75 100644 --- a/roomserver/internal/alias.go +++ b/roomserver/internal/alias.go @@ -93,25 +93,26 @@ func (r *RoomserverInternalAPI) GetRoomIDForAlias( return nil } - // Check appservice on err - if r.asAPI != nil && request.ShouldHitAppservice { // appservice component is wired in - if roomID == "" { - // No room found locally, try our application services by making a call to - // the appservice component - aliasReq := asAPI.RoomAliasExistsRequest{Alias: request.Alias} - var aliasResp asAPI.RoomAliasExistsResponse - if err = r.asAPI.RoomAliasExists(ctx, &aliasReq, &aliasResp); err != nil { + // Check appservice on err, but only if the appservice API is + // wired in and no room ID was found. + if r.asAPI != nil && request.IncludeAppservices && roomID == "" { + // No room found locally, try our application services by making a call to + // the appservice component + aliasReq := &asAPI.RoomAliasExistsRequest{ + Alias: request.Alias, + } + aliasRes := &asAPI.RoomAliasExistsResponse{} + if err = r.asAPI.RoomAliasExists(ctx, aliasReq, aliasRes); err != nil { + return err + } + + if aliasRes.AliasExists { + roomID, err = r.DB.GetRoomIDForAlias(ctx, request.Alias) + if err != nil { return err } - - if aliasResp.AliasExists { - roomID, err = r.DB.GetRoomIDForAlias(ctx, request.Alias) - if err != nil { - return err - } - response.RoomID = roomID - return nil - } + response.RoomID = roomID + return nil } } diff --git a/roomserver/internal/perform/perform_join.go b/roomserver/internal/perform/perform_join.go index 8a3f90c84..ada584a8c 100644 --- a/roomserver/internal/perform/perform_join.go +++ b/roomserver/internal/perform/perform_join.go @@ -124,8 +124,8 @@ func (r *Joiner) performJoinRoomByAlias( req.ServerNames = append(req.ServerNames, dirRes.ServerNames...) } else { var getRoomReq = rsAPI.GetRoomIDForAliasRequest{ - Alias: req.RoomIDOrAlias, - ShouldHitAppservice: true, + Alias: req.RoomIDOrAlias, + IncludeAppservices: true, } var getRoomRes = rsAPI.GetRoomIDForAliasResponse{} // Otherwise, look up if we know this room alias locally.