Author: markt Date: Wed Sep 22 14:56:26 2010 New Revision: 1000014 URL: http://svn.apache.org/viewvc?rev=1000014&view=rev Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=49030 Failure of one connector should not leave some connectors started and some ignored
Modified: tomcat/tc6.0.x/trunk/STATUS.txt tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/Connector.java tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/MapperListener.java tomcat/tc6.0.x/trunk/java/org/apache/catalina/core/LocalStrings.properties tomcat/tc6.0.x/trunk/java/org/apache/catalina/core/StandardService.java tomcat/tc6.0.x/trunk/java/org/apache/jk/common/ChannelSocket.java tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Modified: tomcat/tc6.0.x/trunk/STATUS.txt URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/STATUS.txt?rev=1000014&r1=1000013&r2=1000014&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/STATUS.txt (original) +++ tomcat/tc6.0.x/trunk/STATUS.txt Wed Sep 22 14:56:26 2010 @@ -66,13 +66,6 @@ PATCHES PROPOSED TO BACKPORT: system property, but defaults to the old behaviour. -* Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=49030 - Failure of one connector should not leave some connectors started and some - ignored - https://issues.apache.org/bugzilla/attachment.cgi?id=25633 - +1: kkolinko, markt, mturk - -1: - * Configure Tomcat to use HttpOnly for session cookies by default http://people.apache.org/~kkolinko/patches/2010-04-21_tc6_context_httpOnly.patch +1: kkolinko Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/Connector.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/Connector.java?rev=1000014&r1=1000013&r2=1000014&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/Connector.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/Connector.java Wed Sep 22 14:56:26 2010 @@ -18,7 +18,6 @@ package org.apache.catalina.connector; -import java.net.URLEncoder; import java.util.HashMap; import javax.management.MBeanRegistration; @@ -1259,4 +1258,18 @@ public class Connector getService().removeConnector(this); } + /** + * Provide a useful toString() implementation as it may be used when logging + * Lifecycle errors to identify the component. + */ + @Override + public String toString() { + // Not worth caching this right now + StringBuilder sb = new StringBuilder("Connector["); + sb.append(getProtocol()); + sb.append('-'); + sb.append(getPort()); + sb.append(']'); + return sb.toString(); + } } Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/MapperListener.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/MapperListener.java?rev=1000014&r1=1000013&r2=1000014&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/MapperListener.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/connector/MapperListener.java Wed Sep 22 14:56:26 2010 @@ -169,8 +169,10 @@ public class MapperListener * unregister this from JMImplementation:type=MBeanServerDelegate */ public void destroy() { + if (mBeanServer == null) { + return; + } try { - ObjectName objectName = new ObjectName( "JMImplementation:type=MBeanServerDelegate"); mBeanServer.removeNotificationListener(objectName, this); Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/core/LocalStrings.properties URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/core/LocalStrings.properties?rev=1000014&r1=1000013&r2=1000014&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/catalina/core/LocalStrings.properties (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/core/LocalStrings.properties Wed Sep 22 14:56:26 2010 @@ -179,6 +179,10 @@ standardServer.initialize.initialized=Th standardServer.start.connectors=At least one connector is not associated with any container standardServer.start.started=This server has already been started standardServer.stop.notStarted=This server has not yet been started +standardService.connector.initFailed=Failed to initialize connector [{0}] +standardService.connector.pauseFailed=Failed to pause connector [{0}] +standardService.connector.startFailed=Failed to start connector [{0}] +standardService.connector.stopFailed=Failed to stop connector [{0}] standardService.initialize.initialized=This service has already been initialized standardService.initialize.failed=Service initializing at {0} failed standardService.register.failed=Error registering Service at domain {0} Modified: tomcat/tc6.0.x/trunk/java/org/apache/catalina/core/StandardService.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/catalina/core/StandardService.java?rev=1000014&r1=1000013&r2=1000014&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/catalina/core/StandardService.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/catalina/core/StandardService.java Wed Sep 22 14:56:26 2010 @@ -266,7 +266,9 @@ public class StandardService try { connector.initialize(); } catch (LifecycleException e) { - log.error("Connector.initialize", e); + log.error(sm.getString( + "standardService.connector.initFailed", + connector), e); } } @@ -274,7 +276,9 @@ public class StandardService try { ((Lifecycle) connector).start(); } catch (LifecycleException e) { - log.error("Connector.start", e); + log.error(sm.getString( + "standardService.connector.startFailed", + connector), e); } } @@ -338,7 +342,9 @@ public class StandardService try { ((Lifecycle) connectors[j]).stop(); } catch (LifecycleException e) { - log.error("Connector.stop", e); + log.error(sm.getString( + "standardService.connector.stopFailed", + connectors[j]), e); } } connectors[j].setContainer(null); @@ -530,8 +536,13 @@ public class StandardService // Start our defined Connectors second synchronized (connectors) { for (int i = 0; i < connectors.length; i++) { - if (connectors[i] instanceof Lifecycle) + try { ((Lifecycle) connectors[i]).start(); + } catch (Exception e) { + log.error(sm.getString( + "standardService.connector.startFailed", + connectors[i]), e); + } } } @@ -563,7 +574,13 @@ public class StandardService // Stop our defined Connectors first synchronized (connectors) { for (int i = 0; i < connectors.length; i++) { - connectors[i].pause(); + try { + connectors[i].pause(); + } catch (Exception e) { + log.error(sm.getString( + "standardService.connector.pauseFailed", + connectors[i]), e); + } } } @@ -592,8 +609,13 @@ public class StandardService // Stop our defined Connectors first synchronized (connectors) { for (int i = 0; i < connectors.length; i++) { - if (connectors[i] instanceof Lifecycle) + try { ((Lifecycle) connectors[i]).stop(); + } catch (Exception e) { + log.error(sm.getString( + "standardService.connector.stopFailed", + connectors[i]), e); + } } } @@ -676,9 +698,19 @@ public class StandardService // Initialize our defined Connectors synchronized (connectors) { - for (int i = 0; i < connectors.length; i++) { + for (int i = 0; i < connectors.length; i++) { + try { connectors[i].initialize(); + } catch (Exception e) { + String message = sm.getString( + "standardService.connector.initFailed", + connectors[i]); + log.error(message, e); + + if (Boolean.getBoolean("org.apache.catalina.startup.EXIT_ON_INIT_FAILURE")) + throw new LifecycleException(message); } + } } } Modified: tomcat/tc6.0.x/trunk/java/org/apache/jk/common/ChannelSocket.java URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/java/org/apache/jk/common/ChannelSocket.java?rev=1000014&r1=1000013&r2=1000014&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/java/org/apache/jk/common/ChannelSocket.java (original) +++ tomcat/tc6.0.x/trunk/java/org/apache/jk/common/ChannelSocket.java Wed Sep 22 14:56:26 2010 @@ -509,7 +509,9 @@ public class ChannelSocket extends JkHan unLockSocket(); } - sSocket.close(); // XXX? + if (sSocket != null) { + sSocket.close(); // XXX? + } if( tpOName != null ) { Registry.getRegistry(null, null).unregisterComponent(tpOName); Modified: tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml?rev=1000014&r1=1000013&r2=1000014&view=diff ============================================================================== --- tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml (original) +++ tomcat/tc6.0.x/trunk/webapps/docs/changelog.xml Wed Sep 22 14:56:26 2010 @@ -65,6 +65,10 @@ cause, CVE-2010-1622. (markt) </fix> <fix> + <bug>49030</bug>: Failure during start of one connector should not leave + some connectors started and some ignored. (kkolinko) + </fix> + <fix> <bug>49613</bug>: Improve performance when using SSL for applications that make multiple class to <code>Request.getAttributeNames()</code>. Patch provided by Sampo Savolainen. (markt) --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org