remm        2002/10/22 02:42:49

  Modified:    util/java/org/apache/tomcat/util/net PoolTcpEndpoint.java
  Log:
  - Fix NPE (bug 13842).
  - Remove useless logging (maybe the hadshake failure should be an INFO).
  - Make sure socket is correctly closed in all cases.
  - Tighten up exception handling.
  
  Revision  Changes    Path
  1.6       +26 -9     
jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/net/PoolTcpEndpoint.java
  
  Index: PoolTcpEndpoint.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-connectors/util/java/org/apache/tomcat/util/net/PoolTcpEndpoint.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- PoolTcpEndpoint.java      19 Oct 2002 09:30:37 -0000      1.5
  +++ PoolTcpEndpoint.java      22 Oct 2002 09:42:48 -0000      1.6
  @@ -510,9 +510,18 @@
                
                try {
                    if(endpoint.getServerSocketFactory()!=null) {
  -                     endpoint.getServerSocketFactory().handshake(s);
  +                        endpoint.getServerSocketFactory().handshake(s);
                    }
  - 
  +                } catch (Throwable t) {
  +                    endpoint.log("Handshake failed", t, Log.DEBUG);
  +                    // Try to close the socket
  +                    try {
  +                        s.close();
  +                    } catch (IOException e) {}
  +                    continue;
  +                }
  +
  +                try {
                    if( usePool ) {
                        con=(TcpConnection)connectionCache.get();
                        if( con == null ) 
  @@ -526,11 +535,19 @@
                    con.setSocket(s);
                    endpoint.setSocketOptions( s );
                    endpoint.getConnectionHandler().processConnection(con, perThrData);
  -             } catch (IOException e){
  -                 endpoint.log("Handshake failed",e,Log.ERROR);
  +                } catch (Throwable t) {
  +                    endpoint.log("Unexpected error", t, Log.ERROR);
  +                    // Try to close the socket
  +                    try {
  +                        s.close();
  +                    } catch (IOException e) {}
                   } finally {
  -                    con.recycle();
  -                    if( usePool && con != null ) connectionCache.put(con);
  +                    if (con != null) {
  +                        con.recycle();
  +                        if (usePool) {
  +                            connectionCache.put(con);
  +                        }
  +                    }
                   }
                   break;
            }
  
  
  

--
To unsubscribe, e-mail:   <mailto:tomcat-dev-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:tomcat-dev-help@;jakarta.apache.org>

Reply via email to