carnold 2004/12/20 17:49:25 Modified: src/java/org/apache/log4j/net TelnetAppender.java Log: Bug 22369: TelnetAppender removes elements while iterating Revision Changes Path 1.11 +13 -8 logging-log4j/src/java/org/apache/log4j/net/TelnetAppender.java Index: TelnetAppender.java =================================================================== RCS file: /home/cvs/logging-log4j/src/java/org/apache/log4j/net/TelnetAppender.java,v retrieving revision 1.10 retrieving revision 1.11 diff -u -r1.10 -r1.11 --- TelnetAppender.java 21 Dec 2004 01:24:09 -0000 1.10 +++ TelnetAppender.java 21 Dec 2004 01:49:25 -0000 1.11 @@ -153,18 +153,23 @@ /** sends a message to each of the clients in telnet-friendly output. */ public void send(String message) { - Enumeration ce = connections.elements(); - + boolean hasWriterError = false; for (Enumeration e = writers.elements(); e.hasMoreElements();) { - Socket sock = (Socket) ce.nextElement(); PrintWriter writer = (PrintWriter) e.nextElement(); writer.print(message); + hasWriterError |= writer.checkError(); - if (writer.checkError()) { - // The client has closed the connection, remove it from our list: - connections.remove(sock); - writers.remove(writer); - } + } + // + // if any writer had an error then + // check all writers and remove any bad ones + if(hasWriterError) { + for (int i = writers.size() - 1; i >= 0; i--) { + if (((PrintWriter) writers.elementAt(i)).checkError()) { + writers.remove(i); + connections.remove(i); + } + } } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]