/// <summary> /// Gets called when a connection is established. /// </summary> /// <param name="AR">IAsyncResult</param> private void AcceptCallback(IAsyncResult AR) { try { Socket socket; try { socket = LocalSocket.EndAccept(AR); } catch (ObjectDisposedException) { return; } ConnectedClients.Add(socket); socket.BeginReceive(buffer, 0, buffer.Length, SocketFlags.None, ReceiveCallback, socket); Handler.Debug("New client connected.", DebugType.Info); //SendToClient(socket, new NCILib.PreAuth(this)); Send(new InstructionLibraryEssentials.KeyExchangeServer2Client(this, ConnectedClients[socket])); LocalSocket.BeginAccept(AcceptCallback, null); } catch (Exception ex) { Handler.Debug("Halting (06)", DebugType.Warning); if (HandlerData.ShowExceptions) { Handler.Debug($"({ex.GetType().Name}) {ex.Message}", DebugType.Exception); } if (HandlerData.TryRestartOnCrash) { HaltAllThreads(); } } }