@@ -68,10 +68,16 @@ func OnIncomingMessagesRequest(
6868 var err error
6969
7070 // check if the user has already forgotten about this room
71- isForgotten , err := checkIsRoomForgotten (req .Context (), roomID , device .UserID , rsAPI )
71+ isForgotten , roomExists , err := checkIsRoomForgotten (req .Context (), roomID , device .UserID , rsAPI )
7272 if err != nil {
7373 return jsonerror .InternalServerError ()
7474 }
75+ if ! roomExists {
76+ return util.JSONResponse {
77+ Code : http .StatusForbidden ,
78+ JSON : jsonerror .Forbidden ("room does not exist" ),
79+ }
80+ }
7581
7682 if isForgotten {
7783 return util.JSONResponse {
@@ -244,17 +250,17 @@ func OnIncomingMessagesRequest(
244250 }
245251}
246252
247- func checkIsRoomForgotten (ctx context.Context , roomID , userID string , rsAPI api.SyncRoomserverAPI ) (bool , error ) {
253+ func checkIsRoomForgotten (ctx context.Context , roomID , userID string , rsAPI api.SyncRoomserverAPI ) (forgotten bool , exists bool , err error ) {
248254 req := api.QueryMembershipForUserRequest {
249255 RoomID : roomID ,
250256 UserID : userID ,
251257 }
252258 resp := api.QueryMembershipForUserResponse {}
253259 if err := rsAPI .QueryMembershipForUser (ctx , & req , & resp ); err != nil {
254- return false , err
260+ return false , false , err
255261 }
256262
257- return resp .IsRoomForgotten , nil
263+ return resp .IsRoomForgotten , resp . RoomExists , nil
258264}
259265
260266// retrieveEvents retrieves events from the local database for a request on
0 commit comments