diff --git a/src/github.com/matrix-org/dendrite/clientapi/consumers/roomserver.go b/src/github.com/matrix-org/dendrite/clientapi/consumers/roomserver.go index 4c01cc3a5..5f3c813ff 100644 --- a/src/github.com/matrix-org/dendrite/clientapi/consumers/roomserver.go +++ b/src/github.com/matrix-org/dendrite/clientapi/consumers/roomserver.go @@ -89,9 +89,21 @@ func (s *OutputRoomEvent) onMessage(msg *sarama.ConsumerMessage) error { if ev.Type() == "m.room.member" && ev.StateKey() != nil { localpart := getLocalPart(*ev.StateKey()) roomID := ev.RoomID() - if err := s.db.SaveMembership(localpart, roomID); err != nil { + membership, err := ev.Membership() + if err != nil { return err } + switch membership { + case "join": + if err := s.db.SaveMembership(localpart, roomID); err != nil { + return err + } + case "leave": + case "ban": + if err := s.db.RemoveMembership(localpart, roomID); err != nil { + return err + } + } } return nil