void run()

in src/main/java/org/apache/log4j/net/SocketHubAppender.java [435:509]


    void run() {
      serverSocket = null;
      try {
        serverSocket = createServerSocket(port);
        serverSocket.setSoTimeout(1000);
      }
      catch (Exception e) {
        if (e instanceof InterruptedIOException || e instanceof InterruptedException) {
            Thread.currentThread().interrupt();
        }
        LogLog.error("exception setting timeout, shutting down server socket.", e);
        keepRunning = false;
        return;
      }

      try {
    	try {
        	serverSocket.setSoTimeout(1000);
    	}
    	catch (SocketException e) {
          LogLog.error("exception setting timeout, shutting down server socket.", e);
          return;
    	}
      
    	while (keepRunning) {
          Socket socket = null;
          try {
            socket = serverSocket.accept();
          }
          catch (InterruptedIOException e) {
            // timeout occurred, so just loop
          }
          catch (SocketException e) {
            LogLog.error("exception accepting socket, shutting down server socket.", e);
            keepRunning = false;
          }
          catch (IOException e) {
            LogLog.error("exception accepting socket.", e);
          }
	        
          // if there was a socket accepted
          if (socket != null) {
            try {
              InetAddress remoteAddress = socket.getInetAddress();
              LogLog.debug("accepting connection from " + remoteAddress.getHostName() 
			   + " (" + remoteAddress.getHostAddress() + ")");
	        	
              // create an ObjectOutputStream
              ObjectOutputStream oos = new ObjectOutputStream(socket.getOutputStream());
              if (buffer != null && buffer.length() > 0) {
                sendCachedEvents(oos);
              }
	            
              // add it to the oosList.  OK since Vector is synchronized.
              oosList.addElement(oos);
            } catch (IOException e) {
              if (e instanceof InterruptedIOException) {
                    Thread.currentThread().interrupt();
              }
              LogLog.error("exception creating output stream on socket.", e);
            }
          }
        }
      }
      finally {
    	// close the socket
    	try {
    		serverSocket.close();
    	} catch(InterruptedIOException e) {
            Thread.currentThread().interrupt();  
        } catch (IOException e) {
    		// do nothing with it?
    	}
      }
    }