diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SNI/SNINpHandle.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SNI/SNINpHandle.cs index 023cee96b9..b039d0ce4e 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SNI/SNINpHandle.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SNI/SNINpHandle.cs @@ -331,6 +331,11 @@ public override uint SendAsync(SNIPacket packet, SNIAsyncCallback callback = nul packet.WriteToStreamAsync(_stream, cb, SNIProviders.NP_PROV); return TdsEnums.SNI_SUCCESS_IO_PENDING; } + catch (Exception e) when (e is ObjectDisposedException || e is InvalidOperationException || e is IOException) + { + SNIPacket errorPacket = packet; + return ReportErrorAndReleasePacket(errorPacket, e); + } finally { SqlClientEventSource.Log.TrySNIScopeLeaveEvent(scopeID); diff --git a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SNI/SNITcpHandle.cs b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SNI/SNITcpHandle.cs index 417e8fb54d..f9c7c595b3 100644 --- a/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SNI/SNITcpHandle.cs +++ b/src/Microsoft.Data.SqlClient/netcore/src/Microsoft/Data/SqlClient/SNI/SNITcpHandle.cs @@ -707,7 +707,6 @@ public override void SetAsyncCallbacks(SNIAsyncCallback receiveCallback, SNIAsyn public override uint SendAsync(SNIPacket packet, SNIAsyncCallback callback = null) { long scopeID = SqlClientEventSource.Log.TrySNIScopeEnterEvent(""); - SNIPacket errorPacket; SNIAsyncCallback cb = callback ?? _sendCallback; try { @@ -716,7 +715,7 @@ public override uint SendAsync(SNIPacket packet, SNIAsyncCallback callback = nul } catch (Exception e) when (e is ObjectDisposedException || e is InvalidOperationException || e is IOException) { - errorPacket = packet; + SNIPacket errorPacket = packet; return ReportErrorAndReleasePacket(errorPacket, e); } finally