From 0fb7ad90fa0605bc9c6156621a683e458a4987dc Mon Sep 17 00:00:00 2001 From: Jeffrey Stedfast Date: Wed, 18 Sep 2024 15:19:11 -0400 Subject: [PATCH] Fix SmtpClient.Dispose() when telemetry is configured Also discovered some issues in CreateMetrics() methods in Telemetry class. Fixes issue #1816 --- MailKit/Net/Smtp/SmtpClient.cs | 4 +++- MailKit/Telemetry.cs | 6 +++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/MailKit/Net/Smtp/SmtpClient.cs b/MailKit/Net/Smtp/SmtpClient.cs index f8c84c9139..a1755d81d3 100644 --- a/MailKit/Net/Smtp/SmtpClient.cs +++ b/MailKit/Net/Smtp/SmtpClient.cs @@ -1775,7 +1775,9 @@ public override void NoOp (CancellationToken cancellationToken = default) void Disconnect (string host, int port, SecureSocketOptions options, bool requested) { - RecordClientDisconnected (null); + // Note: if the uri is null, then the user manually disconnected already. + if (uri != null) + RecordClientDisconnected (null); capabilities = SmtpCapabilities.None; authenticated = false; diff --git a/MailKit/Telemetry.cs b/MailKit/Telemetry.cs index ec799c6fa5..48037edbe0 100644 --- a/MailKit/Telemetry.cs +++ b/MailKit/Telemetry.cs @@ -151,7 +151,7 @@ public static class SmtpClient internal static ClientMetrics CreateMetrics (Meter meter) { - return new ClientMetrics (Meter, MeterName, "an", "SMTP"); + return new ClientMetrics (meter, MeterName, "an", "SMTP"); } /// @@ -236,7 +236,7 @@ public static class Pop3Client internal static ClientMetrics CreateMetrics (Meter meter) { - return new ClientMetrics (Meter, MeterName, "a", "POP3"); + return new ClientMetrics (meter, MeterName, "a", "POP3"); } /// @@ -321,7 +321,7 @@ public static class ImapClient internal static ClientMetrics CreateMetrics (Meter meter) { - return new ClientMetrics (Meter, MeterName, "an", "IMAP"); + return new ClientMetrics (meter, MeterName, "an", "IMAP"); } ///