internal void PutSession(TdsParserStateObject session) { session.AssertStateIsClean(); if (MARSOn) { // This will take care of disposing if the parser is closed _sessionPool.PutSession(session); } else if ((_state == TdsParserState.Closed) || (_state == TdsParserState.Broken)) { // Parser is closed\broken - dispose the stateObj Debug.Assert(session == _physicalStateObj, "MARS is off, but session to close is not the _physicalStateObj"); _physicalStateObj.SniContext = SniContext.Snix_Close; #if DEBUG _physicalStateObj.InvalidateDebugOnlyCopyOfSniContext(); #endif _physicalStateObj.Dispose(); } else { // Non-MARS, and session is ok - remove its owner _physicalStateObj.Owner = null; } }