From 99b9924a4a264401a880143f7edc5ea6d11a3e22 Mon Sep 17 00:00:00 2001 From: Matthew Penner Date: Wed, 13 Mar 2024 14:46:17 -0600 Subject: [PATCH] router(server): fix panic on server deletion Fixes https://github.com/pterodactyl/panel/issues/5028 Signed-off-by: Matthew Penner --- router/router_server.go | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/router/router_server.go b/router/router_server.go index 39a1fbc..9812df7 100644 --- a/router/router_server.go +++ b/router/router_server.go @@ -227,20 +227,19 @@ func deleteServer(c *gin.Context) { // // In addition, servers with large amounts of files can take some time to finish deleting, // so we don't want to block the HTTP call while waiting on this. - go func(p string) { - _ = s.Filesystem().UnixFS().Close() + go func(s *server.Server) { + fs := s.Filesystem() + p := fs.Path() + _ = fs.UnixFS().Close() if err := os.RemoveAll(p); err != nil { log.WithFields(log.Fields{"path": p, "error": err}).Warn("failed to remove server files during deletion process") } - }(s.Filesystem().Path()) + }(s) middleware.ExtractManager(c).Remove(func(server *server.Server) bool { return server.ID() == s.ID() }) - // Deallocate the reference to this server. - s = nil - c.Status(http.StatusNoContent) }