Example #1
0
        private static void SslAuthenticateAsyncCallback(IAsyncResult ar)
        {
            Tuple <TcpSession, SslStream> state = (Tuple <TcpSession, SslStream>)ar.AsyncState;
            ISession  session = state.Item1;
            TcpServer server  = (TcpServer)session.Server;

            try
            {
                if (server.EnableLog(LogType.Debug))
                {
                    server.Log(LogType.Debug, session, "{0} end ssl Authenticate", session.RemoteEndPoint);
                }
                SslStream sslStream = state.Item2;
                sslStream.EndAuthenticateAsServer(ar);
                EventArgs.ConnectedEventArgs cead = new EventArgs.ConnectedEventArgs();
                cead.Server  = server;
                cead.Session = session;
                server.OnConnected(cead);
                server.BeginReceive(state.Item1);
                if (server.EnableLog(LogType.Debug))
                {
                    server.Log(LogType.Debug, session, "{0} begin receive", session.RemoteEndPoint);
                }
            }
            catch (Exception e_)
            {
                if (server.EnableLog(LogType.Error))
                {
                    server.Error(e_, state.Item1, "create session ssl authenticate callback error {0}", e_.Message);
                }
                session.Dispose();
            }
        }
Example #2
0
        private void SslAuthenticateAsyncCallback(IAsyncResult ar)
        {
            Tuple <TcpSession, SslStream> state = (Tuple <TcpSession, SslStream>)ar.AsyncState;
            ISession  session = state.Item1;
            TcpServer server  = (TcpServer)session.Server;

            try
            {
                if (server.EnableLog(LogType.Info))
                {
                    server.Log(LogType.Info, session, "{0} end ssl Authenticate", session.RemoteEndPoint);
                }
                SslStream sslStream = state.Item2;
                sslStream.EndAuthenticateAsServer(ar);
                EventArgs.ConnectedEventArgs cead = new EventArgs.ConnectedEventArgs();
                cead.Server  = server;
                cead.Session = session;
                server.OnConnected(cead);
                ((TcpSession)session).SyncSSLData();
                server.BeginReceive(state.Item1);
            }
            catch (Exception e_)
            {
                if (this.EnableLog(LogType.Warring))
                {
                    this.Log(LogType.Warring, state?.Item1, $"create session ssl authenticate callback error {e_.Message}@{e_.StackTrace}");
                }
                if (session != null)
                {
                    session.Dispose();
                }
            }
        }
Example #3
0
        private void ConnectedProcess(AcceptSocketInfo e)
        {
            TcpSession session = new TcpSession();

            session.MaxWaitMessages   = Options.MaxWaitMessages;
            session.Socket            = e.Socket;
            session.Server            = this;
            session.Host              = e.Listen.Host;
            session.Port              = e.Listen.Port;
            session.ReceiveBufferPool = this.ReceiveBufferPool.Next();
            session.SendBufferPool    = this.SendBufferPool.Next();
            session.SSL = e.Listen.SSL;
            session.Initialization(this, null);
            session.SendEventArgs.Completed    += IO_Completed;
            session.ReceiveEventArgs.Completed += IO_Completed;
            session.LittleEndian   = Options.LittleEndian;
            session.RemoteEndPoint = e.Socket.RemoteEndPoint;
            if (this.Packet != null)
            {
                session.Packet           = this.Packet.Clone();
                session.Packet.Completed = OnPacketDecodeCompleted;
            }

            session.ReceiveDispatcher = mReceiveDispatchCenter.Next();
            //if (Options.SendQueueEnabled)
            //{
            //    session.SendDispatcher = mSendDispatchCenter.Next();
            //}
            AddSession(session);
            if (!e.Listen.SSL)
            {
                EventArgs.ConnectedEventArgs cead = new EventArgs.ConnectedEventArgs();
                cead.Server  = this;
                cead.Session = session;
                OnConnected(cead);
                if (EnableLog(LogType.Debug))
                {
                    Log(LogType.Debug, session, "{0} begin receive", session.RemoteEndPoint);
                }
                BeginReceive(session);
            }
            else
            {
                if (EnableLog(LogType.Info))
                {
                    Log(LogType.Info, session, "{0} begin ssl Authenticate", session.RemoteEndPoint);
                }
                session.CreateSSL(SslAuthenticateAsyncCallback, e.Listen, this);
            }
        }
Example #4
0
        private void ConnectedProcess(System.Net.Sockets.Socket e)
        {
            TcpSession session = new TcpSession();

            session.Socket            = e;
            session.ReceiveBufferPool = this.ReceiveBufferPool.Next();
            session.SendBufferPool    = this.SendBufferPool.Next();
            session.SSL = Config.SSL;
            session.Initialization(this, null);
            session.SendEventArgs.Completed    += IO_Completed;
            session.ReceiveEventArgs.Completed += IO_Completed;
            session.LittleEndian   = Config.LittleEndian;
            session.RemoteEndPoint = e.RemoteEndPoint;
            if (this.Packet != null)
            {
                session.Packet           = this.Packet.Clone();
                session.Packet.Completed = OnPacketDecodeCompleted;
            }

            session.ReceiveDispatcher = mReceiveDispatchCenter.Next();
            if (Config.SendQueueEnabled)
            {
                session.SendDispatcher = mSendDispatchCenter.Next();
            }
            AddSession(session);
            if (!Config.SSL)
            {
                EventArgs.ConnectedEventArgs cead = new EventArgs.ConnectedEventArgs();
                cead.Server  = this;
                cead.Session = session;
                OnConnected(cead);
                if (EnableLog(LogType.Debug))
                {
                    Log(LogType.Debug, session, "{0} begin receive", e.RemoteEndPoint);
                }
                BeginReceive(session);
            }
            else
            {
                session.CreateSSL(SslAuthenticateAsyncCallback);
                if (EnableLog(LogType.Debug))
                {
                    Log(LogType.Debug, session, "{0} begin ssl Authenticate", e.RemoteEndPoint);
                }
            }
        }
Example #5
0
        private static void SslAuthenticateAsyncCallback(IAsyncResult ar)
        {
            Tuple <TcpSession, SslStream> state = (Tuple <TcpSession, SslStream>)ar.AsyncState;
            TcpServer server = (TcpServer)state.Item1.Server;

            try
            {
                SslStream sslStream = state.Item2;
                sslStream.EndAuthenticateAsServer(ar);
                EventArgs.ConnectedEventArgs cead = new EventArgs.ConnectedEventArgs();
                cead.Server  = server;
                cead.Session = state.Item1;
                server.OnConnected(cead);
                server.BeginReceive(state.Item1);
            }
            catch (Exception e_)
            {
                state.Item1.Server.Error(e_, state.Item1, "create session ssl authenticate callback error {0}", e_.Message);
                state.Item1.Dispose();
            }
        }