diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsParser.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsParser.cs index 0931d57557..708d00a42f 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsParser.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/TdsParser.cs @@ -2855,11 +2855,11 @@ private bool TryProcessDone(SqlCommand cmd, SqlDataReader reader, ref RunBehavio } } - // _attentionSent set by 'SendAttention' + // HasReceivedAttention set above // _pendingData set by e.g. 'TdsExecuteSQLBatch' // _hasOpenResult always set to true by 'WriteMarsHeader' // - if (!stateObj._attentionSent && !stateObj.HasPendingData && stateObj.HasOpenResult) + if (!stateObj.HasReceivedAttention && !stateObj.HasPendingData && stateObj.HasOpenResult) { /* Debug.Assert(!((sqlTransaction != null && _distributedTransaction != null) || diff --git a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsParser.cs b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsParser.cs index 165e3eb4bb..9ba311c4d9 100644 --- a/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsParser.cs +++ b/src/Microsoft.Data.SqlClient/netfx/src/Microsoft/Data/SqlClient/TdsParser.cs @@ -3324,11 +3324,11 @@ private bool TryProcessDone(SqlCommand cmd, SqlDataReader reader, ref RunBehavio } } - // _attentionSent set by 'SendAttention' + // _attentionReceived set above // _pendingData set by e.g. 'TdsExecuteSQLBatch' // _hasOpenResult always set to true by 'WriteMarsHeader' // - if (!stateObj._attentionSent && !stateObj._pendingData && stateObj._hasOpenResult) + if (!stateObj._attentionReceived && !stateObj._pendingData && stateObj._hasOpenResult) { /* Debug.Assert(!((sqlTransaction != null && _distributedTransaction != null) || diff --git a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/SqlCommand/SqlCommandCancelTest.cs b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/SqlCommand/SqlCommandCancelTest.cs index 07fcf17721..959221a85b 100644 --- a/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/SqlCommand/SqlCommandCancelTest.cs +++ b/src/Microsoft.Data.SqlClient/tests/ManualTests/SQL/SqlCommand/SqlCommandCancelTest.cs @@ -120,6 +120,30 @@ public static void TimeOutDuringRead() TimeOutDuringRead(s_connStr); } + [CheckConnStrSetupFact] + public static void TCPAttentionPacketTest() + { + CancelFollowedByTransaction(s_connStr); + } + + private static void CancelFollowedByTransaction(string constr) + { + using (SqlConnection connection = new SqlConnection(constr)) + { + connection.Open(); + using (SqlCommand cmd = connection.CreateCommand()) + { + cmd.CommandText = @"SELECT @@VERSION"; + using (var r = cmd.ExecuteReader()) + { + cmd.Cancel(); + } + } + using (var transaction = connection.BeginTransaction()) + { } + } + } + private static void MultiThreadedCancel(string constr, bool async) { using (SqlConnection con = new SqlConnection(constr))