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(); } }
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(); } } }
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); } }
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); } } }
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(); } }