diff --git a/Stack/Opc.Ua.Core/Stack/Bindings/ArraySegmentStream.cs b/Stack/Opc.Ua.Core/Stack/Bindings/ArraySegmentStream.cs index 9cda90f4cb..00f71ee2fa 100644 --- a/Stack/Opc.Ua.Core/Stack/Bindings/ArraySegmentStream.cs +++ b/Stack/Opc.Ua.Core/Stack/Bindings/ArraySegmentStream.cs @@ -240,14 +240,6 @@ namespace Opc.Ua.Bindings m_buffers.Add(new ArraySegment(newBuffer, m_start, m_count)); m_endOfLastBuffer = 0; - // initialize buffer to zero (for debugging only). - #if TRACK_MEMORY - for (int ii = 0; ii < m_bufferSize; ii++) - { - newBuffer[ii] = 0; - } - #endif - SetCurrentBuffer(m_buffers.Count-1); } diff --git a/Stack/Opc.Ua.Core/Stack/Bindings/BufferManager.cs b/Stack/Opc.Ua.Core/Stack/Bindings/BufferManager.cs index 4b2333bdd1..0bbb0c5bfe 100644 --- a/Stack/Opc.Ua.Core/Stack/Bindings/BufferManager.cs +++ b/Stack/Opc.Ua.Core/Stack/Bindings/BufferManager.cs @@ -118,7 +118,8 @@ namespace Opc.Ua.Bindings /// Max size of the buffer. public BufferManager(string name, int maxPoolSize, int maxBufferSize) { - m_name = name; + m_name = name; + #if TRACK_MEMORY m_manager = System.ServiceModel.Channels.BufferManager.CreateBufferManager(maxPoolSize, maxBufferSize + 5); #else @@ -143,7 +144,7 @@ namespace Opc.Ua.Bindings lock (m_lock) { - #if TRACK_MEMORY +#if TRACK_MEMORY byte[] buffer = m_manager.TakeBuffer(size+5); byte[] bytes = BitConverter.GetBytes(++m_id); @@ -162,11 +163,11 @@ namespace Opc.Ua.Bindings m_allocations[m_id] = allocation; return buffer; - #else +#else byte[] buffer = m_manager.TakeBuffer(size+1); buffer[buffer.Length-1] = 0; return buffer; - #endif +#endif } } @@ -177,7 +178,7 @@ namespace Opc.Ua.Bindings /// The owner. public void TransferBuffer(byte[] buffer, string owner) { - #if TRACK_MEMORY +#if TRACK_MEMORY if (buffer == null) { return; @@ -203,7 +204,7 @@ namespace Opc.Ua.Bindings } } } - #endif +#endif } /// @@ -214,7 +215,8 @@ namespace Opc.Ua.Bindings { if (buffer[buffer.Length-1] != 0) { - throw new InvalidOperationException("Buffer is already locked."); + // This is a non-critical error and can happen when a previous exception has occured + Utils.Trace("Warning: Buffer is already locked."); } buffer[buffer.Length-1] = 1; @@ -228,7 +230,8 @@ namespace Opc.Ua.Bindings { if (buffer[buffer.Length-1] == 0) { - throw new InvalidOperationException("Buffer is not locked."); + // This is a non-critical error and can happen when a previous exception has occured + Utils.Trace("Warning: Buffer is not locked."); } buffer[buffer.Length-1] = 0; @@ -253,7 +256,7 @@ namespace Opc.Ua.Bindings throw new InvalidOperationException("Buffer has been locked."); } - #if TRACK_MEMORY +#if TRACK_MEMORY m_allocated -= buffer.Length; int id = BitConverter.ToInt32(buffer, buffer.Length-5); @@ -319,19 +322,19 @@ namespace Opc.Ua.Bindings buffer[ii] = 0xFC; } } - #endif +#endif m_manager.ReturnBuffer(buffer); } } - #endregion +#endregion - #region Private Fields +#region Private Fields private object m_lock = new object(); private string m_name; private System.ServiceModel.Channels.BufferManager m_manager; - #if TRACK_MEMORY +#if TRACK_MEMORY class Allocation { public int Id; @@ -345,9 +348,9 @@ namespace Opc.Ua.Bindings private int m_allocated; private int m_id; private SortedDictionary m_allocations = new SortedDictionary(); - #endif +#endif - #endregion +#endregion } - #endregion +#endregion } diff --git a/Stack/Opc.Ua.Core/Stack/Tcp/TcpMessageSocket.cs b/Stack/Opc.Ua.Core/Stack/Tcp/TcpMessageSocket.cs index 76928a9c42..917cb08e25 100644 --- a/Stack/Opc.Ua.Core/Stack/Tcp/TcpMessageSocket.cs +++ b/Stack/Opc.Ua.Core/Stack/Tcp/TcpMessageSocket.cs @@ -439,15 +439,6 @@ namespace Opc.Ua.Bindings { ReadNextBlock(); -#if TRACK_MEMORY - int cookie = BitConverter.ToInt32(m_receiveBuffer, 0); - - if (cookie < 0) - { - Utils.Trace("BufferCookieError (ReadNextBlock): Cookie={0:X8}", cookie); - } -#endif - return ServiceResult.Good; } diff --git a/Stack/Opc.Ua.Core/Stack/Tcp/TcpTransportChannel.cs b/Stack/Opc.Ua.Core/Stack/Tcp/TcpTransportChannel.cs index 117b602025..ab86a5262d 100644 --- a/Stack/Opc.Ua.Core/Stack/Tcp/TcpTransportChannel.cs +++ b/Stack/Opc.Ua.Core/Stack/Tcp/TcpTransportChannel.cs @@ -227,7 +227,7 @@ namespace Opc.Ua.Bindings { if (m_channel != null) { - m_channel.Close(1000); + m_channel.Close(5000); m_channel = null; } }