From 29f44fc3120a73835b9006a3310b077c2fa56679 Mon Sep 17 00:00:00 2001 From: Leander Beernaert Date: Mon, 14 Aug 2023 11:04:53 +0200 Subject: [PATCH] fix(GODT-2814): Server Manager shutdown task cancel --- internal/services/imapsmtpserver/service.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/internal/services/imapsmtpserver/service.go b/internal/services/imapsmtpserver/service.go index 010d1195..2b575cc4 100644 --- a/internal/services/imapsmtpserver/service.go +++ b/internal/services/imapsmtpserver/service.go @@ -283,8 +283,6 @@ func (sm *Service) handleLoadedUserCountChange(ctx context.Context) { } func (sm *Service) handleClose(ctx context.Context) { - sm.tasks.Cancel() - // Close the IMAP server. if err := sm.closeIMAPServer(ctx); err != nil { logrus.WithError(err).Error("Failed to close IMAP server") @@ -294,6 +292,10 @@ func (sm *Service) handleClose(ctx context.Context) { if err := sm.closeSMTPServer(ctx); err != nil { logrus.WithError(err).Error("Failed to close SMTP server") } + + // Cancel and wait needs to be called here since the SMTP server does not have a way to exit + // the task on context cancellation. Therefor we need to wait here after we issued a close request. + sm.tasks.CancelAndWait() } func (sm *Service) handleAddIMAPUser(ctx context.Context,