aboutsummaryrefslogtreecommitdiff
path: root/roomserver/api
diff options
context:
space:
mode:
authorNeil Alexander <neilalexander@users.noreply.github.com>2020-09-24 16:18:13 +0100
committerGitHub <noreply@github.com>2020-09-24 16:18:13 +0100
commit3013ade84f65f7d255523d0beb7b721804c12ced (patch)
treeee4a3f2f4e2a6c76b7e92cd658a94894c98932c6 /roomserver/api
parenta6700331cee70a3ca04c834efdc68cc2ef63947d (diff)
Reject make_join for empty rooms (#1439)
* Sanity-check room version on RS event input * Update gomatrixserverlib * Reject make_join when no room members are left * Revert some changes from wrong branch * Distinguish between room not existing and room being abandoned on this server * nolint
Diffstat (limited to 'roomserver/api')
-rw-r--r--roomserver/api/api.go7
-rw-r--r--roomserver/api/api_trace.go10
-rw-r--r--roomserver/api/query.go16
3 files changed, 33 insertions, 0 deletions
diff --git a/roomserver/api/api.go b/roomserver/api/api.go
index 2495157a..159c1829 100644
--- a/roomserver/api/api.go
+++ b/roomserver/api/api.go
@@ -89,6 +89,13 @@ type RoomserverInternalAPI interface {
response *QueryMembershipsForRoomResponse,
) error
+ // Query if we think we're still in a room.
+ QueryServerJoinedToRoom(
+ ctx context.Context,
+ request *QueryServerJoinedToRoomRequest,
+ response *QueryServerJoinedToRoomResponse,
+ ) error
+
// Query whether a server is allowed to see an event
QueryServerAllowedToSeeEvent(
ctx context.Context,
diff --git a/roomserver/api/api_trace.go b/roomserver/api/api_trace.go
index b7accb9a..5fabbc21 100644
--- a/roomserver/api/api_trace.go
+++ b/roomserver/api/api_trace.go
@@ -134,6 +134,16 @@ func (t *RoomserverInternalAPITrace) QueryMembershipsForRoom(
return err
}
+func (t *RoomserverInternalAPITrace) QueryServerJoinedToRoom(
+ ctx context.Context,
+ req *QueryServerJoinedToRoomRequest,
+ res *QueryServerJoinedToRoomResponse,
+) error {
+ err := t.Impl.QueryServerJoinedToRoom(ctx, req, res)
+ util.GetLogger(ctx).WithError(err).Infof("QueryServerJoinedToRoom req=%+v res=%+v", js(req), js(res))
+ return err
+}
+
func (t *RoomserverInternalAPITrace) QueryServerAllowedToSeeEvent(
ctx context.Context,
req *QueryServerAllowedToSeeEventRequest,
diff --git a/roomserver/api/query.go b/roomserver/api/query.go
index 67a217c8..5d61e862 100644
--- a/roomserver/api/query.go
+++ b/roomserver/api/query.go
@@ -140,6 +140,22 @@ type QueryMembershipsForRoomResponse struct {
HasBeenInRoom bool `json:"has_been_in_room"`
}
+// QueryServerJoinedToRoomRequest is a request to QueryServerJoinedToRoom
+type QueryServerJoinedToRoomRequest struct {
+ // Server name of the server to find
+ ServerName gomatrixserverlib.ServerName `json:"server_name"`
+ // ID of the room to see if we are still joined to
+ RoomID string `json:"room_id"`
+}
+
+// QueryMembershipsForRoomResponse is a response to QueryServerJoinedToRoom
+type QueryServerJoinedToRoomResponse struct {
+ // True if the room exists on the server
+ RoomExists bool `json:"room_exists"`
+ // True if we still believe that we are participating in the room
+ IsInRoom bool `json:"is_in_room"`
+}
+
// QueryServerAllowedToSeeEventRequest is a request to QueryServerAllowedToSeeEvent
type QueryServerAllowedToSeeEventRequest struct {
// The event ID to look up invites in.