Commit 46149dd2 authored by Andrei Mihu's avatar Andrei Mihu
Browse files

Ensure the matchmaker cannot match together tickets from the same session.

parent 21f3b474
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -6,6 +6,7 @@ The format is based on [keep a changelog](http://keepachangelog.com) and this pr
## [Unreleased]
### Fixed
- Handle updates during leaderboard schedule reset window.
- Ensure the matchmaker cannot match together tickets from the same session.

## [2.6.0] - 2019-07-01
### Added
+9 −3
Original line number Diff line number Diff line
@@ -116,8 +116,14 @@ func (m *LocalMatchmaker) Add(session Session, query string, minCount int, maxCo
		properties[k] = v
	}

	indexQuery := bleve.NewQueryStringQuery(query)
	search := bleve.NewSearchRequestOptions(indexQuery, maxCount-1, 0, false)
	filterQuery := bleve.NewTermQuery(session.ID().String())
	filterQuery.SetField("presence.session_id")
	indexQuery := bleve.NewBooleanQuery()
	indexQuery.AddMust(bleve.NewQueryStringQuery(query))
	indexQuery.AddMustNot(filterQuery)

	searchRequest := bleve.NewSearchRequestOptions(indexQuery, maxCount-1, 0, false)

	ticket := uuid.Must(uuid.NewV4()).String()
	entry := &MatchmakerEntry{
		Ticket: ticket,
@@ -134,7 +140,7 @@ func (m *LocalMatchmaker) Add(session Session, query string, minCount int, maxCo
	}

	m.Lock()
	result, err := m.index.SearchInContext(session.Context(), search)
	result, err := m.index.SearchInContext(session.Context(), searchRequest)
	if err != nil {
		m.Unlock()
		return ticket, nil, err