FAForever / FAForever/server

Incorrect Bans in Ladder Games

Aperta
#1,077 4 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
Python
Stelle
72
Fork
84
Merge medio
5h 11m
PR unite (30g)
1

Descrizione

## Issue Summary: Incorrect Bans in Ladder Games Due to Missing PlayerOption Messages

**Problem:** Players are receiving incorrect violation bans in ladder games when connection failures occur.

**Root Cause (per @gatsik's analysis shared via Zulip):**
- Server checks `_configured_player_ids` to determine if players are "configured" before assigning violations
- `_configured_player_ids` is only populated by `set_player_option()` calls (triggered by `PlayerOption` GPGNet messages)
- Ladder games don't send `PlayerOption` messages (only custom lobbies do)
- Result: All guests in ladder games appear "unconfigured" and get violations when games fail to start, even if the failure wasn't their fault

**Code References:**
- Game configuration check: `server/games/game.py#L231` (`get_connected_players()`)
- PlayerOption handling: `server/games/game.py#L616-L621` (`set_player_option()`)
- Host exclusion logic: `server/ladder_service/ladder_service.py#L737` (`NotConnectedError`)

**Suggested Fix:**
Track actual connection status using other messages like `EstablishedPeer` instead of relying solely on `PlayerOption` messages for ladder games.

**Impact:**
All guests in failed ladder games receive violations regardless of whether they successfully connected, because they never appear in `_configured_player_ids`.

Guida per i contributori

Apri la guida per i contributori

Valutazione

Questa issue non è ancora stata valutata.

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.