public void run() { try { logger.info("Listening on port " + port); serverSocket = new ServerSocket(port); while (!closed) { logger.info("Waiting to accept a new client."); Socket socket = serverSocket.accept(); logger.info("Connected to client at " + socket.getInetAddress()); logger.info("Starting new socket node."); SocketNode newSocketNode = new SocketNode(this, socket, lc); synchronized (socketNodeList) { socketNodeList.add(newSocketNode); } new Thread(newSocketNode).start(); signalSocketNodeCreation(); } } catch (Exception e) { if(closed) { logger.info("Exception in run method for a closed server. This is normal."); } else { logger.error("Unexpected failure in run method", e); } } }