diff --git a/CHANGELOG.md b/CHANGELOG.md index 3695e97db1282b9c2600398387602d584f15bd8a..7cfbbd3a4e39e099ce8fc0c2e55b47a83f86344d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,6 +14,7 @@ The format is based on [keep a changelog](http://keepachangelog.com) and this pr - Do not use absolute path for `tini` executable in default container entry point. - Faster validation of JSON object input payloads. - Update IAP validation example for Android Publisher v3 API. +- Relayed multiplayer matches allow echoing messages back to sender if they're in the filter list. ### Fixed - Correctly read pagination cursor in notification listings. diff --git a/server/pipeline_match.go b/server/pipeline_match.go index 71fe3dc02951f41072de738a3c2c7f6871f3f069..23cb839cb5f7622f05bca7fe00f04329a502c493 100644 --- a/server/pipeline_match.go +++ b/server/pipeline_match.go @@ -347,16 +347,16 @@ func (p *Pipeline) matchDataSend(logger *zap.Logger, session Session, envelope * for i := 0; i < len(presenceIDs); i++ { presenceID := presenceIDs[i] if presenceID.SessionID == session.ID() { - // Don't echo back to sender. - presenceIDs[i] = presenceIDs[len(presenceIDs)-1] - presenceIDs = presenceIDs[:len(presenceIDs)-1] senderFound = true if filters == nil { + // Don't echo back to sender unless they explicitly appear in the filter list. + presenceIDs[i] = presenceIDs[len(presenceIDs)-1] + presenceIDs = presenceIDs[:len(presenceIDs)-1] break - } else { - i-- } - } else if filters != nil { + } + + if filters != nil { // Check if this presence is specified in the filters. filterFound := false for j := 0; j < len(filters); j++ {