From e6a4c9558a7870ba6205e0a26ec39302a2a72d29 Mon Sep 17 00:00:00 2001 From: Aaron Pitty <8045504+aaronjpitty@users.noreply.github.com> Date: Wed, 8 Oct 2025 13:40:15 +0100 Subject: [PATCH 1/6] Update CODEOWNERS to reflect new team name --- CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CODEOWNERS b/CODEOWNERS index 0519999..0f27853 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -1,2 +1,2 @@ # see https://docs.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners for more information -* @Unity-Technologies/multiplayer-services \ No newline at end of file +* @Unity-Technologies/multiplay From bc691892def01a5e17275caf7045a47aaac4059b Mon Sep 17 00:00:00 2001 From: "andrew.parkes" Date: Wed, 8 Oct 2025 14:03:41 +0100 Subject: [PATCH 2/6] lint errors --- simple-game-server-go/internal/game/allocated.go | 8 ++++++++ simple-game-server-go/main.go | 7 +++++++ 2 files changed, 15 insertions(+) diff --git a/simple-game-server-go/internal/game/allocated.go b/simple-game-server-go/internal/game/allocated.go index 3256c57..ea8c50c 100644 --- a/simple-game-server-go/internal/game/allocated.go +++ b/simple-game-server-go/internal/game/allocated.go @@ -28,6 +28,7 @@ func (g *Game) allocated(allocationID string) { c := g.Config() port, _ := c.Port.Int64() maxPlayers, _ := strconv.ParseInt(c.Extra["maxPlayers"], 10, 32) + if maxPlayers == 0 { maxPlayers = defaultMaxPlayers } @@ -52,12 +53,14 @@ func (g *Game) allocated(allocationID string) { func (g *Game) launchGame(port int64) { g.logger.Info("allocated") addr, err := net.ResolveTCPAddr("tcp4", fmt.Sprintf(":%d", port)) + if err != nil { g.logger.WithError(err).Error("error resolving TCP address") return } gs, err := net.ListenTCP("tcp4", addr) + if err != nil { g.logger.WithError(err).Error("error listening on TCP port") return @@ -69,6 +72,7 @@ func (g *Game) launchGame(port int64) { for { client, err := g.acceptClient(g.gameBind) + if err != nil { if errors.Is(err, syscall.EINVAL) { g.logger.Debug("server closed") @@ -86,6 +90,7 @@ func (g *Game) launchGame(port int64) { // acceptClient accepts a new TCP connection and updates internal state. func (g *Game) acceptClient(server *net.TCPListener) (*net.TCPConn, error) { client, err := server.AcceptTCP() + if err != nil { return nil, err } @@ -114,8 +119,10 @@ func (g *Game) handleClient(client *net.TCPConn) { "current_players": currentPlayers, }).Info("client disconnected") }() + for { buf := make([]byte, 16) + if _, err := client.Read(buf); err != nil { return } @@ -143,6 +150,7 @@ func (g *Game) readyForPlayers() { if g.Config().Extra["readyTimeout"] != "" { t, err := time.ParseDuration(g.Config().Extra["readyTimeout"]) + if err != nil { g.logger.WithError(err).Error("parsing ready timeout") } else { diff --git a/simple-game-server-go/main.go b/simple-game-server-go/main.go index a9ab26c..2fd12c0 100644 --- a/simple-game-server-go/main.go +++ b/simple-game-server-go/main.go @@ -34,6 +34,7 @@ func parseFlags(args []string) (string, string, string, error) { // If no valid targets are provided, it defaults to writing to stdout. func logWritersFromTargets(logTargets string, logFile string, logger *logrus.Logger) io.Writer { targets := make([]io.Writer, 0) + for _, t := range splitAndTrim(logTargets) { switch t { case "stdout": @@ -54,6 +55,7 @@ func logWritersFromTargets(logTargets string, logFile string, logger *logrus.Log targets = append(targets, f) } } + // logFile takes precedence if logFile != "" { f, err := os.OpenFile(logFile, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0o666) @@ -63,6 +65,7 @@ func logWritersFromTargets(logTargets string, logFile string, logger *logrus.Log logger.WithError(err).Warning("could not open log file for writing") } } + if len(targets) == 0 { return os.Stdout } @@ -72,6 +75,7 @@ func logWritersFromTargets(logTargets string, logFile string, logger *logrus.Log // splitAndTrim splits a string by the OS-specific path list separator and trims each part. func splitAndTrim(s string) []string { parts := make([]string, 0) + for _, p := range filepath.SplitList(s) { for _, t := range splitComma(p) { trimmed := filepath.Clean(t) @@ -86,6 +90,7 @@ func splitAndTrim(s string) []string { // splitComma splits a string by commas and trims each part, returning a slice of non-empty strings. func splitComma(s string) []string { res := make([]string, 0) + for _, t := range strings.Split(s, ",") { trimmed := strings.TrimSpace(t) if trimmed != "" && trimmed != "." { @@ -100,6 +105,7 @@ func main() { logger.SetFormatter(&logrus.JSONFormatter{}) logTargets, logFile, tracebackLevel, err := parseFlags(os.Args[1:]) + if err != nil { logger.WithError(err).Fatal("error parsing flags") } @@ -112,6 +118,7 @@ func main() { logger.Out = logWritersFromTargets(logTargets, logFile, logger) g, err := game.New(logger) + if err != nil { logger.WithError(err).Fatal("error creating game handler") } From c0ef598d11dfd25943c59b7debbef79bf4af9793 Mon Sep 17 00:00:00 2001 From: "andrew.parkes" Date: Wed, 8 Oct 2025 14:07:24 +0100 Subject: [PATCH 3/6] lint errors --- simple-game-server-go/internal/game/allocated.go | 2 -- simple-game-server-go/main.go | 1 - 2 files changed, 3 deletions(-) diff --git a/simple-game-server-go/internal/game/allocated.go b/simple-game-server-go/internal/game/allocated.go index ea8c50c..34d5901 100644 --- a/simple-game-server-go/internal/game/allocated.go +++ b/simple-game-server-go/internal/game/allocated.go @@ -53,7 +53,6 @@ func (g *Game) allocated(allocationID string) { func (g *Game) launchGame(port int64) { g.logger.Info("allocated") addr, err := net.ResolveTCPAddr("tcp4", fmt.Sprintf(":%d", port)) - if err != nil { g.logger.WithError(err).Error("error resolving TCP address") return @@ -150,7 +149,6 @@ func (g *Game) readyForPlayers() { if g.Config().Extra["readyTimeout"] != "" { t, err := time.ParseDuration(g.Config().Extra["readyTimeout"]) - if err != nil { g.logger.WithError(err).Error("parsing ready timeout") } else { diff --git a/simple-game-server-go/main.go b/simple-game-server-go/main.go index 2fd12c0..8dd353a 100644 --- a/simple-game-server-go/main.go +++ b/simple-game-server-go/main.go @@ -105,7 +105,6 @@ func main() { logger.SetFormatter(&logrus.JSONFormatter{}) logTargets, logFile, tracebackLevel, err := parseFlags(os.Args[1:]) - if err != nil { logger.WithError(err).Fatal("error parsing flags") } From e4d38c65b2d5a45e2c1f3e7be3983560359529e5 Mon Sep 17 00:00:00 2001 From: "andrew.parkes" Date: Wed, 8 Oct 2025 14:10:18 +0100 Subject: [PATCH 4/6] lint errors --- simple-game-server-go/internal/game/allocated.go | 1 - simple-game-server-go/main.go | 1 - 2 files changed, 2 deletions(-) diff --git a/simple-game-server-go/internal/game/allocated.go b/simple-game-server-go/internal/game/allocated.go index 34d5901..1a2bac3 100644 --- a/simple-game-server-go/internal/game/allocated.go +++ b/simple-game-server-go/internal/game/allocated.go @@ -59,7 +59,6 @@ func (g *Game) launchGame(port int64) { } gs, err := net.ListenTCP("tcp4", addr) - if err != nil { g.logger.WithError(err).Error("error listening on TCP port") return diff --git a/simple-game-server-go/main.go b/simple-game-server-go/main.go index 8dd353a..2650beb 100644 --- a/simple-game-server-go/main.go +++ b/simple-game-server-go/main.go @@ -117,7 +117,6 @@ func main() { logger.Out = logWritersFromTargets(logTargets, logFile, logger) g, err := game.New(logger) - if err != nil { logger.WithError(err).Fatal("error creating game handler") } From b56a514a9962efce722fd1e0b8a1f06893b07714 Mon Sep 17 00:00:00 2001 From: "andrew.parkes" Date: Wed, 8 Oct 2025 14:12:01 +0100 Subject: [PATCH 5/6] lint errors --- simple-game-server-go/internal/game/allocated.go | 1 - 1 file changed, 1 deletion(-) diff --git a/simple-game-server-go/internal/game/allocated.go b/simple-game-server-go/internal/game/allocated.go index 1a2bac3..c5b761f 100644 --- a/simple-game-server-go/internal/game/allocated.go +++ b/simple-game-server-go/internal/game/allocated.go @@ -70,7 +70,6 @@ func (g *Game) launchGame(port int64) { for { client, err := g.acceptClient(g.gameBind) - if err != nil { if errors.Is(err, syscall.EINVAL) { g.logger.Debug("server closed") From d6acc1646e7a000b7f9f7a303114944e49e9b5fa Mon Sep 17 00:00:00 2001 From: "andrew.parkes" Date: Wed, 8 Oct 2025 14:14:07 +0100 Subject: [PATCH 6/6] lint errors --- simple-game-server-go/internal/game/allocated.go | 1 - 1 file changed, 1 deletion(-) diff --git a/simple-game-server-go/internal/game/allocated.go b/simple-game-server-go/internal/game/allocated.go index c5b761f..5650152 100644 --- a/simple-game-server-go/internal/game/allocated.go +++ b/simple-game-server-go/internal/game/allocated.go @@ -87,7 +87,6 @@ func (g *Game) launchGame(port int64) { // acceptClient accepts a new TCP connection and updates internal state. func (g *Game) acceptClient(server *net.TCPListener) (*net.TCPConn, error) { client, err := server.AcceptTCP() - if err != nil { return nil, err }