[6.1] Port PR #3929: Avoid unintended SPN generation for non-integrated auth on native SNI path #3942
+547
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Description
Backport of #3929 to
release/6.1. Fixes a connection performance regression where SPN generation was triggered for non-integrated auth (e.g., SQL auth) on the native SNI path, causing unnecessary DNS lookups and ~5s connection delays.On
release/6.1, the netcoreTdsParserStateObjectNative.cshad the same vulnerable pattern asmainpre-fix: emptyserverSPNpassed through to native SNI without normalization whenisIntegratedSecurity=false.Changes to
netcore/src/.../TdsParserStateObjectNative.cs:NormalizeServerSpn(string serverSPN, bool isIntegratedSecurity)— identical to themainimplementationstring.Empty(triggers SPN generation)nullfor empty SPN (suppresses generation), preserves explicit SPNresolvedSpnassignment behind!string.IsNullOrWhiteSpacecheckThe netfx path was not affected —
release/6.1netfx handles SPN normalization inTdsParser.cswhere non-integrated auth already sets SPN tonull.Issues
Backport of #3929 (commit
104a4017).Testing
Unit test
TdsParserStateObjectNativeTests.NormalizeServerSpn_ReturnsExpectedValuealready exists on the branch (ported frommainwith #3929). Covers all combinations of null/empty/whitespace/provided SPN × integrated/SQL auth.No environment-dependent E2E validation performed — the regression requires a specific network topology (client → router → Wi-Fi extender → SQL Server) that is out of scope per the backport instructions.
Guidelines
Please review the contribution guidelines before submitting a pull request:
Original prompt
💬 We'd love your input! Share your thoughts on Copilot coding agent in our 2 minute survey.