CNA-GAP-053: QualityOfService of PlayerMatch and Ranked search results is never measured
Evidence basis: source-verified at the pinned commit; tests exist (not executed for this page). Claims on this page were checked by reading the CNA source at commit c1c316b9; unless a sentence says otherwise, nothing here was built or executed. Nothing on this page was executed unless the Evidence section says so.
QualityOfService of a PlayerMatch or Ranked search result is never measured: IsAvailable stays false and the round-trip and bandwidth fields stay 0, so online lobbies cannot sort sessions by connection quality.
- Identifier
CNA-GAP-053- Category
- Functional gap
- Subsystem
- Networking & gamer services
- Status
- Narrowed (partially fixed; describes only what survives)
- Verified against
- CNA
c1c316b9(c1c316b9c7a846ce8002809c151fcd1af14942c9) - Evidence basis
- Source-verified: read at TARGET, not executed
- Tests touching this area
- Yes: see Current tests
- Affected contract
- AvailableNetworkSession::getQualityOfServiceProperty() for PlayerMatch/Ranked listings; QualityOfService
Expected behaviour
XNA measures the connection quality of each listed session before a game joins it: round trip and upstream and downstream bandwidth, with IsAvailable true once measured.
Actual behaviour at TARGET
EndFind in NetworkSession.cpp builds each service listing with QualityOfService::CreateInternal(), which (QualityOfService.cpp) sets IsAvailable false and leaves both round trips and both bandwidths at 0. SystemLink results measure the round trip and both bandwidths. CNA's own limitations register (gamer-services-known-limitations.md, section 17) records the missing pre-join relay probe.
Fixed since first recorded: voice, party invites, RemoveFromSession, the arbitrated, unarbitrated and TrueSkill write events, and SystemLink bandwidth are implemented (see the evidence).
Source locations
modules/net/src/Xna/NetworkSession.cpp— EndFind: service listings get an unmeasured QualityOfServicemodules/net/src/Xna/QualityOfService.cpp— default constructor: IsAvailable falsedocs/gamer-services-known-limitations.md— section 17: QualityOfService of online search results
Evidence
Checked by reading at c1c316b9; not executed.
Re-verified at b0e97bb1: voice (b1d44dc94), party invites (8559d5bd3, 35ce1f3e8), RemoveFromSession (ea10f1f5c), the write events (062cbe193, db71f60b4) and SystemLink QualityOfService bandwidth (b4a378b90, 122922f52) are implemented and tested (ENetBackendTest.VoiceFromTheMicrophoneOwnerReachesTheRemoteMachine, NetworkMachineTest.RemoveFromSessionFollowsTheReferenceChecks, OnlineLeaderboardTest.RankedMachinesReportArbitratedAndTrueSkillForEveryGamerAndAgreementCommits, ENetDiscoveryServiceTest.UpstreamInvitationsAndReportsRoundTripAndRefuseNegativeRates). What survives is the unmeasured QualityOfService of service listings. Not executed.
Focused reproduction
No focused reproduction is known. Nothing has been invented here; the evidence above is what exists.
Current tests
No test measures the QualityOfService of a PlayerMatch or Ranked listing; the SystemLink measurement is tested.
Regression test
A service-listing test that expects a measured round trip and bandwidth once a pre-join probe exists.
Blast radius
Online lobbies that sort or filter PlayerMatch and Ranked sessions by connection quality.
Workaround
Order online listings by other properties, or measure the connection in game code after joining.
Related pages
The same subject is explained at several altitudes. These are the neighbouring pages at each one.
- Deep dives
- Network sessions: what is absent
- Known issues
- Functional gap index