Use server counters for user statistics

This commit is contained in:
Brandon McGinty (chatgpt)
2026-08-09 14:22:46 -04:00
committed by Brandon McGinty
parent cb0951dee8
commit 82440b7670
2 changed files with 29 additions and 3 deletions
+3 -3
View File
@@ -1239,13 +1239,13 @@ func (c *Client) handleUserStats(buffer []byte) error {
if packet.FromServer.Good != nil { if packet.FromServer.Good != nil {
stats.FromServer.Good = *packet.FromServer.Good stats.FromServer.Good = *packet.FromServer.Good
} }
if packet.FromClient.Late != nil { if packet.FromServer.Late != nil {
stats.FromServer.Late = *packet.FromServer.Late stats.FromServer.Late = *packet.FromServer.Late
} }
if packet.FromClient.Lost != nil { if packet.FromServer.Lost != nil {
stats.FromServer.Lost = *packet.FromServer.Lost stats.FromServer.Lost = *packet.FromServer.Lost
} }
if packet.FromClient.Resync != nil { if packet.FromServer.Resync != nil {
stats.FromServer.Resync = *packet.FromServer.Resync stats.FromServer.Resync = *packet.FromServer.Resync
} }
} }
@@ -0,0 +1,26 @@
package gumble
import (
"testing"
"git.stormux.org/storm/barnard/gumble/gumble/MumbleProto"
"google.golang.org/protobuf/proto"
)
// Regression: FromServer loss counters were accidentally copied from
// FromClient, hiding the server-to-client packet-loss condition.
func TestUserStatsUsesFromServerCounters(t *testing.T) {
c := &Client{Config: NewConfig(), Users: make(Users)}
u := c.Users.create(7)
session := uint32(7)
clientLate, serverLate := uint32(1), uint32(9)
data, _ := proto.Marshal(&MumbleProto.UserStats{Session: &session,
FromClient: &MumbleProto.UserStats_Stats{Late: &clientLate},
FromServer: &MumbleProto.UserStats_Stats{Late: &serverLate}})
if err := c.handleUserStats(data); err != nil {
t.Fatal(err)
}
if u.Stats.FromServer.Late != serverLate {
t.Fatalf("got %d, want %d", u.Stats.FromServer.Late, serverLate)
}
}