CNA-GAP-053: QualityOfService of PlayerMatch and Ranked search results is never measured

CNA snapshot c1c316b9  ·  Known Issues › Functional gaps  ·  source links pinned to c1c316b9

✓

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

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.

The same subject is explained at several altitudes. These are the neighbouring pages at each one.