svn commit: r1812460 - in /tomcat/trunk: java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java webapps/docs/changelog.xml
Author: kfujino Date: Wed Oct 18 07:27:02 2017 New Revision: 1812460 URL: http://svn.apache.org/viewvc?rev=1812460&view=rev Log: Ensure that the remaining Sender can send channel messages by avoiding unintended ChannelException caused by comparing the number of failed members and the number of remaining Senders. Modified: tomcat/trunk/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java tomcat/trunk/webapps/docs/changelog.xml Modified: tomcat/trunk/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java?rev=1812460&r1=1812459&r2=1812460&view=diff == --- tomcat/trunk/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java (original) +++ tomcat/trunk/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java Wed Oct 18 07:27:02 2017 @@ -90,8 +90,6 @@ public class ParallelNioSender extends A remaining -= (cx.getFaultyMembers().length - faulty); } } -//bail out if all remaining senders are failing -if ( cx != null && cx.getFaultyMembers().length == remaining ) throw cx; delta = System.currentTimeMillis() - start; } if ( remaining > 0 ) { Modified: tomcat/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1812460&r1=1812459&r2=1812460&view=diff == --- tomcat/trunk/webapps/docs/changelog.xml (original) +++ tomcat/trunk/webapps/docs/changelog.xml Wed Oct 18 07:27:02 2017 @@ -113,6 +113,11 @@ than the actual setting value of maxRetryAttempts. (kfujino) + +Ensure that the remaining Sender can send channel messages by avoiding +unintended ChannelException caused by comparing the number +of failed members and the number of remaining Senders. (kfujino) + - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1812471 - in /tomcat/trunk: java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java webapps/docs/changelog.xml
Author: kfujino Date: Wed Oct 18 08:25:03 2017 New Revision: 1812471 URL: http://svn.apache.org/viewvc?rev=1812471&view=rev Log: Ensure that remaining SelectionKeys that were not handled by throwing a ChannelException during SelectionKey processing are handled. Modified: tomcat/trunk/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java tomcat/trunk/webapps/docs/changelog.xml Modified: tomcat/trunk/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java?rev=1812471&r1=1812470&r2=1812471&view=diff == --- tomcat/trunk/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java (original) +++ tomcat/trunk/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java Wed Oct 18 08:25:03 2017 @@ -20,8 +20,10 @@ import java.io.IOException; import java.net.UnknownHostException; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; +import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; +import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -73,22 +75,25 @@ public class ParallelNioSender extends A msg.getOptions()) == Channel.SEND_OPTIONS_USE_ACK; while ( (remaining>0) && (delta it = selector.selectedKeys().iterator(); @@ -136,8 +146,8 @@ public class ParallelNioSender extends A NioSender sender = (NioSender) sk.attachment(); try { if (sender.process(sk,waitForAck)) { -completed++; sender.setComplete(true); +result.complete(sender); if ( Logs.MESSAGES.isTraceEnabled() ) { Logs.MESSAGES.trace("ParallelNioSender - Sent msg:" + new UniqueId(msg.getUniqueId()) + " at " + @@ -170,17 +180,18 @@ public class ParallelNioSender extends A log.warn(sm.getString("parallelNioSender.sender.disconnected.notRetry", sender.getDestination().getName())); ChannelException cx = new ChannelException(sm.getString("parallelNioSender.sender.disconnected.sendFailed"), x); cx.addFaultyMember(sender.getDestination(),x); -throw cx; +result.failed(cx); +break; } byte[] data = sender.getMessage(); -if ( retry ) { +if (retry) { try { sender.disconnect(); sender.connect(); sender.setAttempt(attempt); sender.setMessage(data); -}catch ( Exception ignore){ +} catch (Exception ignore){ state.setFailing(); } } else { @@ -189,12 +200,31 @@ public class ParallelNioSender extends A Integer.toString(sender.getAttempt()), Integer.toString(maxAttempts)), x); cx.addFaultyMember(sender.getDestination(),x); -throw cx; +result.failed(cx); }//end if } } -return completed; +return result; + +} + +private static class SendResult { +private List completeSenders = new ArrayList<>(); +private ChannelException exception = null; +private void complete(NioSender sender) { +if (!completeSenders.contains(sender)) completeSenders.add(sender); +} +private int getCompleted() { +return completeSenders.size(); +} +private void failed(ChannelException cx){ +if (exception == null) exception = cx; +exception.addFaultyMember(cx.getFaultyMembers()); +} +private ChannelException getFailed() { +return exception; +} } private void connect(NioSender[] senders) throws ChannelException { Modified: tomcat/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/trunk/webapps/docs/changelog.xml?rev=1812471&r1=1812470&r2=1812471&view=diff == --- tomcat/trunk/webapps/docs/changelog.xml (original) +++ tomcat/trunk/webapps/docs/changelog.xml Wed Oct 18 08:25:03 2017 @@ -118,6 +118,11 @@ unintended ChannelException caused by comparing the number of failed members and the number of remaining Senders. (kfujino) + +Ensure that remaining SelectionKeys that were not handled by throwing a +ChannelException during SelectionKey processing are +handled. (kfujin
svn commit: r1812472 - in /tomcat/tc8.5.x/trunk: java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java webapps/docs/changelog.xml
Author: kfujino Date: Wed Oct 18 08:27:32 2017 New Revision: 1812472 URL: http://svn.apache.org/viewvc?rev=1812472&view=rev Log: -Ensure that the remaining Sender can send channel messages by avoiding unintended ChannelException caused by comparing the number of failed members and the number of remaining Senders. -Ensure that remaining SelectionKeys that were not handled by throwing a ChannelException during SelectionKey processing are handled. Modified: tomcat/tc8.5.x/trunk/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java tomcat/tc8.5.x/trunk/webapps/docs/changelog.xml Modified: tomcat/tc8.5.x/trunk/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java URL: http://svn.apache.org/viewvc/tomcat/tc8.5.x/trunk/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java?rev=1812472&r1=1812471&r2=1812472&view=diff == --- tomcat/tc8.5.x/trunk/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java (original) +++ tomcat/tc8.5.x/trunk/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java Wed Oct 18 08:27:32 2017 @@ -20,8 +20,10 @@ import java.io.IOException; import java.net.UnknownHostException; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; +import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; +import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -73,25 +75,26 @@ public class ParallelNioSender extends A msg.getOptions()) == Channel.SEND_OPTIONS_USE_ACK; while ( (remaining>0) && (delta 0 ) { @@ -120,13 +123,17 @@ public class ParallelNioSender extends A } -private int doLoop(long selectTimeOut, int maxAttempts, boolean waitForAck, ChannelMessage msg) -throws IOException, ChannelException { -int completed = 0; -int selectedKeys = selector.select(selectTimeOut); - +private SendResult doLoop(long selectTimeOut, int maxAttempts, boolean waitForAck, ChannelMessage msg) +throws ChannelException { +SendResult result = new SendResult(); +int selectedKeys; +try { +selectedKeys = selector.select(selectTimeOut); +} catch (IOException ioe) { +throw new ChannelException(sm.getString("parallelNioSender.send.failed"), ioe); +} if (selectedKeys == 0) { -return 0; +return result; } Iterator it = selector.selectedKeys().iterator(); @@ -138,8 +145,8 @@ public class ParallelNioSender extends A NioSender sender = (NioSender) sk.attachment(); try { if (sender.process(sk,waitForAck)) { -completed++; sender.setComplete(true); +result.complete(sender); if ( Logs.MESSAGES.isTraceEnabled() ) { Logs.MESSAGES.trace("ParallelNioSender - Sent msg:" + new UniqueId(msg.getUniqueId()) + " at " + @@ -172,17 +179,18 @@ public class ParallelNioSender extends A log.warn(sm.getString("parallelNioSender.sender.disconnected.notRetry", sender.getDestination().getName())); ChannelException cx = new ChannelException(sm.getString("parallelNioSender.sender.disconnected.sendFailed"), x); cx.addFaultyMember(sender.getDestination(),x); -throw cx; +result.failed(cx); +break; } byte[] data = sender.getMessage(); -if ( retry ) { +if (retry) { try { sender.disconnect(); sender.connect(); sender.setAttempt(attempt); sender.setMessage(data); -}catch ( Exception ignore){ +} catch (Exception ignore){ state.setFailing(); } } else { @@ -191,12 +199,31 @@ public class ParallelNioSender extends A Integer.toString(sender.getAttempt()), Integer.toString(maxAttempts)), x); cx.addFaultyMember(sender.getDestination(),x); -throw cx; +result.failed(cx); }//end if } } -return completed; +return result; + +} + +private static class SendResult { +private List completeSenders = new ArrayList<>(); +private ChannelException exception = null; +private void complete(NioSender sender) { +if (!completeSenders.contains(sender)) completeSenders.add(sender); +} +private int getCompleted() { +
svn commit: r1812473 - in /tomcat/tc8.0.x/trunk: java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java webapps/docs/changelog.xml
Author: kfujino Date: Wed Oct 18 08:28:47 2017 New Revision: 1812473 URL: http://svn.apache.org/viewvc?rev=1812473&view=rev Log: -Ensure that the remaining Sender can send channel messages by avoiding unintended ChannelException caused by comparing the number of failed members and the number of remaining Senders. -Ensure that remaining SelectionKeys that were not handled by throwing a ChannelException during SelectionKey processing are handled. Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java tomcat/tc8.0.x/trunk/webapps/docs/changelog.xml Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java?rev=1812473&r1=1812472&r2=1812473&view=diff == --- tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java (original) +++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java Wed Oct 18 08:28:47 2017 @@ -20,8 +20,10 @@ import java.io.IOException; import java.net.UnknownHostException; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; +import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; +import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -79,25 +81,26 @@ public class ParallelNioSender extends A msg.getOptions()) == Channel.SEND_OPTIONS_USE_ACK; while ( (remaining>0) && (delta 0 ) { @@ -126,13 +129,17 @@ public class ParallelNioSender extends A } -private int doLoop(long selectTimeOut, int maxAttempts, boolean waitForAck, ChannelMessage msg) -throws IOException, ChannelException { -int completed = 0; -int selectedKeys = selector.select(selectTimeOut); - +private SendResult doLoop(long selectTimeOut, int maxAttempts, boolean waitForAck, ChannelMessage msg) +throws ChannelException { +SendResult result = new SendResult(); +int selectedKeys; +try { +selectedKeys = selector.select(selectTimeOut); +} catch (IOException ioe) { +throw new ChannelException(sm.getString("parallelNioSender.send.failed"), ioe); +} if (selectedKeys == 0) { -return 0; +return result; } Iterator it = selector.selectedKeys().iterator(); @@ -144,8 +151,8 @@ public class ParallelNioSender extends A NioSender sender = (NioSender) sk.attachment(); try { if (sender.process(sk,waitForAck)) { -completed++; sender.setComplete(true); +result.complete(sender); if ( Logs.MESSAGES.isTraceEnabled() ) { Logs.MESSAGES.trace("ParallelNioSender - Sent msg:" + new UniqueId(msg.getUniqueId()) + " at " + @@ -178,17 +185,18 @@ public class ParallelNioSender extends A log.warn(sm.getString("parallelNioSender.sender.disconnected.notRetry", sender.getDestination().getName())); ChannelException cx = new ChannelException(sm.getString("parallelNioSender.sender.disconnected.sendFailed"), x); cx.addFaultyMember(sender.getDestination(),x); -throw cx; +result.failed(cx); +break; } byte[] data = sender.getMessage(); -if ( retry ) { +if (retry) { try { sender.disconnect(); sender.connect(); sender.setAttempt(attempt); sender.setMessage(data); -}catch ( Exception ignore){ +} catch (Exception ignore){ state.setFailing(); } } else { @@ -197,12 +205,31 @@ public class ParallelNioSender extends A Integer.toString(sender.getAttempt()), Integer.toString(maxAttempts)), x); cx.addFaultyMember(sender.getDestination(),x); -throw cx; +result.failed(cx); }//end if } } -return completed; +return result; + +} + +private static class SendResult { +private List completeSenders = new ArrayList<>(); +private ChannelException exception = null; +private void complete(NioSender sender) { +if (!completeSenders.contains(sender)) completeSenders.add(sender); +} +private int getCompleted() { +
svn commit: r1812474 - in /tomcat/tc7.0.x/trunk: java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java webapps/docs/changelog.xml
Author: kfujino Date: Wed Oct 18 08:30:46 2017 New Revision: 1812474 URL: http://svn.apache.org/viewvc?rev=1812474&view=rev Log: -Ensure that the remaining Sender can send channel messages by avoiding unintended ChannelException caused by comparing the number of failed members and the number of remaining Senders. -Ensure that remaining SelectionKeys that were not handled by throwing a ChannelException during SelectionKey processing are handled. Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java?rev=1812474&r1=1812473&r2=1812474&view=diff == --- tomcat/tc7.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/tribes/transport/nio/ParallelNioSender.java Wed Oct 18 08:30:46 2017 @@ -21,8 +21,10 @@ import java.io.IOException; import java.net.UnknownHostException; import java.nio.channels.SelectionKey; import java.nio.channels.Selector; +import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; +import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -86,21 +88,26 @@ public class ParallelNioSender extends A boolean waitForAck = (Channel.SEND_OPTIONS_USE_ACK & msg.getOptions()) == Channel.SEND_OPTIONS_USE_ACK; while ( (remaining>0) && (delta 0 ) { @@ -123,12 +130,17 @@ public class ParallelNioSender extends A } -private int doLoop(long selectTimeOut, int maxAttempts, boolean waitForAck, ChannelMessage msg) throws IOException, ChannelException { -int completed = 0; -int selectedKeys = selector.select(selectTimeOut); +private SendResult doLoop(long selectTimeOut, int maxAttempts, boolean waitForAck, ChannelMessage msg) throws ChannelException { +SendResult result = new SendResult(); +int selectedKeys; +try { +selectedKeys = selector.select(selectTimeOut); +} catch (IOException ioe) { +throw new ChannelException("Parallel NIO send failed.", ioe); +} if (selectedKeys == 0) { -return 0; +return result; } Iterator it = selector.selectedKeys().iterator(); @@ -140,8 +152,8 @@ public class ParallelNioSender extends A NioSender sender = (NioSender) sk.attachment(); try { if (sender.process(sk,waitForAck)) { -completed++; sender.setComplete(true); +result.complete(sender); if ( Logs.MESSAGES.isTraceEnabled() ) { Logs.MESSAGES.trace("ParallelNioSender - Sent msg:" + new UniqueId(msg.getUniqueId()) + " at " +new java.sql.Timestamp(System.currentTimeMillis())+ " to "+sender.getDestination().getName()); } @@ -170,28 +182,47 @@ public class ParallelNioSender extends A log.warn("Not retrying send for:" + sender.getDestination().getName() + "; Sender is disconnected."); ChannelException cx = new ChannelException("Send failed, and sender is disconnected. Not retrying.",x); cx.addFaultyMember(sender.getDestination(),x); -throw cx; +result.failed(cx); +break; } byte[] data = sender.getMessage(); -if ( retry ) { +if (retry) { try { sender.disconnect(); sender.connect(); sender.setAttempt(attempt); sender.setMessage(data); -}catch ( Exception ignore){ +} catch ( Exception ignore){ state.setFailing(); } } else { ChannelException cx = new ChannelException("Send failed, attempt:"+sender.getAttempt()+" max:"+maxAttempts,x); cx.addFaultyMember(sender.getDestination(),x); -throw cx; +result.failed(cx); }//end if } } -return completed; +return result; +} + +private static class SendResult { +private List completeSenders = new ArrayList(); +private ChannelException exception = null; +private void complete(NioSender sender) { +if (!completeSenders.contains(sender)) completeSenders.add(sender); +} +private int getCompleted() { +return c
svn commit: r1812490 - in /tomcat/trunk/java/org/apache: catalina/manager/StatusTransformer.java catalina/storeconfig/StoreAppender.java catalina/util/RequestUtil.java jasper/compiler/JspUtil.java jas
Author: markt Date: Wed Oct 18 10:40:01 2017 New Revision: 1812490 URL: http://svn.apache.org/viewvc?rev=1812490&view=rev Log: Remove deprecated code Modified: tomcat/trunk/java/org/apache/catalina/manager/StatusTransformer.java tomcat/trunk/java/org/apache/catalina/storeconfig/StoreAppender.java tomcat/trunk/java/org/apache/catalina/util/RequestUtil.java tomcat/trunk/java/org/apache/jasper/compiler/JspUtil.java tomcat/trunk/java/org/apache/jasper/security/SecurityUtil.java Modified: tomcat/trunk/java/org/apache/catalina/manager/StatusTransformer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/manager/StatusTransformer.java?rev=1812490&r1=1812489&r2=1812490&view=diff == --- tomcat/trunk/java/org/apache/catalina/manager/StatusTransformer.java (original) +++ tomcat/trunk/java/org/apache/catalina/manager/StatusTransformer.java Wed Oct 18 10:40:01 2017 @@ -908,81 +908,6 @@ public class StatusTransformer { /** - * Filter the specified message string for characters that are sensitive - * in HTML. This avoids potential attacks caused by including JavaScript - * codes in the request URL that is often reported in error messages. - * - * @param obj The message string to be filtered - * @return filtered HTML content - * - * @deprecated This method will be removed in Tomcat 9 - */ -@Deprecated -public static String filter(Object obj) { - -if (obj == null) -return "?"; -String message = obj.toString(); - -char content[] = new char[message.length()]; -message.getChars(0, message.length(), content, 0); -StringBuilder result = new StringBuilder(content.length + 50); -for (int i = 0; i < content.length; i++) { -switch (content[i]) { -case '<': -result.append("<"); -break; -case '>': -result.append(">"); -break; -case '&': -result.append("&"); -break; -case '"': -result.append("""); -break; -default: -result.append(content[i]); -} -} -return result.toString(); - -} - - -/** - * Escape the 5 entities defined by XML. - * @param s The message string to be filtered - * @return filtered XML content - * - * @deprecated This method will be removed in Tomcat 9 - */ -@Deprecated -public static String filterXml(String s) { -if (s == null) -return ""; -StringBuilder sb = new StringBuilder(); -for (int i = 0; i < s.length(); i++) { -char c = s.charAt(i); -if (c == '<') { -sb.append("<"); -} else if (c == '>') { -sb.append(">"); -} else if (c == '\'') { -sb.append("'"); -} else if (c == '&') { -sb.append("&"); -} else if (c == '"') { -sb.append("""); -} else { -sb.append(c); -} -} -return sb.toString(); -} - - -/** * Display the given size in bytes, either as KB or MB. * * @param obj The object to format Modified: tomcat/trunk/java/org/apache/catalina/storeconfig/StoreAppender.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/storeconfig/StoreAppender.java?rev=1812490&r1=1812489&r2=1812490&view=diff == --- tomcat/trunk/java/org/apache/catalina/storeconfig/StoreAppender.java (original) +++ tomcat/trunk/java/org/apache/catalina/storeconfig/StoreAppender.java Wed Oct 18 10:40:01 2017 @@ -356,36 +356,6 @@ public class StoreAppender { writer.print("\""); } -/** - * Given a string, this method replaces all occurrences of '<', '>', - * '&', and '"'. - * @param input The string to escape - * @return the escaped string - * @deprecated This method will be removed in Tomcat 9 - */ -@Deprecated -public String convertStr(String input) { - -StringBuffer filtered = new StringBuffer(input.length()); -char c; -for (int i = 0; i < input.length(); i++) { -c = input.charAt(i); -if (c == '<') { -filtered.append("<"); -} else if (c == '>') { -filtered.append(">"); -} else if (c == '\'') { -filtered.append("'"); -} else if (c == '"') { -filtered.append("""); -} else if (c == '&') { -filtered.append("&"); -} else { -filtered.append(c); -} -} -return filtered.toString(); -} /**
svn commit: r1812489 - in /tomcat/trunk: java/org/apache/catalina/connector/ java/org/apache/catalina/manager/ java/org/apache/catalina/manager/host/ java/org/apache/catalina/servlets/ java/org/apache
Author: markt Date: Wed Oct 18 10:39:54 2017 New Revision: 1812489 URL: http://svn.apache.org/viewvc?rev=1812489&view=rev Log: Refactor XML and HTML escaping to a single location Added: tomcat/trunk/java/org/apache/tomcat/util/security/Escape.java (with props) Modified: tomcat/trunk/java/org/apache/catalina/connector/Response.java tomcat/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java tomcat/trunk/java/org/apache/catalina/manager/ManagerServlet.java tomcat/trunk/java/org/apache/catalina/manager/StatusTransformer.java tomcat/trunk/java/org/apache/catalina/manager/host/HTMLHostManagerServlet.java tomcat/trunk/java/org/apache/catalina/servlets/DefaultServlet.java tomcat/trunk/java/org/apache/catalina/servlets/WebdavServlet.java tomcat/trunk/java/org/apache/catalina/ssi/SSIMediator.java tomcat/trunk/java/org/apache/catalina/storeconfig/StoreAppender.java tomcat/trunk/java/org/apache/catalina/users/MemoryUser.java tomcat/trunk/java/org/apache/catalina/util/DOMWriter.java tomcat/trunk/java/org/apache/catalina/util/RequestUtil.java tomcat/trunk/java/org/apache/catalina/valves/ErrorReportValve.java tomcat/trunk/java/org/apache/jasper/compiler/JspUtil.java tomcat/trunk/java/org/apache/jasper/compiler/PageDataImpl.java tomcat/trunk/java/org/apache/jasper/compiler/Validator.java tomcat/trunk/java/org/apache/jasper/security/SecurityUtil.java tomcat/trunk/java/org/apache/jasper/servlet/JspServlet.java tomcat/trunk/java/org/apache/tomcat/util/descriptor/web/WebXml.java tomcat/trunk/test/org/apache/jasper/compiler/TesterValidator.java Modified: tomcat/trunk/java/org/apache/catalina/connector/Response.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/Response.java?rev=1812489&r1=1812488&r2=1812489&view=diff == --- tomcat/trunk/java/org/apache/catalina/connector/Response.java (original) +++ tomcat/trunk/java/org/apache/catalina/connector/Response.java Wed Oct 18 10:39:54 2017 @@ -51,7 +51,6 @@ import org.apache.catalina.Globals; import org.apache.catalina.Session; import org.apache.catalina.Wrapper; import org.apache.catalina.security.SecurityUtil; -import org.apache.catalina.util.RequestUtil; import org.apache.catalina.util.SessionConfig; import org.apache.coyote.ActionCode; import org.apache.juli.logging.Log; @@ -64,6 +63,7 @@ import org.apache.tomcat.util.http.FastH import org.apache.tomcat.util.http.MimeHeaders; import org.apache.tomcat.util.http.parser.MediaTypeCache; import org.apache.tomcat.util.res.StringManager; +import org.apache.tomcat.util.security.Escape; /** * Wrapper object for the Coyote response. @@ -1374,7 +1374,7 @@ public class Response implements HttpSer if (getContext().getSendRedirectBody()) { PrintWriter writer = getWriter(); writer.print(sm.getString("coyoteResponse.sendRedirect.note", -RequestUtil.filter(locationUri))); +Escape.htmlElementContent(locationUri))); flushBuffer(); } } catch (IllegalArgumentException e) { Modified: tomcat/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java?rev=1812489&r1=1812488&r2=1812489&view=diff == --- tomcat/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java (original) +++ tomcat/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java Wed Oct 18 10:39:54 2017 @@ -49,10 +49,10 @@ import org.apache.catalina.Session; import org.apache.catalina.manager.util.BaseSessionComparator; import org.apache.catalina.manager.util.SessionUtils; import org.apache.catalina.util.ContextName; -import org.apache.catalina.util.RequestUtil; import org.apache.catalina.util.ServerInfo; import org.apache.catalina.util.URLEncoder; import org.apache.tomcat.util.res.StringManager; +import org.apache.tomcat.util.security.Escape; /** * Servlet that enables remote management of the web applications deployed @@ -349,7 +349,7 @@ public final class HTMLManagerServlet ex if (message == null || message.length() == 0) { args[1] = "OK"; } else { -args[1] = RequestUtil.filter(message); +args[1] = Escape.htmlElementContent(message); } writer.print(MessageFormat.format(Constants.MESSAGE_SECTION, args)); @@ -442,19 +442,19 @@ public final class HTMLManagerServlet ex args = new Object[7]; args[0] = "" + RequestUtil.filter(displayPath) + ""; +"\">" + Escape.htmlElementContent(displayPath) + ""; if ("".equals(ctxt.getWebappVersion())) { args[1] = noVersion;
svn commit: r1812492 - in /tomcat/tc8.5.x/trunk: ./ java/org/apache/catalina/connector/ java/org/apache/catalina/manager/ java/org/apache/catalina/manager/host/ java/org/apache/catalina/servlets/ java
Author: markt Date: Wed Oct 18 10:46:14 2017 New Revision: 1812492 URL: http://svn.apache.org/viewvc?rev=1812492&view=rev Log: Refactor XML and HTML escaping to a single location Added: tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/security/Escape.java - copied unchanged from r1812489, tomcat/trunk/java/org/apache/tomcat/util/security/Escape.java Modified: tomcat/tc8.5.x/trunk/ (props changed) tomcat/tc8.5.x/trunk/java/org/apache/catalina/connector/Response.java tomcat/tc8.5.x/trunk/java/org/apache/catalina/manager/HTMLManagerServlet.java tomcat/tc8.5.x/trunk/java/org/apache/catalina/manager/ManagerServlet.java tomcat/tc8.5.x/trunk/java/org/apache/catalina/manager/StatusTransformer.java tomcat/tc8.5.x/trunk/java/org/apache/catalina/manager/host/HTMLHostManagerServlet.java tomcat/tc8.5.x/trunk/java/org/apache/catalina/servlets/DefaultServlet.java tomcat/tc8.5.x/trunk/java/org/apache/catalina/servlets/WebdavServlet.java tomcat/tc8.5.x/trunk/java/org/apache/catalina/ssi/SSIMediator.java tomcat/tc8.5.x/trunk/java/org/apache/catalina/storeconfig/StoreAppender.java tomcat/tc8.5.x/trunk/java/org/apache/catalina/users/MemoryUser.java tomcat/tc8.5.x/trunk/java/org/apache/catalina/util/DOMWriter.java tomcat/tc8.5.x/trunk/java/org/apache/catalina/util/RequestUtil.java tomcat/tc8.5.x/trunk/java/org/apache/catalina/valves/ErrorReportValve.java tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/JspUtil.java tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/PageDataImpl.java tomcat/tc8.5.x/trunk/java/org/apache/jasper/compiler/Validator.java tomcat/tc8.5.x/trunk/java/org/apache/jasper/security/SecurityUtil.java tomcat/tc8.5.x/trunk/java/org/apache/jasper/servlet/JspServlet.java tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/descriptor/web/WebXml.java tomcat/tc8.5.x/trunk/test/org/apache/jasper/compiler/TesterValidator.java Propchange: tomcat/tc8.5.x/trunk/ -- --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Oct 18 10:46:14 2017 @@ -1,2 +1,2 @@ /tomcat/tc8.0.x/trunk:1809644 -/tomcat/trunk:1734785,1734799,1734845,1734928,1735041,1735044,1735480,1735577,1735597,1735599-1735600,1735615,1736145,1736162,1736209,1736280,1736297,1736299,1736489,1736646,1736703,1736836,1736849,1737104-1737105,1737112,1737117,1737119-1737120,1737155,1737157,1737192,1737280,1737339,1737632,1737664,1737715,1737748,1737785,1737834,1737860,1737903,1737959,1738005,1738007,1738014-1738015,1738018,1738022,1738039,1738043,1738059-1738060,1738147,1738149,1738174-1738175,1738261,1738589,1738623-1738625,1738643,1738816,1738850,1738855,1738946-1738948,1738953-1738954,1738979,1738982,1739079-1739081,1739087,1739113,1739153,1739172,1739176,1739191,1739474,1739492,1739726,1739762,1739775,1739814,1739817-1739818,1739975,1740131,1740324,1740465,1740495,1740508-1740509,1740520,1740535,1740707,1740803,1740810,1740969,1740980,1740991,1740997,1741015,1741033,1741036,1741058,1741060,1741080,1741147,1741159,1741164,1741173,1741181,1741190,1741197,1741202,1741208,1741213,1741221,1741225,1741232,1741409 ,1741501,1741677,1741892,1741896,1741984,1742023,1742042,1742071,1742090,1742093,1742101,1742105,1742111,1742139,1742146,1742148,1742166,1742181,1742184,1742187,1742246,1742248-1742251,1742263-1742264,1742268,1742276,1742369,1742387,1742448,1742509-1742512,1742917,1742919,1742933,1742975-1742976,1742984,1742986,1743019,1743115,1743117,1743124-1743125,1743134,1743425,1743554,1743679,1743696-1743698,1743700-1743701,1744058,1744064-1744065,1744125,1744149,1744194,1744229,1744270,1744323,1744432,1744684,1744697,1744705,1744713,1744760,1744786,1745083,1745142-1745143,1745145,1745177,1745179-1745180,1745227,1745248,1745254,1745337,1745467,1745473,1745535,1745576,1745735,1745744,1746304,1746306-1746307,1746319,1746327,1746338,1746340-1746341,1746344,1746427,1746441,1746473,1746490,1746492,1746495-1746496,1746499-1746501,1746503-1746507,1746509,1746549,1746551,1746554,1746556,1746558,1746584,1746620,1746649,1746724,1746939,1746989,1747014,1747028,1747035,1747210,1747225,1747234,1747253,1747 404,1747506,1747536,1747924,1747980,1747993,1748001,1748253,1748452,1748547,1748629,1748676,1748715,1749287,1749296,1749328,1749373,1749465,1749506,1749508,1749665-1749666,1749763,1749865-1749866,1749898,1749978,1749980,1750011,1750015,1750056,1750480,1750617,1750634,1750692,1750697,1750700,1750703,1750707,1750714,1750718,1750723,1750774,1750899,1750975,1750995,1751061,1751097,1751173,1751438,1751447,1751463,1751702,1752212,1752737,1752745,1753078,1753080,1753358,1753363,1754111,1754140-1754141,1754281,1754310,1754445,1754467,1754494,1754496,1754528,1754532-1754533,1754613,1754714,1754874,1754941,1754944,1754950-1754951,1755005,1755007,1755009,1755132,1755180-1755181,1755185,1755190,1755204-1755206,1755208,1755214,1755224,1755227,1755230,1755629,1755646-1755647,1755650,1755653,1755675,1755680,1755683,17
svn commit: r1812494 - /tomcat/trunk/java/org/apache/catalina/util/DOMWriter.java
Author: markt Date: Wed Oct 18 10:48:57 2017 New Revision: 1812494 URL: http://svn.apache.org/viewvc?rev=1812494&view=rev Log: Remove deprecated / unused code. Modified: tomcat/trunk/java/org/apache/catalina/util/DOMWriter.java Modified: tomcat/trunk/java/org/apache/catalina/util/DOMWriter.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/util/DOMWriter.java?rev=1812494&r1=1812493&r2=1812494&view=diff == --- tomcat/trunk/java/org/apache/catalina/util/DOMWriter.java (original) +++ tomcat/trunk/java/org/apache/catalina/util/DOMWriter.java Wed Oct 18 10:48:57 2017 @@ -27,24 +27,15 @@ import org.w3c.dom.Node; import org.w3c.dom.NodeList; /** - * A sample DOM writer. This sample program illustrates how to traverse a DOM - * tree in order to print a document that is parsed. + * A DOM writer optimised for use by WebDAV. */ public class DOMWriter { private final PrintWriter out; -private final boolean canonical; public DOMWriter(Writer writer) { -this (writer, true); -} - - -@Deprecated -public DOMWriter(Writer writer, boolean canonical) { out = new PrintWriter(writer); -this.canonical = canonical; } @@ -63,9 +54,6 @@ public class DOMWriter { switch (type) { // print document case Node.DOCUMENT_NODE: -if (!canonical) { -out.println(""); -} print(((Document) node).getDocumentElement()); out.flush(); break; @@ -81,7 +69,7 @@ public class DOMWriter { out.print(attr.getLocalName()); out.print("=\""); -out.print(Escape.xml("", canonical, attr.getNodeValue())); +out.print(Escape.xml("", true, attr.getNodeValue())); out.print('"'); } out.print('>'); @@ -90,29 +78,17 @@ public class DOMWriter { // handle entity reference nodes case Node.ENTITY_REFERENCE_NODE: -if (canonical) { -printChildren(node); -} else { -out.print('&'); -out.print(node.getLocalName()); -out.print(';'); -} +printChildren(node); break; // print cdata sections case Node.CDATA_SECTION_NODE: -if (canonical) { -out.print(Escape.xml("", canonical, node.getNodeValue())); -} else { -out.print(""); -} +out.print(Escape.xml("", true, node.getNodeValue())); break; // print text case Node.TEXT_NODE: -out.print(Escape.xml("", canonical, node.getNodeValue())); +out.print(Escape.xml("", true, node.getNodeValue())); break; // print processing instruction - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: svn commit: r1811704 - in /tomcat/trunk: java/org/apache/catalina/manager/StatusTransformer.java webapps/docs/changelog.xml
On 10/10/17 15:22, r...@apache.org wrote: > Author: remm > Date: Tue Oct 10 14:22:31 2017 > New Revision: 1811704 > > URL: http://svn.apache.org/viewvc?rev=1811704&view=rev > Log: > 61603: Add XML escaping to the names of some memory pools. The > escape/filterXml methods could be factored out maybe (although it would add > imports on other JARs). I took a look at the refactoring and there were multiple versions of XML and HTML escaping. As it looked to be a strong candidate for refactoring, I went ahead and did that. In terms of dependencies, it didn't require any changes. Mark - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: svn commit: r1812489 - in /tomcat/trunk: java/org/apache/catalina/connector/ java/org/apache/catalina/manager/ java/org/apache/catalina/manager/host/ java/org/apache/catalina/servlets/ java/org/ap
2017-10-18 13:39 GMT+03:00 : > Author: markt > Date: Wed Oct 18 10:39:54 2017 > New Revision: 1812489 > > URL: http://svn.apache.org/viewvc?rev=1812489&view=rev > Log: > Refactor XML and HTML escaping to a single location > > Added: > tomcat/trunk/java/org/apache/tomcat/util/security/Escape.java (with > props) > Modified: ... Good. It's more than I hoped for. Several comments below. > Added: tomcat/trunk/java/org/apache/tomcat/util/security/Escape.java > URL: > http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/security/Escape.java?rev=1812489&view=auto > == > --- tomcat/trunk/java/org/apache/tomcat/util/security/Escape.java (added) > +++ tomcat/trunk/java/org/apache/tomcat/util/security/Escape.java Wed Oct 18 > 10:39:54 2017 > @@ -0,0 +1,160 @@ > +/* ... > + */ > +package org.apache.tomcat.util.security; > + > +/** > + * Provides utility methods to escape content for different contexts. It is > + * critical that the escaping used is correct for the context in which the > data > + * is to be used. > + */ > +public class Escape { > + > +/** > + * Escape content for use in HTML. This escaping is suitable for the > + * following uses: > + * > + * Element content when the escaped data will be placed directly > inside > + * tags such as,
etc. > + * Attribute values when the attribute value is quoted with " or > + * '. > + * > + * > + * @param content The content to escape > + * > + * @return The escaped content or {@code null} if the content was > + * {@code null} > + */ > +public static String htmlElementContent(String content) { > +if (content == null) { > +return null; > +} > + > +StringBuilder sb = new StringBuilder(); > + > +for (int i = 0; i < content.length(); i++) { > +char c = content.charAt(i); > +if (c == '<') { > +sb.append("<"); > +} else if (c == '>') { > +sb.append(">"); > +} else if (c == '\'') { > +sb.append("'"); Writing the above as decimal number will save one character. 'x' sb.append("'"); (Also I wondered whether HTML spec supports hex notation here. In [1] -> 5.3.1 Numeric character references -> Hex numerals are supported. -> a "Note" says that original spec did not have it, but it was added later (in a document dating year 1998) ) [1] https://www.w3.org/TR/1999/REC-html401-19991224/charset.html#h-5.3.1 > +} else if (c == '&') { > +sb.append("&"); > +} else if (c == '"') { > +sb.append("""); > +} else if (c == '/') { > +sb.append("/"); sb.append("/"); > +} else { > +sb.append(c); > +} > +} > + > +return sb.toString(); > +} > + > + > +/** > + * Convert the object to a string via {@link Object#toString()} and HTML > + * escape the resulting string for use in HTMl content. s/HTMl/HTML/ > + * > + * @param obj The object to convert to String and then escape > + * > + * @return The escaped content or "?" if obj is > + * {@code null} > + */ > +public static String htmlElementContext(Object obj) { > +if (obj == null) { > +return "?"; > +} > + > +try { > +return xml(obj.toString()); I think that the above was supposed to be a call to "htmlElementContext()", according to the method name. > +} catch (Exception e) { > +return null; > +} > +} > + > + > +/** > + * Escape content for use in XML. > + * > + * @param content The content to escape > + * > + * @return The escaped content or {@code null} if the content was > + * {@code null} > + */ > +public static String xml(String content) { > +return xml(null, content); > +} > + > + > +/** > + * Escape content for use in XML. > + * > + * @param ifNullThe value to return if content is {@code null} > + * @param content The content to escape > + * > + * @return The escaped content or the value of ifNull if the content was > + * {@code null} > + */ > +public static String xml(String ifNull, String content) { > +return xml(ifNull, false, content); > +} > + > + > +/** > + * Escape content for use in XML. > + * > + * @param ifNullThe value to return if content is {@code null} > + * @param escapeCRLFShould CR and LF also be escaped? > + * @param content The content to escape > + * > + * @return The escaped content or the value of ifNull if the content was {@code ifNull} > + * {@code null} > + */ > +public static String xml(String ifNull, boole
svn commit: r1812511 - in /tomcat/tc8.0.x/trunk: ./ java/org/apache/catalina/loader/WebappClassLoaderBase.java
Author: markt Date: Wed Oct 18 13:23:27 2017 New Revision: 1812511 URL: http://svn.apache.org/viewvc?rev=1812511&view=rev Log: Remove the ResourceBundle memory leak protection since I am as sure as I can be that the original report was a false positive. ResourceBundle uses a WeakReference and it is likely what was originally observed was an instance of the genuine GC root not being visible in the profiler. Modified: tomcat/tc8.0.x/trunk/ (props changed) tomcat/tc8.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoaderBase.java Propchange: tomcat/tc8.0.x/trunk/ -- --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Oct 18 13:23:27 2017 @@ -1,2 +1,2 @@ /tomcat/tc8.5.x/trunk:1735042,1737966,1743139-1743140,1744151,1747537,1747925,1748002,1754614,1754643,1762124,1762183,1762203,1763792,1772948,1777014,1779719,1782037,1782240,1782386-1782387,1785669,1786845,1788249,1788324,1788905,1789216,1789335,1791528,1791558,1796697-1796698,1797521,1798543,1799162,1800143,1801693,1802805,1806799,1807079-1807080,1808880,1809831,1812093,1812143,1812145,1812319 -/tomcat/trunk:1636524,1637156,1637176,1637188,1637331,1637684,1637695,1637890,1637892,1638720-1638725,1639653,1640010,1640083-1640084,1640088,1640275,1640322,1640347,1640361,1640365,1640403,1640410,1640652,1640655-1640658,1640688,1640700-1640883,1640903,1640976,1640978,1641000,1641026,1641038-1641039,1641051-1641052,1641058,1641064,1641300,1641369,1641374,1641380,1641486,1641634,1641656-1641692,1641704,1641707-1641718,1641720-1641722,1641735,1641981,1642233,1642280,1642554,1642564,1642595,1642606,1642668,1642679,1642697,1642699,1642766,1643002,1643045,1643054-1643055,1643066,1643121,1643128,1643206,1643209-1643210,1643216,1643249,1643270,1643283,1643309-1643310,1643323,1643365-1643366,1643370-1643371,1643465,1643474,1643536,1643570,1643634,1643649,1643651,1643654,1643675,1643731,1643733-1643734,1643761,1643766,1643814,1643937,1643963,1644017,1644169,1644201-1644203,1644321,1644323,1644516,1644523,1644529,1644535,1644730,1644768,1644784-1644785,1644790,1644793,1644815,1644884,1644886 ,1644890,1644892,1644910,1644924,1644929-1644930,1644935,1644989,1645011,1645247,1645355,1645357-1645358,1645455,1645465,1645469,1645471,1645473,1645475,1645486-1645488,1645626,1645641,1645685,1645743,1645763,1645951-1645953,1645955,1645993,1646098-1646106,1646178,1646220,1646302,1646304,1646420,1646470-1646471,1646476,1646559,1646717-1646723,1646773,1647026,1647042,1647530,1647655,1648304,1648815,1648907,1649973,1650081,1650365,1651116,1651120,1651280,1651470,1652938,1652970,1653041,1653471,1653550,1653574,1653797,1653815-1653816,1653819,1653840,1653857,1653888,1653972,1654013,1654030,1654050,1654123,1654148,1654159,1654513,1654515,1654517,1654522,1654524,1654725,1654735,1654766,1654785,1654851-1654852,1654978,1655122-1655124,1655126-1655127,1655129-1655130,1655132-1655133,1655312,1655351,1655438,1655441,1655454,168,1656087,1656299,1656319,1656331,1656345,1656350,1656590,1656648-1656650,1656657,1657041,1657054,1657374,1657492,1657510,1657565,1657580,1657584,1657586,1657589,1657 592,1657607,1657609,1657682,1657907,1658207,1658734,1658781,1658790,1658799,1658802,1658804,1658833,1658840,1658966,1659043,1659053,1659059,1659174,1659184,1659188-1659189,1659216,1659263,1659293,1659304,1659306-1659307,1659382,1659384,1659428,1659471,1659486,1659505,1659516,1659521,1659524,1659559,1659562,1659803,1659806,1659814,1659833,1659862,1659905,1659919,1659948,1659967,1659983-1659984,1660060,1660074,1660077,1660133,1660168,1660331-1660332,1660353,1660358,1660924,1661386,1661770,1661867,1661972,1661990,1662200,1662308-1662309,1662548,1662614,1662696,1662736,1662985,1662988-1662989,1663264,1663277,1663298,1663534,1663562,1663676,1663715,1663754,1663768,1663772,1663781,1663893,1663995,1664143,1664163,1664174,1664301,1664317,1664347,1664657,1664659,1664710,1664863-1664864,1664866,1665085,1665292,1665559,1665653,1665661,1665672,1665694,1665697,1665736,1665779,1665976-1665977,1665980-1665981,1665985-1665986,1665989,1665998,1666004,1666008,1666013,1666017,1666024,1666116,1666386-1 666387,1666494,1666496,1666552,1666569,1666579,137,149,1666757,1666966,1666972,1666985,1666995,1666997,1667292,1667402,1667406,1667546,1667615,1667630,1667636,1667688,1667764,1667871,1668026,1668135,1668193,1668593,1668596,1668630,1668639,1668843,1669353,1669370,1669451,1669800,1669838,1669876,1669882,1670394,1670433,1670591,1670598-1670600,1670610,1670631,1670719,1670724,1670726,1670730,1670940,1671112,1672272,1672284,1673754,1674294,1675461,1675486,1675594,1675830,1676231,1676250-1676251,1676364,1676381,1676393,1676479,1676525,1676552,1676615,1676630,1676634,1676721,1676926,1676943,1677140,1677802,1678011,1678162,1678174,1678339,1678426-1678427,1678694,1678701,1679534,1679708,1679710,1679716,1680034,1680246,1681056,1681123,1681138,1681280,1681283,1681286,1681450,1681697,1681699,1681701,1681729,1681770,1681779,1681793,1681
svn commit: r1812512 - in /tomcat/tc7.0.x/trunk: ./ java/org/apache/catalina/loader/WebappClassLoaderBase.java
Author: markt Date: Wed Oct 18 13:24:57 2017 New Revision: 1812512 URL: http://svn.apache.org/viewvc?rev=1812512&view=rev Log: Remove the ResourceBundle memory leak protection since I am as sure as I can be that the original report was a false positive. ResourceBundle uses a WeakReference and it is likely what was originally observed was an instance of the genuine GC root not being visible in the profiler. Modified: tomcat/tc7.0.x/trunk/ (props changed) tomcat/tc7.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoaderBase.java Propchange: tomcat/tc7.0.x/trunk/ -- --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Oct 18 13:24:57 2017 @@ -1,3 +1,3 @@ -/tomcat/tc8.0.x/trunk:1636525,1637336,1637685,1637709,1638726,1640089,1640276,1640349,1640363,1640366,1640642,1640672,1640674,1640689,1640884,1641001,1641065,1641067,1641375,1641638,1641723,1641726,1641729-1641730,1641736,1641988,1642669-1642670,1642698,1642701,1643205,1643215,1643217,1643230,1643232,1643273,1643285,1643329-1643330,1643511,1643513,1643521,1643539,1643571,1643581-1643582,1643635,1643655,1643738,1643964,1644018,1644333,1644525,1644954,1644992,1645014,1645360,1645456,1645627,1645642,1645686,1645903-1645904,1645908-1645909,1645913,1645920,1646458,1646460-1646462,1646735,1646738-1646741,1646744,1646746,1646748-1646755,1646757,1646759-1646760,1647043,1648816,1651420-1651422,1651844,1652926,1652939-1652940,1652973,1653798,1653817,1653841,1654042,1654161,1654736,1654767,1654787,1656592,1659907,1662986,1663265,1663278,1663325,1663535,1663567,1663679,1663997,1664175,1664321,1664872,1665061,1665086,1666027,1666395,1666503,1666506,1666560,1666570,1666581,1666759,1666967,1666988 ,1667553-1667555,1667558,1667617,1667633,1667637,1667747,1667767,1667873,1668028,1668137,1668634,1669432,1669801,1669840,1669895-1669896,1670398,1670435,1670592,1670605-1670607,1670609,1670632,1670720,1670725,1670727,1670731,1671114,1672273,1672285,1673759,1674220,1674295,1675469,1675488,1675595,1675831,1676232,1676367-1676369,1676382,1676394,1676483,1676556,1676635,1678178,1679536,1679988,1680256,1681124,1681182,1681703,1681730,1681840,1681864,1681869,1682010,1682034,1682047,1682052-1682053,1682062,1682064,1682070,1682312,1682325,1682331,1682386,1684367,1684385,1685759,1685774,1685827,1685892,1687341,1688904,1689358,1689657,1689921,1692850,1693093,1693108,1693324,1694060,1694115,1694291,1694427,1694431,1694503,1694549,1694789,1694873,1694881,1695356,1695372,1695823-1695825,1696200,1696281,1696379,1696468,1700608,1700871,1700897,1700978,1701094,1701124,1701608,1701668,1701676,1701766,1701944,1702248,1702252,1702314,1702390,1702723,1702725,1702728,1702730,1702733,1702735,1702737,1702 739,1702742,1702744,1702748,1702751,1702754,1702758,1702760,1702763,1702766,1708779,1708782,1708806,1709314,1709670,1710347,1710442,1710448,1710490,1710574,1710578,1712226,1712229,1712235,1712255,1712618,1712649,1712655,1712860,1712899,1712903,1712906,1712913,1712926,1712975,1713185,1713262,1713287,1713613,1713621,1713872,1713976,1713994,1713998,1714004,1714013,1714059,1714538,1714580,1715189,1715207,1715544,1715549,1715637,1715639-1715645,1715667,1715683,1715866,1715978,1715981,1716216-1716217,1716355,1716414,1716421,1717208-1717209,1717257,1717283,1717288,1717291,1717421,1717517,1717529,1718797,1718840-1718843,1719348,1719357-1719358,1719400,1719491,1719737,1720235,1720396,1720442,1720446,1720450,1720463,1720658-1720660,1720756,1720816,1721813,1721818,1721831,1721861,1721867,1721882,1722523,1722527,1722800,1722926,1722941,1722997,1723130,1723440,1723488,1723890,1724434,1724674,1724792,1724803,1724902,1725128,1725131,1725154,1725167,1725911,1725921,1725929,1725963-1725965,1725970,1 725974,1726171-1726173,1726175,1726179-1726182,1726190-1726191,1726195-1726200,1726203,1726226,1726576,1726630,1726992,1727029,1727037,1727671,1727676,1727900,1728028,1728092,1728439,1728449,1729186,1729362,1731009,1731303,1731867,1731872,1731874,1731876,1731885,1731947,1731955,1731959,1731977,1731984,1732360,1732490,1732672,1732902,1733166,1733603,1733619,1733735,1733752,1733764,1733915,1733941,1733964,1734115,1734133,1734261,1734421,1734531,1736286,1737967,1738173,1738182,1738992,1739039,1739089-1739091,1739294,1739777,1739821,1739981,1740513,1740726,1741019,1741162,1741217,1743647,1743681,1744152,1744272,1746732,1746750,1752739,1754615,1755886,1756018,1758563,1759565,1761686,1762173,1762206,1766280,1767507-1767508,1767653,1767656,1769267,1772949,1773521,1773527,1774104,1777015,1777213,1779330,1783151,1784188,1784966,1785670,1786846,1788260,1788999,1789140,1789402,1791529,1791559,1795291,1796906,1797523,1799214,1800998-1800999,1801003,1801007-1801008,1801017,1801020,1802808,180281 4,1803618,1806107,1806733,1807082-1807083,1808707,1808884,1809267,1809644,1809832,1809904,1809915,1809924,1810283,1810328,1810574,1810576-1810577,1810584,1810588,1811141,1811842,1812090,1812096,1812150 +/tomcat/tc8.0.x/trunk:1636525,1637336,16
svn commit: r1812513 - /tomcat/trunk/java/org/apache/tomcat/util/security/Escape.java
Author: markt Date: Wed Oct 18 13:30:35 2017 New Revision: 1812513 URL: http://svn.apache.org/viewvc?rev=1812513&view=rev Log: Improvements and copy/paste fix after kkolinko review Modified: tomcat/trunk/java/org/apache/tomcat/util/security/Escape.java Modified: tomcat/trunk/java/org/apache/tomcat/util/security/Escape.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/security/Escape.java?rev=1812513&r1=1812512&r2=1812513&view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/security/Escape.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/security/Escape.java Wed Oct 18 13:30:35 2017 @@ -52,25 +52,25 @@ public class Escape { } else if (c == '>') { sb.append(">"); } else if (c == '\'') { -sb.append("'"); +sb.append("'"); } else if (c == '&') { sb.append("&"); } else if (c == '"') { sb.append("""); } else if (c == '/') { -sb.append("/"); +sb.append("/"); } else { sb.append(c); } } -return sb.toString(); +return (sb.length() > content.length()) ? sb.toString() : content; } /** * Convert the object to a string via {@link Object#toString()} and HTML - * escape the resulting string for use in HTMl content. + * escape the resulting string for use in HTML content. * * @param obj The object to convert to String and then escape * @@ -83,7 +83,7 @@ public class Escape { } try { -return xml(obj.toString()); +return htmlElementContent(obj.toString()); } catch (Exception e) { return null; } @@ -109,8 +109,8 @@ public class Escape { * @param ifNullThe value to return if content is {@code null} * @param content The content to escape * - * @return The escaped content or the value of ifNull if the content was - * {@code null} + * @return The escaped content or the value of {@code ifNull} if the + * content was {@code null} */ public static String xml(String ifNull, String content) { return xml(ifNull, false, content); @@ -155,6 +155,6 @@ public class Escape { } } -return sb.toString(); +return (sb.length() > content.length()) ? sb.toString(): content; } } - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1812514 - in /tomcat/tc8.5.x/trunk: ./ java/org/apache/tomcat/util/security/Escape.java
Author: markt Date: Wed Oct 18 13:31:04 2017 New Revision: 1812514 URL: http://svn.apache.org/viewvc?rev=1812514&view=rev Log: Improvements and copy/paste fix after kkolinko review Modified: tomcat/tc8.5.x/trunk/ (props changed) tomcat/tc8.5.x/trunk/java/org/apache/tomcat/util/security/Escape.java Propchange: tomcat/tc8.5.x/trunk/ -- --- svn:mergeinfo (original) +++ svn:mergeinfo Wed Oct 18 13:31:04 2017 @@ -1,2 +1,2 @@ /tomcat/tc8.0.x/trunk:1809644 -/tomcat/trunk:1734785,1734799,1734845,1734928,1735041,1735044,1735480,1735577,1735597,1735599-1735600,1735615,1736145,1736162,1736209,1736280,1736297,1736299,1736489,1736646,1736703,1736836,1736849,1737104-1737105,1737112,1737117,1737119-1737120,1737155,1737157,1737192,1737280,1737339,1737632,1737664,1737715,1737748,1737785,1737834,1737860,1737903,1737959,1738005,1738007,1738014-1738015,1738018,1738022,1738039,1738043,1738059-1738060,1738147,1738149,1738174-1738175,1738261,1738589,1738623-1738625,1738643,1738816,1738850,1738855,1738946-1738948,1738953-1738954,1738979,1738982,1739079-1739081,1739087,1739113,1739153,1739172,1739176,1739191,1739474,1739492,1739726,1739762,1739775,1739814,1739817-1739818,1739975,1740131,1740324,1740465,1740495,1740508-1740509,1740520,1740535,1740707,1740803,1740810,1740969,1740980,1740991,1740997,1741015,1741033,1741036,1741058,1741060,1741080,1741147,1741159,1741164,1741173,1741181,1741190,1741197,1741202,1741208,1741213,1741221,1741225,1741232,1741409 ,1741501,1741677,1741892,1741896,1741984,1742023,1742042,1742071,1742090,1742093,1742101,1742105,1742111,1742139,1742146,1742148,1742166,1742181,1742184,1742187,1742246,1742248-1742251,1742263-1742264,1742268,1742276,1742369,1742387,1742448,1742509-1742512,1742917,1742919,1742933,1742975-1742976,1742984,1742986,1743019,1743115,1743117,1743124-1743125,1743134,1743425,1743554,1743679,1743696-1743698,1743700-1743701,1744058,1744064-1744065,1744125,1744149,1744194,1744229,1744270,1744323,1744432,1744684,1744697,1744705,1744713,1744760,1744786,1745083,1745142-1745143,1745145,1745177,1745179-1745180,1745227,1745248,1745254,1745337,1745467,1745473,1745535,1745576,1745735,1745744,1746304,1746306-1746307,1746319,1746327,1746338,1746340-1746341,1746344,1746427,1746441,1746473,1746490,1746492,1746495-1746496,1746499-1746501,1746503-1746507,1746509,1746549,1746551,1746554,1746556,1746558,1746584,1746620,1746649,1746724,1746939,1746989,1747014,1747028,1747035,1747210,1747225,1747234,1747253,1747 404,1747506,1747536,1747924,1747980,1747993,1748001,1748253,1748452,1748547,1748629,1748676,1748715,1749287,1749296,1749328,1749373,1749465,1749506,1749508,1749665-1749666,1749763,1749865-1749866,1749898,1749978,1749980,1750011,1750015,1750056,1750480,1750617,1750634,1750692,1750697,1750700,1750703,1750707,1750714,1750718,1750723,1750774,1750899,1750975,1750995,1751061,1751097,1751173,1751438,1751447,1751463,1751702,1752212,1752737,1752745,1753078,1753080,1753358,1753363,1754111,1754140-1754141,1754281,1754310,1754445,1754467,1754494,1754496,1754528,1754532-1754533,1754613,1754714,1754874,1754941,1754944,1754950-1754951,1755005,1755007,1755009,1755132,1755180-1755181,1755185,1755190,1755204-1755206,1755208,1755214,1755224,1755227,1755230,1755629,1755646-1755647,1755650,1755653,1755675,1755680,1755683,1755693,1755717,1755731-1755737,1755812,1755828,1755884,1755890,1755918-1755919,1755942,1755958,1755960,1755970,1755993,1756013,1756019,1756039,1756056,1756083-1756114,1756175,1756288-1 756289,1756408-1756410,1756778,1756798,1756878,1756898,1756939,1757123-1757124,1757126,1757128,1757132-1757133,1757136,1757145,1757167-1757168,1757175,1757180,1757182,1757195,1757271,1757278,1757347,1757353-1757354,1757363,1757374,1757399,1757406,1757408,1757485,1757495,1757499,1757527,1757578,1757684,1757722,1757727,1757790,1757799,1757813,1757853,1757883,1757903,1757976,1757997,1758000,1758058,1758072-1758075,1758078-1758079,1758223,1758257,1758261,1758276,1758292,1758369,1758378-1758383,1758421,1758423,1758425-1758427,1758430,1758443,1758448,1758459,1758483,1758486-1758487,1758499,1758525,1758556,1758580,1758582,1758584,1758588,1758842,1759019,1759212,1759224,1759227,1759252,1759274,1759513-1759516,1759611,1759757,1759785-1759790,1760005,1760022,1760109-1760110,1760135,1760200-1760201,1760227,1760300,1760397,1760446,1760454,1760640,1760648,1761057,1761422,1761491,1761498,1761500-1761501,1761550,1761553,1761572,1761574,1761625-1761626,1761628,1761682,1761740,1761752,1762051-176205 3,1762123,1762168,1762172,1762182,1762201-1762202,1762204,1762208,1762288,1762296,1762324,1762348,1762353,1762362,1762374,1762492,1762503,1762505,1762541,1762608,1762710,1762753,1762766,1762769,1762944,1762947,1762953,1763167,1763179,1763232,1763259,1763271-1763272,1763276-1763277,1763319-1763320,1763370,1763372,1763375,1763377,1763393,1763412,1763430,1763450,1763462,1763505,1763511-1763512,1763516,1763518,1763520,1763529,1763559,1763565,1763568,1763
Re: svn commit: r1812489 - in /tomcat/trunk: java/org/apache/catalina/connector/ java/org/apache/catalina/manager/ java/org/apache/catalina/manager/host/ java/org/apache/catalina/servlets/ java/org/ap
On 18/10/17 13:45, Konstantin Kolinko wrote: > 2017-10-18 13:39 GMT+03:00 : >> Author: markt >> Date: Wed Oct 18 10:39:54 2017 >> New Revision: 1812489 >> >> URL: http://svn.apache.org/viewvc?rev=1812489&view=rev >> Log: >> Refactor XML and HTML escaping to a single location >> >> Added: >> tomcat/trunk/java/org/apache/tomcat/util/security/Escape.java (with >> props) >> Modified: > ... > > Good. It's more than I hoped for. Several comments below. Thanks for the review. I've addressed the issues you highlighted and back-ported to 8.5.x as well. Mark - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
buildbot success in on tomcat-8-trunk
The Buildbot has detected a restored build on builder tomcat-8-trunk while building . Full details are available at: https://ci.apache.org/builders/tomcat-8-trunk/builds/1169 Buildbot URL: https://ci.apache.org/ Buildslave for this Build: silvanus_ubuntu Build Reason: The AnyBranchScheduler scheduler named 'on-tomcat-8-commit' triggered this build Build Source Stamp: [branch tomcat/tc8.0.x/trunk] 1812511 Blamelist: markt Build succeeded! Sincerely, -The Buildbot - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 61632] New: Improve search for tcnative-1.dll on Windows when current directory is not bin/ (e.g. in Eclipse IDE, separate catalina_base)
https://bz.apache.org/bugzilla/show_bug.cgi?id=61632 Bug ID: 61632 Summary: Improve search for tcnative-1.dll on Windows when current directory is not bin/ (e.g. in Eclipse IDE, separate catalina_base) Product: Tomcat 8 Version: 8.5.23 Hardware: PC Status: NEW Severity: enhancement Priority: P2 Component: Catalina Assignee: dev@tomcat.apache.org Reporter: knst.koli...@gmail.com Target Milestone: In short: - When running Tomcat on Windows, if current directory (when starting Tomcat) is not $CATALINA_HOME\bin then the tcnative-1.dll is not found. The default "java.library.path" on Windows includes "." current directory, but does not include "$CATALINA_HOME\bin". My main concern is running Tomcat as a Server in Eclipse IDE. Steps to reproduce: 1. Download and unzip apache-tomcat-8.5.23-windows-.zip 2. Download, install and run Eclipse IDE for Java EE developers (I am using Neon.3 aka 4.6.3) 3. Create a Tomcat 8.5 server in the IDE https://wiki.apache.org/tomcat/FAQ/Developing#Q6 (Window > Show view > Other... > Server/Servers, add a new server) 4. Start it Result: [[[ Oct 18, 2017 4:17:59 PM org.apache.catalina.core.AprLifecycleListener lifecycleEvent INFO: The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [...;;D:\eclipse_4_6;;.] ]]] In Eclipse the default working directory when running a new server is the same as default working directory of Eclipse IDE. In my case: "D:\eclipse_4_6" Possible ways to resolve this: a. Improve documentation. Add a note and a recipe to https://tomcat.apache.org/tomcat-8.5-doc/apr.html#Windows and https://wiki.apache.org/tomcat/FAQ/Developing#Q6 b. Implement some way to search for tcnative-1.dll in ${catalina.home}/bin ? -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 61632] Improve search for tcnative-1.dll on Windows when current directory is not bin/ (e.g. in Eclipse IDE, separate catalina_base)
https://bz.apache.org/bugzilla/show_bug.cgi?id=61632 Konstantin Kolinko changed: What|Removed |Added OS||All --- Comment #1 from Konstantin Kolinko --- > b. Implement some way to search for tcnative-1.dll in ${catalina.home}/bin ? For this solution I thought that maybe 1. Allow to configure an explicit path to the dll in AprLifecycleListener 2. Use System.load(filename) call to load the library from an explicitly specified filename. The current code (in org.apache.tomcat.jni.Library) calls a different method - System.loadLibrary(name). Generally, loading a DDL from an explicit path is better than performing a search. A deficiency in this solution is that such configuration is specific to Microsoft Windows. It cannot be included in the default *.zip download of Apache Tomcat, but it can be included "Windows" flavors of zip downloads. -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 61632] Improve search for tcnative-1.dll on Windows when current directory is not bin/ (e.g. in Eclipse IDE, separate catalina_base)
https://bz.apache.org/bugzilla/show_bug.cgi?id=61632 --- Comment #2 from Konstantin Kolinko --- > a. Improve documentation. Add a note and a recipe to My recipe is to configure "java.library.path" explicitly. For running Tomcat in Eclipse IDE the steps are the following: 1. Open edit dialog for the Server (In "Servers" view select the server and double-click it or press "F3" (Open)) See http://markmail.org/message/7zkyocvph56b6t6q 2. Click "Open launch configuration" link An "Edit launch configuration properties" dialog opens. 3. Switch to "Arguments" tab and edit "VM arguments". Add -Djava.library.path="\bin" -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 60963] Optimize class loading for unpackWARs=false case
https://bz.apache.org/bugzilla/show_bug.cgi?id=60963 Sebastien Tardif changed: What|Removed |Added CC||sebtar...@ncf.ca -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1812551 - in /tomcat/trunk: java/org/apache/tomcat/util/net/Nio2Endpoint.java webapps/docs/changelog.xml
Author: remm Date: Wed Oct 18 17:01:08 2017 New Revision: 1812551 URL: http://svn.apache.org/viewvc?rev=1812551&view=rev Log: Cleanup the async IO syncs a bit. Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java tomcat/trunk/webapps/docs/changelog.xml Modified: tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java?rev=1812551&r1=1812550&r2=1812551&view=diff == --- tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java (original) +++ tomcat/trunk/java/org/apache/tomcat/util/net/Nio2Endpoint.java Wed Oct 18 17:01:08 2017 @@ -894,14 +894,14 @@ public class Nio2Endpoint extends Abstra } } if (complete) { -readPending.release(); -if (state.block == BlockingMode.BLOCK && currentState != CompletionState.INLINE) { -synchronized (this) { +synchronized (state) { +readPending.release(); +if (state.block == BlockingMode.BLOCK && currentState != CompletionState.INLINE) { +state.state = currentState; +state.notify(); +} else { state.state = currentState; -notify(); } -} else { -state.state = currentState; } if (completion && state.handler != null) { state.handler.completed(Long.valueOf(state.nBytes), state.attachment); @@ -921,14 +921,14 @@ public class Nio2Endpoint extends Abstra ioe = new IOException(exc); } setError(ioe); -readPending.release(); -if (state.block == BlockingMode.BLOCK) { -synchronized (this) { +synchronized (this) { +readPending.release(); +if (state.block == BlockingMode.BLOCK) { +state.state = Nio2Endpoint.isInline() ? CompletionState.ERROR : CompletionState.DONE; +state.notify(); +} else { state.state = Nio2Endpoint.isInline() ? CompletionState.ERROR : CompletionState.DONE; -notify(); } -} else { -state.state = Nio2Endpoint.isInline() ? CompletionState.ERROR : CompletionState.DONE; } if (exc instanceof AsynchronousCloseException) { // If already closed, don't call onError and close again @@ -963,14 +963,14 @@ public class Nio2Endpoint extends Abstra } } if (complete) { -writePending.release(); -if (state.block == BlockingMode.BLOCK && currentState != CompletionState.INLINE) { -synchronized (this) { +synchronized (state) { +writePending.release(); +if (state.block == BlockingMode.BLOCK && currentState != CompletionState.INLINE) { +state.state = currentState; +state.notify(); +} else { state.state = currentState; -notify(); } -} else { -state.state = currentState; } if (completion && state.handler != null) { state.handler.completed(Long.valueOf(state.nBytes), state.attachment); @@ -990,14 +990,14 @@ public class Nio2Endpoint extends Abstra ioe = new IOException(exc); } setError(ioe); -writePending.release(); -if (state.block == BlockingMode.BLOCK) { -synchronized (this) { +synchronized (state) { +writePending.release(); +if (state.block == BlockingMode.BLOCK) { +state.state = Nio2Endpoint.isInline() ? CompletionState.ERROR : CompletionState.DONE; +state.notify(); +} else { state.state = Nio2Endpoint.isInline() ? CompletionState.ERROR : CompletionState.DONE; -notify(); } -} else { -state.state = N
svn commit: r1812581 - in /tomcat/tc7.0.x/trunk: java/org/apache/catalina/loader/ java/org/apache/tomcat/util/compat/ java/org/apache/tomcat/util/scan/ webapps/docs/
Author: markt Date: Wed Oct 18 20:53:55 2017 New Revision: 1812581 URL: http://svn.apache.org/viewvc?rev=1812581&view=rev Log: Fix https://bz.apache.org/bugzilla/show_bug.cgi?id=61601 Handle multi-release JARs for packed and unpacked web applications Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoaderBase.java tomcat/tc7.0.x/trunk/java/org/apache/catalina/loader/WebappLoader.java tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/compat/Jre7Compat.java tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/compat/Jre8Compat.java tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/compat/Jre9Compat.java tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/compat/JreCompat.java tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/scan/FileUrlJar.java tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/scan/UrlJar.java tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoaderBase.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoaderBase.java?rev=1812581&r1=1812580&r2=1812581&view=diff == --- tomcat/tc7.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoaderBase.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/loader/WebappClassLoaderBase.java Wed Oct 18 20:53:55 2017 @@ -3006,7 +3006,7 @@ public abstract class WebappClassLoaderB if (jarFiles[0] == null) { for (int i = 0; i < jarFiles.length; i++) { try { -jarFiles[i] = new JarFile(jarRealFiles[i]); +jarFiles[i] = JreCompat.getInstance().jarFileNewInstance(jarRealFiles[i]); } catch (IOException e) { log.warn(sm.getString("webappClassLoader.jarOpenFail", jarFiles[i]), e); closeJARs(true); @@ -3695,7 +3695,7 @@ public abstract class WebappClassLoaderB JarFile jarFile = null; try { -jarFile = new JarFile(file); +jarFile = JreCompat.getInstance().jarFileNewInstance(file); for (int i = 0; i < triggers.length; i++) { Class clazz = null; try { Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/loader/WebappLoader.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/loader/WebappLoader.java?rev=1812581&r1=1812580&r2=1812581&view=diff == --- tomcat/tc7.0.x/trunk/java/org/apache/catalina/loader/WebappLoader.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/loader/WebappLoader.java Wed Oct 18 20:53:55 2017 @@ -59,6 +59,7 @@ import org.apache.naming.resources.DirCo import org.apache.naming.resources.DirContextURLStreamHandlerFactory; import org.apache.naming.resources.Resource; import org.apache.tomcat.util.ExceptionUtils; +import org.apache.tomcat.util.compat.JreCompat; import org.apache.tomcat.util.modeler.Registry; import org.apache.tomcat.util.res.StringManager; @@ -999,7 +1000,7 @@ public class WebappLoader extends Lifecy } try { -JarFile jarFile = new JarFile(destFile); +JarFile jarFile = JreCompat.getInstance().jarFileNewInstance(destFile); classLoader.addJar(filename, jarFile, destFile); } catch (Exception ex) { // Catch the exception if there is an empty jar file Modified: tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/compat/Jre7Compat.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/compat/Jre7Compat.java?rev=1812581&r1=1812580&r2=1812581&view=diff == --- tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/compat/Jre7Compat.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/compat/Jre7Compat.java Wed Oct 18 20:53:55 2017 @@ -22,6 +22,8 @@ import java.util.Locale; class Jre7Compat extends JreCompat { +private static final int RUNTIME_MAJOR_VERSION = 7; + private static final Method forLanguageTagMethod; @@ -55,4 +57,10 @@ class Jre7Compat extends JreCompat { return null; } } + + +@Override +public int jarFileRuntimeMajorVersion() { +return RUNTIME_MAJOR_VERSION; +} } Modified: tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/compat/Jre8Compat.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/compat/Jre8Compat.java?rev=1812581&r1=1812580&r2=1812581&view=diff == --- tomcat/tc7.0.x/trunk/java/org/apache/tomcat/util/compat/Jre8Compat.java (original) +
[Bug 61601] Make Tomcat multi-release JAR aware
https://bz.apache.org/bugzilla/show_bug.cgi?id=61601 Mark Thomas changed: What|Removed |Added Resolution|--- |FIXED Status|NEW |RESOLVED --- Comment #2 from Mark Thomas --- Fixed in: - trunk for 9.0.2 onwards - 8.5.x for 8.5.24 onwards - 8.0.x for 8.0.48 onwards - 7.0.x for 7.0.83 onwards -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 61634] New: URLs with double consecutive slashes stopped working in 8.0.45 in some scenarios
https://bz.apache.org/bugzilla/show_bug.cgi?id=61634 Bug ID: 61634 Summary: URLs with double consecutive slashes stopped working in 8.0.45 in some scenarios Product: Tomcat 8 Version: 8.0.45 Hardware: PC Status: NEW Severity: normal Priority: P2 Component: Catalina Assignee: dev@tomcat.apache.org Reporter: m...@feex.com Target Milestone: Created attachment 35437 --> https://bz.apache.org/bugzilla/attachment.cgi?id=35437&action=edit Contains ROOT.war and context2.war Attached are two war files that demonstrate the issue - ROOT.war and context2.war. There are two contexts - ROOT, that uses a url rewrite filter (tuckey) to forward all requests to the second context - context2 (which also uses a rewrite filter). Using 8.0.44 and the url http://localhost:8080/index//index.html everything works ok (note the double slash). Using 8.0.45 with the same url returns 404. Also getting a 404 in the latest 8.0.x release which is currently 8.0.47. -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 61634] URLs with double consecutive slashes stopped working in 8.0.45 in some scenarios
https://bz.apache.org/bugzilla/show_bug.cgi?id=61634 m...@feex.com changed: What|Removed |Added Attachment #35437|Contains ROOT.war and |ROOT.war and context2.war description|context2.war| -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[GUMP@vmgump-vm3]: Project tomcat-tc7.0.x-validate (in module tomcat-7.0.x) failed
To whom it may engage... This is an automated request, but not an unsolicited one. For more information please visit http://gump.apache.org/nagged.html, and/or contact the folk at gene...@gump.apache.org. Project tomcat-tc7.0.x-validate has an issue affecting its community integration. This issue affects 1 projects, and has been outstanding for 5 runs. The current state of this project is 'Failed', with reason 'Build Failed'. For reference only, the following projects are affected by this: - tomcat-tc7.0.x-validate : Tomcat 7.x, a web server implementing Java Servlet 3.0, ... Full details are available at: http://vmgump-vm3.apache.org/tomcat-7.0.x/tomcat-tc7.0.x-validate/index.html That said, some information snippets are provided here. The following annotations (debug/informational/warning/error messages) were provided: -DEBUG- Dependency on checkstyle exists, no need to add for property checkstyle.jar. -INFO- Failed with reason build failed The following work was performed: http://vmgump-vm3.apache.org/tomcat-7.0.x/tomcat-tc7.0.x-validate/gump_work/build_tomcat-7.0.x_tomcat-tc7.0.x-validate.html Work Name: build_tomcat-7.0.x_tomcat-tc7.0.x-validate (Type: Build) Work ended in a state of : Failed Elapsed: 26 secs Command Line: /usr/lib/jvm/java-8-oracle/bin/java -Djava.awt.headless=true -Dbuild.sysclasspath=only org.apache.tools.ant.Main -Dgump.merge=/srv/gump/public/gump/work/merge.xml -Dbase.path=/srv/gump/public/workspace/tomcat-7.0.x/tomcat-build-libs -Dcheckstyle.jar=/srv/gump/public/workspace/checkstyle/target/checkstyle-8.4-SNAPSHOT.jar -Dexecute.validate=true validate [Working Directory: /srv/gump/public/workspace/tomcat-7.0.x] CLASSPATH: /usr/lib/jvm/java-8-oracle/lib/tools.jar:/srv/gump/public/workspace/ant/dist/lib/ant.jar:/srv/gump/public/workspace/ant/dist/lib/ant-launcher.jar:/srv/gump/public/workspace/ant/dist/lib/ant-jmf.jar:/srv/gump/public/workspace/ant/dist/lib/ant-junit.jar:/srv/gump/public/workspace/ant/dist/lib/ant-junit4.jar:/srv/gump/public/workspace/ant/dist/lib/ant-swing.jar:/srv/gump/public/workspace/ant/dist/lib/ant-apache-resolver.jar:/srv/gump/public/workspace/ant/dist/lib/ant-apache-xalan2.jar:/srv/gump/public/workspace/xml-commons/java/build/resolver.jar:/srv/gump/public/workspace/checkstyle/target/checkstyle-8.4-SNAPSHOT.jar:/srv/gump/packages/antlr/antlr-3.1.3.jar:/srv/gump/public/workspace/apache-commons/beanutils/dist/commons-beanutils-20171019.jar:/srv/gump/packages/commons-collections3/commons-collections-3.2.1.jar:/srv/gump/public/workspace/commons-cli/target/commons-cli-1.5-SNAPSHOT.jar:/srv/gump/public/workspace/commons-lang-trunk/target/commons-lang3-3.7-SNAPSHOT.jar:/srv/g ump/public/workspace/apache-commons/logging/target/commons-logging-20171019.jar:/srv/gump/public/workspace/apache-commons/logging/target/commons-logging-api-20171019.jar:/srv/gump/public/workspace/google-guava/guava/target/guava-HEAD-jre-SNAPSHOT.jar - [checkstyle] [ERROR] /srv/gump/public/workspace/tomcat-7.0.x/test/org/apache/el/TestELInJsp.java:23: Extra separation in import group before 'org.junit.Assert' [ImportOrder] [checkstyle] [ERROR] /srv/gump/public/workspace/tomcat-7.0.x/test/org/apache/el/TestMethodExpressionImpl.java:30: Extra separation in import group before 'org.junit.Before' [ImportOrder] [checkstyle] [ERROR] /srv/gump/public/workspace/tomcat-7.0.x/test/org/apache/el/TestValueExpressionImpl.java:34: Extra separation in import group before 'org.junit.Test' [ImportOrder] [checkstyle] [ERROR] /srv/gump/public/workspace/tomcat-7.0.x/test/org/apache/el/lang/TestELArithmetic.java:24: Extra separation in import group before 'org.junit.Test' [ImportOrder] [checkstyle] [ERROR] /srv/gump/public/workspace/tomcat-7.0.x/test/org/apache/el/lang/TestELSupport.java:29: Extra separation in import group before 'org.junit.Assert' [ImportOrder] [checkstyle] [ERROR] /srv/gump/public/workspace/tomcat-7.0.x/test/org/apache/el/parser/TestELParser.java:28: Extra separation in import group before 'org.junit.Test' [ImportOrder] [checkstyle] [ERROR] /srv/gump/public/workspace/tomcat-7.0.x/test/org/apache/jasper/compiler/TestAttributeParser.java:24: Extra separation in import group before 'org.junit.Test' [ImportOrder] [checkstyle] [ERROR] /srv/gump/public/workspace/tomcat-7.0.x/test/org/apache/jasper/compiler/TestCompiler.java:28: Extra separation in import group before 'org.junit.Assert' [ImportOrder] [checkstyle] [ERROR] /srv/gump/public/workspace/tomcat-7.0.x/test/org/apache/jasper/compiler/TestGenerator.java:37: Extra separation in import group before 'org.junit.Assert' [ImportOrder] [checkstyle] [ERROR] /srv/gump/public/workspace/tomcat-7.0.x/test/org/apache/jasper/compiler/TestJspConfig.java:24: Extra separation in import group before 'org.junit.Test' [ImportOrder] [checkstyle] [ERROR] /srv/gump/public/workspace/tomcat-7.0.x/test/org/apache/jasper/compiler/TestParser.java:26: Extra sepa
[GUMP@vmgump-vm3]: Project tomcat-tc8.0.x-validate (in module tomcat-8.0.x) failed
To whom it may engage... This is an automated request, but not an unsolicited one. For more information please visit http://gump.apache.org/nagged.html, and/or contact the folk at gene...@gump.apache.org. Project tomcat-tc8.0.x-validate has an issue affecting its community integration. This issue affects 1 projects, and has been outstanding for 5 runs. The current state of this project is 'Failed', with reason 'Build Failed'. For reference only, the following projects are affected by this: - tomcat-tc8.0.x-validate : Tomcat 8.x, a web server implementing the Java Servlet 3.1, ... Full details are available at: http://vmgump-vm3.apache.org/tomcat-8.0.x/tomcat-tc8.0.x-validate/index.html That said, some information snippets are provided here. The following annotations (debug/informational/warning/error messages) were provided: -DEBUG- Dependency on checkstyle exists, no need to add for property checkstyle.jar. -INFO- Failed with reason build failed The following work was performed: http://vmgump-vm3.apache.org/tomcat-8.0.x/tomcat-tc8.0.x-validate/gump_work/build_tomcat-8.0.x_tomcat-tc8.0.x-validate.html Work Name: build_tomcat-8.0.x_tomcat-tc8.0.x-validate (Type: Build) Work ended in a state of : Failed Elapsed: 28 secs Command Line: /usr/lib/jvm/java-8-oracle/bin/java -Djava.awt.headless=true -Dbuild.sysclasspath=only org.apache.tools.ant.Main -Dgump.merge=/srv/gump/public/gump/work/merge.xml -Dbase.path=/srv/gump/public/workspace/tomcat-8.0.x/tomcat-build-libs -Dcheckstyle.jar=/srv/gump/public/workspace/checkstyle/target/checkstyle-8.4-SNAPSHOT.jar -Dexecute.validate=true validate [Working Directory: /srv/gump/public/workspace/tomcat-8.0.x] CLASSPATH: /usr/lib/jvm/java-8-oracle/lib/tools.jar:/srv/gump/public/workspace/ant/dist/lib/ant.jar:/srv/gump/public/workspace/ant/dist/lib/ant-launcher.jar:/srv/gump/public/workspace/ant/dist/lib/ant-jmf.jar:/srv/gump/public/workspace/ant/dist/lib/ant-junit.jar:/srv/gump/public/workspace/ant/dist/lib/ant-junit4.jar:/srv/gump/public/workspace/ant/dist/lib/ant-swing.jar:/srv/gump/public/workspace/ant/dist/lib/ant-apache-resolver.jar:/srv/gump/public/workspace/ant/dist/lib/ant-apache-xalan2.jar:/srv/gump/public/workspace/xml-commons/java/build/resolver.jar:/srv/gump/public/workspace/checkstyle/target/checkstyle-8.4-SNAPSHOT.jar:/srv/gump/packages/antlr/antlr-3.1.3.jar:/srv/gump/public/workspace/apache-commons/beanutils/dist/commons-beanutils-20171019.jar:/srv/gump/packages/commons-collections3/commons-collections-3.2.1.jar:/srv/gump/public/workspace/commons-cli/target/commons-cli-1.5-SNAPSHOT.jar:/srv/gump/public/workspace/commons-lang-trunk/target/commons-lang3-3.7-SNAPSHOT.jar:/srv/g ump/public/workspace/apache-commons/logging/target/commons-logging-20171019.jar:/srv/gump/public/workspace/apache-commons/logging/target/commons-logging-api-20171019.jar:/srv/gump/public/workspace/google-guava/guava/target/guava-HEAD-jre-SNAPSHOT.jar - [checkstyle] [ERROR] /srv/gump/public/workspace/tomcat-8.0.x/test/org/apache/el/TestValueExpressionImpl.java:34: Extra separation in import group before 'org.junit.Test' [ImportOrder] [checkstyle] [ERROR] /srv/gump/public/workspace/tomcat-8.0.x/test/org/apache/el/lang/TestELArithmetic.java:26: Extra separation in import group before 'org.junit.Assert' [ImportOrder] [checkstyle] [ERROR] /srv/gump/public/workspace/tomcat-8.0.x/test/org/apache/el/lang/TestELSupport.java:30: Extra separation in import group before 'org.junit.Assert' [ImportOrder] [checkstyle] [ERROR] /srv/gump/public/workspace/tomcat-8.0.x/test/org/apache/el/parser/TestELParser.java:28: Extra separation in import group before 'org.junit.Test' [ImportOrder] [checkstyle] [ERROR] /srv/gump/public/workspace/tomcat-8.0.x/test/org/apache/jasper/compiler/TestAttributeParser.java:24: Extra separation in import group before 'org.junit.Test' [ImportOrder] [checkstyle] [ERROR] /srv/gump/public/workspace/tomcat-8.0.x/test/org/apache/jasper/compiler/TestCompiler.java:29: Extra separation in import group before 'org.junit.Test' [ImportOrder] [checkstyle] [ERROR] /srv/gump/public/workspace/tomcat-8.0.x/test/org/apache/jasper/compiler/TestGenerator.java:36: Extra separation in import group before 'org.junit.Assert' [ImportOrder] [checkstyle] [ERROR] /srv/gump/public/workspace/tomcat-8.0.x/test/org/apache/jasper/compiler/TestJspConfig.java:24: Extra separation in import group before 'org.junit.Test' [ImportOrder] [checkstyle] [ERROR] /srv/gump/public/workspace/tomcat-8.0.x/test/org/apache/jasper/compiler/TestParser.java:25: Extra separation in import group before 'org.junit.Assert' [ImportOrder] [checkstyle] [ERROR] /srv/gump/public/workspace/tomcat-8.0.x/test/org/apache/jasper/compiler/TestParserNoStrictWhitespace.java:26: Extra separation in import group before 'org.junit.Test' [ImportOrder] [checkstyle] [ERROR] /srv/gump/public/workspace/tomcat-8.0.x/test/org/apache/jasper/compiler/Test
[GUMP@vmgump-vm3]: Project tomcat-trunk-validate (in module tomcat-trunk) failed
To whom it may engage... This is an automated request, but not an unsolicited one. For more information please visit http://gump.apache.org/nagged.html, and/or contact the folk at gene...@gump.apache.org. Project tomcat-trunk-validate has an issue affecting its community integration. This issue affects 1 projects, and has been outstanding for 5 runs. The current state of this project is 'Failed', with reason 'Build Failed'. For reference only, the following projects are affected by this: - tomcat-trunk-validate : Tomcat 9.x, a web server implementing the Java Servlet 4.0, ... Full details are available at: http://vmgump-vm3.apache.org/tomcat-trunk/tomcat-trunk-validate/index.html That said, some information snippets are provided here. The following annotations (debug/informational/warning/error messages) were provided: -DEBUG- Dependency on checkstyle exists, no need to add for property checkstyle.jar. -INFO- Failed with reason build failed The following work was performed: http://vmgump-vm3.apache.org/tomcat-trunk/tomcat-trunk-validate/gump_work/build_tomcat-trunk_tomcat-trunk-validate.html Work Name: build_tomcat-trunk_tomcat-trunk-validate (Type: Build) Work ended in a state of : Failed Elapsed: 23 secs Command Line: /usr/lib/jvm/java-8-oracle/bin/java -Djava.awt.headless=true -Dbuild.sysclasspath=only org.apache.tools.ant.Main -Dgump.merge=/srv/gump/public/gump/work/merge.xml -Dbase.path=/srv/gump/public/workspace/tomcat-trunk/tomcat-build-libs -Dcheckstyle.jar=/srv/gump/public/workspace/checkstyle/target/checkstyle-8.4-SNAPSHOT.jar -Dexecute.validate=true validate [Working Directory: /srv/gump/public/workspace/tomcat-trunk] CLASSPATH: /usr/lib/jvm/java-8-oracle/lib/tools.jar:/srv/gump/public/workspace/ant/dist/lib/ant.jar:/srv/gump/public/workspace/ant/dist/lib/ant-launcher.jar:/srv/gump/public/workspace/ant/dist/lib/ant-jmf.jar:/srv/gump/public/workspace/ant/dist/lib/ant-junit.jar:/srv/gump/public/workspace/ant/dist/lib/ant-junit4.jar:/srv/gump/public/workspace/ant/dist/lib/ant-swing.jar:/srv/gump/public/workspace/ant/dist/lib/ant-apache-resolver.jar:/srv/gump/public/workspace/ant/dist/lib/ant-apache-xalan2.jar:/srv/gump/public/workspace/xml-commons/java/build/resolver.jar:/srv/gump/public/workspace/checkstyle/target/checkstyle-8.4-SNAPSHOT.jar:/srv/gump/packages/antlr/antlr-3.1.3.jar:/srv/gump/public/workspace/apache-commons/beanutils/dist/commons-beanutils-20171019.jar:/srv/gump/packages/commons-collections3/commons-collections-3.2.1.jar:/srv/gump/public/workspace/commons-cli/target/commons-cli-1.5-SNAPSHOT.jar:/srv/gump/public/workspace/commons-lang-trunk/target/commons-lang3-3.7-SNAPSHOT.jar:/srv/g ump/public/workspace/apache-commons/logging/target/commons-logging-20171019.jar:/srv/gump/public/workspace/apache-commons/logging/target/commons-logging-api-20171019.jar:/srv/gump/public/workspace/google-guava/guava/target/guava-HEAD-jre-SNAPSHOT.jar - [checkstyle] [ERROR] /srv/gump/public/workspace/tomcat-trunk/test/org/apache/el/lang/TestELArithmetic.java:26: Extra separation in import group before 'org.junit.Assert' [ImportOrder] [checkstyle] [ERROR] /srv/gump/public/workspace/tomcat-trunk/test/org/apache/el/lang/TestELSupport.java:30: Extra separation in import group before 'org.junit.Assert' [ImportOrder] [checkstyle] [ERROR] /srv/gump/public/workspace/tomcat-trunk/test/org/apache/el/parser/TestELParser.java:30: Extra separation in import group before 'org.junit.Ignore' [ImportOrder] [checkstyle] [ERROR] /srv/gump/public/workspace/tomcat-trunk/test/org/apache/jasper/compiler/TestAttributeParser.java:24: Extra separation in import group before 'org.junit.Test' [ImportOrder] [checkstyle] [ERROR] /srv/gump/public/workspace/tomcat-trunk/test/org/apache/jasper/compiler/TestCompiler.java:29: Extra separation in import group before 'org.junit.Test' [ImportOrder] [checkstyle] [ERROR] /srv/gump/public/workspace/tomcat-trunk/test/org/apache/jasper/compiler/TestGenerator.java:36: Extra separation in import group before 'org.junit.Assert' [ImportOrder] [checkstyle] [ERROR] /srv/gump/public/workspace/tomcat-trunk/test/org/apache/jasper/compiler/TestJspConfig.java:24: Extra separation in import group before 'org.junit.Test' [ImportOrder] [checkstyle] [ERROR] /srv/gump/public/workspace/tomcat-trunk/test/org/apache/jasper/compiler/TestParser.java:25: Extra separation in import group before 'org.junit.Assert' [ImportOrder] [checkstyle] [ERROR] /srv/gump/public/workspace/tomcat-trunk/test/org/apache/jasper/compiler/TestParserNoStrictWhitespace.java:26: Extra separation in import group before 'org.junit.Test' [ImportOrder] [checkstyle] [ERROR] /srv/gump/public/workspace/tomcat-trunk/test/org/apache/jasper/compiler/TestScriptingVariabler.java:29: Extra separation in import group before 'org.junit.Test' [ImportOrder] [checkstyle] [ERROR] /srv/gump/public/workspace/tomcat-trunk/test/org/apache/jasper/compiler/Tes
[Bug 57767] Websocket client proprietary configuration
https://bz.apache.org/bugzilla/show_bug.cgi?id=57767 --- Comment #25 from J Fernandez --- I believe that there are additional benefits for separating the websocket client from the container. For example, we could enhance the redirect flow when behind a proxy by caching the SocketChannel for a connected host:port. We can always, pass the structure as a method argument, but I am not sure that can be manageable long term. In my opinion, as it stands, the container limits flexibility when adding similar features. -- You are receiving this mail because: You are the assignee for the bug. - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org