private void Accepted(object sender, SocketAsyncEventArgs eventArgs) { try { Socket acceptedSocket = eventArgs.AcceptSocket; if (acceptedSocket.Connected == false) { return; } Session acceptedSession = _networkChannel.PopInactiveSession(); if (acceptedSession == null) { acceptedSocket.Close(); Logger.Err(LogMask.Aegis, "Cannot activate any more sessions. Please check MaxSessionPoolSize."); return; } acceptedSession.AttachSocket(acceptedSocket); acceptedSession.OnSocket_Accepted(); eventArgs.AcceptSocket = null; _listenSocket.AcceptAsync(_eventAccept); } catch (SocketException e) { if (e.SocketErrorCode != SocketError.Interrupted) { Logger.Err(LogMask.Aegis, e.ToString()); } } catch (Exception e) { Logger.Err(LogMask.Aegis, e.ToString()); } }