Ejemplo n.º 1
0
        /// <summary>
        ///   Closes the connection
        /// </summary>
        public override void Close()
        {
            if (!IsDisposed)
            {
                try
                {
                    Send(EndStream);
                }
                // TODO: empty try-catch bad, martial arts good
// ReSharper disable EmptyGeneralCatchClause
                catch
// ReSharper restore EmptyGeneralCatchClause
                {
                }
                finally
                {
                    if (tlsProceedEvent != null)
                    {
                        tlsProceedEvent.Set();
                        tlsProceedEvent = null;
                    }

                    if (networkStream != null)
                    {
                        networkStream.Dispose();
                        networkStream = null;
                    }

                    if (socket != null)
                    {
                        socket.Close();
                        socket = null;
                    }

                    if (inputBuffer != null)
                    {
                        inputBuffer.Dispose();
                        inputBuffer = null;
                    }

                    if (parser != null)
                    {
                        parser.Dispose();
                        parser = null;
                    }
                }

                base.Close();
            }
        }