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]