From 939bcc47718bfa31687211442ec37a148fedd17a Mon Sep 17 00:00:00 2001 From: David Engel Date: Fri, 5 Jul 2024 11:10:58 -0700 Subject: [PATCH 1/2] Fix #2563 --- .../Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs index acf224204a..8a15e9809c 100644 --- a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs +++ b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs @@ -120,7 +120,11 @@ public override async Task AcquireTokenAsync(SqlAuthenti using CancellationTokenSource cts = new(); // Use Connection timeout value to cancel token acquire request after certain period of time. - cts.CancelAfter(parameters.ConnectionTimeout * 1000); // Convert to milliseconds + int timeout = parameters.ConnectionTimeout * 1000; + if (timeout > 0) // if ConnectionTimeout is 0 or the above overflows an int, no need to set CancelAfter + { + cts.CancelAfter(parameters.ConnectionTimeout * 1000); // Convert to milliseconds + } string scope = parameters.Resource.EndsWith(s_defaultScopeSuffix, StringComparison.Ordinal) ? parameters.Resource : parameters.Resource + s_defaultScopeSuffix; string[] scopes = new string[] { scope }; From 11e6a1163d2bb9fe095350cb8f80cf8cee699641 Mon Sep 17 00:00:00 2001 From: David Engel Date: Fri, 5 Jul 2024 11:51:35 -0700 Subject: [PATCH 2/2] Better --- .../Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs index 8a15e9809c..726410f741 100644 --- a/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs +++ b/src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/ActiveDirectoryAuthenticationProvider.cs @@ -120,10 +120,10 @@ public override async Task AcquireTokenAsync(SqlAuthenti using CancellationTokenSource cts = new(); // Use Connection timeout value to cancel token acquire request after certain period of time. - int timeout = parameters.ConnectionTimeout * 1000; - if (timeout > 0) // if ConnectionTimeout is 0 or the above overflows an int, no need to set CancelAfter + int timeout = parameters.ConnectionTimeout * 1000; // Convert to milliseconds + if (timeout > 0) // if ConnectionTimeout is 0 or the millis overflows an int, no need to set CancelAfter { - cts.CancelAfter(parameters.ConnectionTimeout * 1000); // Convert to milliseconds + cts.CancelAfter(timeout); } string scope = parameters.Resource.EndsWith(s_defaultScopeSuffix, StringComparison.Ordinal) ? parameters.Resource : parameters.Resource + s_defaultScopeSuffix;