Author: ggregory Date: Fri May 16 20:49:46 2014 New Revision: 1595343 URL: http://svn.apache.org/r1595343 Log: Stop running the server if the server socket is closed. Now, the super class implements Runnable, so subclasses do not need to.
Modified: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/TCPSocketServer.java logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/UDPSocketServer.java Modified: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/TCPSocketServer.java URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/TCPSocketServer.java?rev=1595343&r1=1595342&r2=1595343&view=diff ============================================================================== --- logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/TCPSocketServer.java (original) +++ logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/TCPSocketServer.java Fri May 16 20:49:46 2014 @@ -38,7 +38,7 @@ import org.apache.logging.log4j.core.con * @param <T> * The kind of input stream read */ -public class TCPSocketServer<T extends InputStream> extends AbstractSocketServer<T> implements Runnable { +public class TCPSocketServer<T extends InputStream> extends AbstractSocketServer<T> { /** * Thread that processes the events. @@ -193,6 +193,9 @@ public class TCPSocketServer<T extends I @Override public void run() { while (isActive()) { + if (serverSocket.isClosed()) { + return; + } try { // Accept incoming connections. final Socket clientSocket = serverSocket.accept(); @@ -206,6 +209,10 @@ public class TCPSocketServer<T extends I handlers.put(Long.valueOf(handler.getId()), handler); handler.start(); } catch (final IOException ioe) { + if (serverSocket.isClosed()) { + // OK we're done. + return; + } System.out.println("Exception encountered on accept. Ignoring. Stack Trace :"); ioe.printStackTrace(); } Modified: logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/UDPSocketServer.java URL: http://svn.apache.org/viewvc/logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/UDPSocketServer.java?rev=1595343&r1=1595342&r2=1595343&view=diff ============================================================================== --- logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/UDPSocketServer.java (original) +++ logging/log4j/log4j2/trunk/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/UDPSocketServer.java Fri May 16 20:49:46 2014 @@ -35,7 +35,7 @@ import org.apache.logging.log4j.core.con * @param <T> * The kind of input stream read */ -public class UDPSocketServer<T extends InputStream> extends AbstractSocketServer<T> implements Runnable { +public class UDPSocketServer<T extends InputStream> extends AbstractSocketServer<T> { /** * Creates a socket server that reads JSON log events. @@ -143,18 +143,33 @@ public class UDPSocketServer<T extends I @Override public void run() { while (isActive()) { + if (datagramSocket.isClosed()) { + // OK we're done. + return; + } try { final byte[] buf = new byte[maxBufferSize]; final DatagramPacket packet = new DatagramPacket(buf, buf.length); datagramSocket.receive(packet); - final ByteArrayInputStream bais = new ByteArrayInputStream(packet.getData(), packet.getOffset(), - packet.getLength()); + final ByteArrayInputStream bais = new ByteArrayInputStream(packet.getData(), packet.getOffset(), packet.getLength()); logEventInput.logEvents(logEventInput.wrapStream(bais), this); } catch (final OptionalDataException e) { + if (datagramSocket.isClosed()) { + // OK we're done. + return; + } logger.error("OptionalDataException eof=" + e.eof + " length=" + e.length, e); } catch (final EOFException e) { + if (datagramSocket.isClosed()) { + // OK we're done. + return; + } logger.info("EOF encountered"); } catch (final IOException e) { + if (datagramSocket.isClosed()) { + // OK we're done. + return; + } logger.error("Exception encountered on accept. Ignoring. Stack Trace :", e); } }