Skip to content

Commit d38da1c

Browse files
committed
fix pending read counters
force process sni compatibility mode by default
1 parent b2f4c75 commit d38da1c

File tree

2 files changed

+10
-4
lines changed

2 files changed

+10
-4
lines changed

src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/LocalAppContextSwitches.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,13 +78,13 @@ public static bool UseCompatibilityProcessSni
7878
{
7979
if (s_useCompatibilityProcessSni == Tristate.NotInitialized)
8080
{
81-
if (AppContext.TryGetSwitch(UseCompatibilityProcessSniString, out bool returnedValue) && returnedValue)
81+
if (AppContext.TryGetSwitch(UseCompatibilityProcessSniString, out bool returnedValue) && !returnedValue)
8282
{
83-
s_useCompatibilityProcessSni = Tristate.True;
83+
s_useCompatibilityProcessSni = Tristate.False;
8484
}
8585
else
8686
{
87-
s_useCompatibilityProcessSni = Tristate.False;
87+
s_useCompatibilityProcessSni = Tristate.True;
8888
}
8989
}
9090
return s_useCompatibilityProcessSni == Tristate.True;

src/Microsoft.Data.SqlClient/src/Microsoft/Data/SqlClient/TdsParserStateObject.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3207,7 +3207,13 @@ internal void ReadSni(TaskCompletionSource<object> completion)
32073207
}
32083208
}
32093209
else
3210-
{
3210+
{
3211+
// this call to IncrementPendingCallbacks is required for balance
3212+
// the _pendingCallbacks counter will be unconditionally decremented in ReadAsyncCallback
3213+
// so we must make sure that even though we are not making a network call that we do
3214+
// not cause an incorrect decrement which will cause disconnection from the native
3215+
// component
3216+
IncrementPendingCallbacks();
32113217
readPacket = default;
32123218
error = TdsEnums.SNI_SUCCESS;
32133219
}

0 commit comments

Comments
 (0)