From 88a07bb44df57ac7ec74025a6b75b239e6a90bc4 Mon Sep 17 00:00:00 2001 From: Carlton <28676680+MrSoulPenguin@users.noreply.github.com> Date: Fri, 6 Feb 2026 11:09:13 -0500 Subject: [PATCH] router(transfer): fix failed transfer file cleanup --- router/router_transfer.go | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/router/router_transfer.go b/router/router_transfer.go index 1b062b054..c4baa7ec1 100644 --- a/router/router_transfer.go +++ b/router/router_transfer.go @@ -93,32 +93,32 @@ func postTransfers(c *gin.Context) { // Remove the transfer from the list of incoming transfers. transfer.Incoming().Remove(trnsfr) + status := "success" if !successful { - trnsfr.Server.Events().Publish(server.TransferStatusEvent, "failure") + status = "failure" + manager.Remove(func(match *server.Server) bool { return match.ID() == trnsfr.Server.ID() }) - } - if err := manager.Client().SetTransferStatus(context.Background(), trnsfr.Server.ID(), successful); err != nil { // Only delete the files if the transfer actually failed, otherwise we could have // unrecoverable data-loss. - if !successful && err != nil { - // Delete all extracted files. - go func(trnsfr *transfer.Transfer) { - _ = trnsfr.Server.Filesystem().UnixFS().Close() - if err := os.RemoveAll(trnsfr.Server.Filesystem().Path()); err != nil && !os.IsNotExist(err) { - trnsfr.Log().WithError(err).Warn("failed to delete local server files") - } - }(trnsfr) - } + go func(trnsfr *transfer.Transfer) { + trnsfr.Log().Debug("cleaning up leftover files") + + _ = trnsfr.Server.Filesystem().UnixFS().Close() + if err := os.RemoveAll(trnsfr.Server.Filesystem().Path()); err != nil && !os.IsNotExist(err) { + trnsfr.Log().WithError(err).Warn("failed to delete local server files") + } + }(trnsfr) + } - trnsfr.Log().WithField("status", successful).WithError(err).Error("failed to set transfer status on panel") - return + if err := manager.Client().SetTransferStatus(context.Background(), trnsfr.Server.ID(), successful); err != nil { + trnsfr.Log().WithField("status", status).WithError(err).Error("failed to set transfer status on panel") } trnsfr.Server.SetTransferring(false) - trnsfr.Server.Events().Publish(server.TransferStatusEvent, "success") + trnsfr.Server.Events().Publish(server.TransferStatusEvent, status) }(ctx, trnsfr) mediaType, params, err := mime.ParseMediaType(c.GetHeader("Content-Type"))