protected override void deconnectionHandler(UserThread client) { if (!ps.isStarted()) { return; } try { ServerThread cl1 = (ServerThread)client; if (cl1.playing()) { ServerThread cl2 = cl1.CurrentChallenger; CSMessage msg = new CSMessage(MessageType.STOP_GAME).add(MessageType.USER, cl1.ClientUser); cl2.send(msg); cl2.CurrentChallenger = null; cl1.CurrentChallenger = null; if (view != null && view.isOpened()) { view.removeParty(cl1.ClientUser, cl2.ClientUser); } } else { abortRequest(client, client.ClientUser); foreach (CSUser u in client.Froms) { abortRequest(u, client.ClientUser); } } if (view != null && view.isOpened()) { view.delete(cl1.ClientUser); } cl1.stop(); clients.Remove(cl1); broadcast(); } catch (Exception e) { log(Severiry.ERROR, "Controller[DECONNECTION] - " + e.Message); } }