diff --git a/Packages/MagnumOpusCore/Sources/IMAPClient/IMAPClient.swift b/Packages/MagnumOpusCore/Sources/IMAPClient/IMAPClient.swift index 260df32..97f49f6 100644 --- a/Packages/MagnumOpusCore/Sources/IMAPClient/IMAPClient.swift +++ b/Packages/MagnumOpusCore/Sources/IMAPClient/IMAPClient.swift @@ -20,6 +20,14 @@ public actor IMAPClient: IMAPClientProtocol { // MARK: - Connection lifecycle public func connect() async throws { + // Clean up any stale connection from a previous failed sync + if connection != nil { + try? await connection?.disconnect() + try? await connection?.shutdown() + connection = nil + runner = nil + } + let conn = IMAPConnection(host: host, port: port) try await conn.connect() connection = conn @@ -36,8 +44,8 @@ public actor IMAPClient: IMAPClientProtocol { _ = try? await r.run(.logout) runner = r } - try await connection?.disconnect() - try await connection?.shutdown() + try? await connection?.disconnect() + try? await connection?.shutdown() connection = nil runner = nil }