[jboss-cvs] JBossRemoting/src/main/org/jboss/remoting/transport/socket ...

Ron Sigal ron_sigal at yahoo.com
Sun Mar 11 16:50:03 EDT 2007


  User: rsigal  
  Date: 07/03/11 16:50:03

  Modified:    src/main/org/jboss/remoting/transport/socket 
                        SocketServerInvoker.java
  Log:
  JBREM-654:  Updated previous fix to NPE problem.
  
  Revision  Changes    Path
  1.37      +23 -6     JBossRemoting/src/main/org/jboss/remoting/transport/socket/SocketServerInvoker.java
  
  (In the diff below, changes in quantity of whitespace are not shown.)
  
  Index: SocketServerInvoker.java
  ===================================================================
  RCS file: /cvsroot/jboss/JBossRemoting/src/main/org/jboss/remoting/transport/socket/SocketServerInvoker.java,v
  retrieving revision 1.36
  retrieving revision 1.37
  diff -u -b -r1.36 -r1.37
  --- SocketServerInvoker.java	25 Feb 2007 05:14:53 -0000	1.36
  +++ SocketServerInvoker.java	11 Mar 2007 20:50:03 -0000	1.37
  @@ -49,7 +49,7 @@
    * @author <a href="mailto:tom.elrod at jboss.com">Tom Elrod</a>
    * @author <a href="mailto:ovidiu at jboss.org">Ovidiu Feodorov</a>
    *
  - * @version $Revision: 1.36 $
  + * @version $Revision: 1.37 $
    * @jmx:mbean
    */
   public class SocketServerInvoker extends ServerInvoker implements Runnable, SocketServerInvokerMBean
  @@ -134,12 +134,16 @@
         log.trace("entering refreshServerSocket()");
         synchronized (serverSocketFactoryLock)
         {
  +         // If release() is able to enter its synchronized block and sees 
  +         // serverSocket == null, then it knows that something went wrong.
            newServerSocketFactory=false;
  -         serverSocket.close();
  +         ServerSocket oldServerSocket = serverSocket;
            serverSocket = null;
  +         oldServerSocket.close();
            InetAddress bindAddress = InetAddress.getByName(getServerBindAddress());
  -         serverSocket = createServerSocket(getServerBindPort(), backlog, bindAddress);
  -         serverSocket.setReuseAddress(reuseAddress);
  +         ServerSocket newServerSocket = createServerSocket(getServerBindPort(), backlog, bindAddress);
  +         newServerSocket.setReuseAddress(reuseAddress);
  +         serverSocket = newServerSocket;
            log.info("ServerSocket has been updated");
         }
         log.trace("leavinging refreshServerSocket()");
  @@ -530,12 +534,21 @@
                  log.error("SSLServerSocket error", e);
                  return;
               }
  +            catch (InvalidStateException e)
  +            {
  +               log.error("Cannot proceed without functioning server socket.  Shutting down");
  +               stop();
  +            }
               catch(Throwable ex)
               {
                  if(running)
                  {
                     log.error(this + " failed to handle socket", ex);
                  }
  +               else
  +               {
  +                  log.debug(this + " caught exception in run()", ex);     
  +               }
               }
            }
         }
  @@ -702,10 +715,14 @@
         /**
          * Let SocketServerInvoker.run() resume when refresh is completed
          */
  -      public void release()
  +      public void release() throws InvalidStateException
         {
            synchronized (serverSocketFactoryLock)
            {
  +            if (serverSocket == null)
  +            {
  +               throw new InvalidStateException("error refreshing ServerSocket");
  +            }
               log.trace("passed through ServerSocketRefresh.release()");
            }
         }
  
  
  



More information about the jboss-cvs-commits mailing list