protected void recvLoop(DatagramSocket socket, InetSocketAddress address) { long successful_accepts = 0; long failed_accepts = 0; while (!closed) { try { byte[] buf = new byte[PRUDPPacket.MAX_PACKET_SIZE]; DatagramPacket packet = new DatagramPacket(buf, buf.length, address); socket.receive(packet); successful_accepts++; failed_accepts = 0; String ip = packet.getAddress().getHostAddress(); if (!ip_filter.isInRange(ip, "Tracker", null)) { thread_pool.run(new TRTrackerServerProcessorUDP(this, socket, packet)); } } catch (Throwable e) { if (!closed) { failed_accepts++; Logger.log(new LogEvent(LOGID, "TRTrackerServer: receive failed on port " + port, e)); if ((failed_accepts > 100 && successful_accepts == 0) || failed_accepts > 1000) { // looks like its not going to work... // some kind of socket problem Logger.logTextResource( new LogAlert(LogAlert.UNREPEATABLE, LogAlert.AT_ERROR, "Network.alert.acceptfail"), new String[] {"" + port, "UDP"}); break; } } } } }