Re: svn commit: r1642360 - in /tomcat/trunk/java/org/apache/tomcat/websocket: Constants.java LocalStrings.properties TransformationFactory.java WsWebSocketContainer.java server/UpgradeUtil.java server
On 28/11/2014 20:33, r...@apache.org wrote: > Author: remm > Date: Fri Nov 28 20:33:20 2014 > New Revision: 1642360 > > URL: http://svn.apache.org/r1642360 > Log: > - Use the extensions specified by the configuration (and ignore if there are > no associated transformations). I can see how this would make sense if there was a way for the application to configure its own extensions but there isn't. At the moment extensions have to be hard-coded into the container and there is no requirement to support any extension. If a server endpoint requests an unsupported extension then shouldn't that trigger some sort of error? > - Add an origin header on the client. There are multiple issues with this part of the commit: - the target is added rather than the origin - the full URI is used rather than scheme, host and optional port See http://tools.ietf.org/html/rfc6454#section-7 > - Add path params as params too. I don't see that discussed anywhere in the WebSocket spec. I went back through the EG discussions and the thread that I think led up to this [1],[2] was very clear that this was the query parameters and did not include the path parameters [1] https://java.net/projects/websocket-spec/lists/jsr356-experts/archive/2012-07/message/2 [2] http://markmail.org/message/qqwqcyg4npxv3bks > - Use the case insensitive map for all headers. Makes sense. Mark - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 57281] Tomcat fails to call method of non-public filter class configured via Servlet 3.0 API when running with SecurityManager
https://issues.apache.org/bugzilla/show_bug.cgi?id=57281 Andy Wilkinson changed: What|Removed |Added CC||awilkin...@pivotal.io OS||All -- 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 57274] Annotation scanning can cause classes to skip class transformation
https://issues.apache.org/bugzilla/show_bug.cgi?id=57274 --- Comment #2 from Mark Thomas --- Happy to leave this closed but I wanted to add the following comments: 1. If the transformation attempts to make a change that would trigger something in the annotation scanning then that change is going to be ignored. I think I am OK with that. There are better ways to achieve the desired result. 2. One way of fixing this would be to delay the transformation until the the class is declared. -- 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
Re: Behavior and default config for JULI AsyncFileHandler
On 29/11/2014 16:49, Rainer Jung wrote: > Since Tomcat 8 our JULI config uses AsyncFileHandler by default. > > The default config of AsyncFileHandler allows log records to be dropped > once the log queue gets full. I'd say this is not a sane default and > suggest that we switch the default to the "block logging thread until > there's again space in the queue" option. Of course that will mean > Tomcat threads start to hang in logging once the queue gets full. But > simply throwing away log messages should be an explicit choice of an > admin and not our release default IMHO. > > I suggest to switch defaults to OVERFLOW_DROP_FLUSH (and also to rename > that constant to OVERFLOW_DROP_WAIT). +1 but I'd rename it to OVERFLOW_BLOCK since a) nothing gets dropped and b) block is more explicit as to what will happen. > Then there's currently a config setting > org.apache.juli.AsyncLoggerPollInterval which controls how long the > thread that polls the queue blocks waiting for the next log record to > show up in the queue. If the timeout fires, it immediately starts to > poll again. I don't really understand, why this should be configurable. > IMHO the only reason for this poll timeout would be to allow the polling > thread to stop. For instance if JULI needs to get unloaded, e.g. when > being embedded or in a per webapp use, then an endless blocking poller > thread might not be good. But in fact although the thread has a "run" > flag which could control stopping it, the flag is never set to false! > The thread is marked as daemon though. > > I suggest to remove the system property > org.apache.juli.AsyncLoggerPollInterval. +1 > I suggest to also orderly shut down the thread during > ClassLoaderogManager shutdown. Since the thread is static, that would > mean making the "run" flag volatile, letting AsyncFileHandler count it's > non-closed instances and set "run" to false in the close() method when > the last instance is closed. Alternatively one could make the queue and > the polling thread non-global but per instance and shut the thread down > in close(). I would find the latter easier and also more plausible. > Don't know what good reason there is to share the queue and the thread. > > Comments? Per instance makes more sense to me. Global, per JVM instances are the sort of things that have caused problems with some of the more interesting use cases (e.g. embedding) so if we have an opportunity to remove one then let's do so. Mark - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1642668 - /tomcat/trunk/java/org/apache/catalina/filters/CorsFilter.java
Author: markt Date: Mon Dec 1 11:48:36 2014 New Revision: 1642668 URL: http://svn.apache.org/r1642668 Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=57180 Don't limit HTTP methods to those defined in RFC 7231. Modified: tomcat/trunk/java/org/apache/catalina/filters/CorsFilter.java Modified: tomcat/trunk/java/org/apache/catalina/filters/CorsFilter.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/filters/CorsFilter.java?rev=1642668&r1=1642667&r2=1642668&view=diff == --- tomcat/trunk/java/org/apache/catalina/filters/CorsFilter.java (original) +++ tomcat/trunk/java/org/apache/catalina/filters/CorsFilter.java Mon Dec 1 11:48:36 2014 @@ -650,7 +650,7 @@ public final class CorsFilter implements requestType = CORSRequestType.ACTUAL; } } -} else if (COMPLEX_HTTP_METHODS.contains(method)) { +} else { requestType = CORSRequestType.ACTUAL; } } @@ -1034,7 +1034,11 @@ public final class CorsFilter implements "DELETE", "TRACE", "CONNECT")); /** * {@link Collection} of non-simple HTTP methods. Case sensitive. + * @deprecated Not used. Will be removed in Tomcat 9.0.x onwards. All HTTP + * methods not in {@link #HTTP_METHODS} are assumed to be + * non-simple. */ +@Deprecated public static final Collection COMPLEX_HTTP_METHODS = new HashSet<>(Arrays.asList("PUT", "DELETE", "TRACE", "CONNECT")); /** - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1642669 - /tomcat/trunk/java/org/apache/catalina/filters/CorsFilter.java
Author: markt Date: Mon Dec 1 11:49:04 2014 New Revision: 1642669 URL: http://svn.apache.org/r1642669 Log: Remove the deprecated code Modified: tomcat/trunk/java/org/apache/catalina/filters/CorsFilter.java Modified: tomcat/trunk/java/org/apache/catalina/filters/CorsFilter.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/filters/CorsFilter.java?rev=1642669&r1=1642668&r2=1642669&view=diff == --- tomcat/trunk/java/org/apache/catalina/filters/CorsFilter.java (original) +++ tomcat/trunk/java/org/apache/catalina/filters/CorsFilter.java Mon Dec 1 11:49:04 2014 @@ -1033,15 +1033,6 @@ public final class CorsFilter implements new HashSet<>(Arrays.asList("OPTIONS", "GET", "HEAD", "POST", "PUT", "DELETE", "TRACE", "CONNECT")); /** - * {@link Collection} of non-simple HTTP methods. Case sensitive. - * @deprecated Not used. Will be removed in Tomcat 9.0.x onwards. All HTTP - * methods not in {@link #HTTP_METHODS} are assumed to be - * non-simple. - */ -@Deprecated -public static final Collection COMPLEX_HTTP_METHODS = -new HashSet<>(Arrays.asList("PUT", "DELETE", "TRACE", "CONNECT")); -/** * {@link Collection} of Simple HTTP methods. Case sensitive. * * @see http://www.w3.org/TR/cors/#terminology"; - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1642670 - in /tomcat/tc8.0.x/trunk: ./ java/org/apache/catalina/filters/CorsFilter.java webapps/docs/changelog.xml
Author: markt Date: Mon Dec 1 11:52:58 2014 New Revision: 1642670 URL: http://svn.apache.org/r1642670 Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=57180 Don't limit HTTP methods to those defined in RFC 7231. Modified: tomcat/tc8.0.x/trunk/ (props changed) tomcat/tc8.0.x/trunk/java/org/apache/catalina/filters/CorsFilter.java tomcat/tc8.0.x/trunk/webapps/docs/changelog.xml Propchange: tomcat/tc8.0.x/trunk/ -- Merged /tomcat/trunk:r1642668 Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/filters/CorsFilter.java URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/filters/CorsFilter.java?rev=1642670&r1=1642669&r2=1642670&view=diff == --- tomcat/tc8.0.x/trunk/java/org/apache/catalina/filters/CorsFilter.java (original) +++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/filters/CorsFilter.java Mon Dec 1 11:52:58 2014 @@ -650,7 +650,7 @@ public final class CorsFilter implements requestType = CORSRequestType.ACTUAL; } } -} else if (COMPLEX_HTTP_METHODS.contains(method)) { +} else { requestType = CORSRequestType.ACTUAL; } } @@ -1034,7 +1034,11 @@ public final class CorsFilter implements "DELETE", "TRACE", "CONNECT")); /** * {@link Collection} of non-simple HTTP methods. Case sensitive. + * @deprecated Not used. Will be removed in Tomcat 9.0.x onwards. All HTTP + * methods not in {@link #HTTP_METHODS} are assumed to be + * non-simple. */ +@Deprecated public static final Collection COMPLEX_HTTP_METHODS = new HashSet<>(Arrays.asList("PUT", "DELETE", "TRACE", "CONNECT")); /** Modified: tomcat/tc8.0.x/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/webapps/docs/changelog.xml?rev=1642670&r1=1642669&r2=1642670&view=diff == --- tomcat/tc8.0.x/trunk/webapps/docs/changelog.xml (original) +++ tomcat/tc8.0.x/trunk/webapps/docs/changelog.xml Mon Dec 1 11:52:58 2014 @@ -57,6 +57,10 @@ annotation scanning in some cases. (markt) +57180: Do not limit the CORS filter to only accepting +requests that use an HTTP method defined in RFC 7231. (markt) + + 57208: Prevent NPE in JNDI Realm when no results are found in a directory context for a user with specified user name. Based on a patch provided by Jason McIntosh. (violetagg) - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1642671 - in /tomcat/tc7.0.x/trunk: ./ java/org/apache/catalina/filters/CorsFilter.java webapps/docs/changelog.xml
Author: markt Date: Mon Dec 1 11:56:14 2014 New Revision: 1642671 URL: http://svn.apache.org/r1642671 Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=57180 Don't limit HTTP methods to those defined in RFC 7231. Modified: tomcat/tc7.0.x/trunk/ (props changed) tomcat/tc7.0.x/trunk/java/org/apache/catalina/filters/CorsFilter.java tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Propchange: tomcat/tc7.0.x/trunk/ -- Merged /tomcat/trunk:r1642668 Merged /tomcat/tc8.0.x/trunk:r1642669-1642670 Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/filters/CorsFilter.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/filters/CorsFilter.java?rev=1642671&r1=1642670&r2=1642671&view=diff == --- tomcat/tc7.0.x/trunk/java/org/apache/catalina/filters/CorsFilter.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/filters/CorsFilter.java Mon Dec 1 11:56:14 2014 @@ -650,7 +650,7 @@ public final class CorsFilter implements requestType = CORSRequestType.ACTUAL; } } -} else if (COMPLEX_HTTP_METHODS.contains(method)) { +} else { requestType = CORSRequestType.ACTUAL; } } @@ -1034,7 +1034,11 @@ public final class CorsFilter implements "PUT", "DELETE", "TRACE", "CONNECT")); /** * {@link Collection} of non-simple HTTP methods. Case sensitive. + * @deprecated Not used. Will be removed in Tomcat 9.0.x onwards. All HTTP + * methods not in {@link #HTTP_METHODS} are assumed to be + * non-simple. */ +@Deprecated public static final Collection COMPLEX_HTTP_METHODS = new HashSet(Arrays.asList("PUT", "DELETE", "TRACE", "CONNECT")); Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1642671&r1=1642670&r2=1642671&view=diff == --- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original) +++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Mon Dec 1 11:56:14 2014 @@ -63,6 +63,10 @@ annotation scanning in some cases. (markt) +57180: Do not limit the CORS filter to only accepting +requests that use an HTTP method defined in RFC 7231. (markt) + + 57208: Prevent NPE in JNDI Realm when no results are found in a directory context for a user with specified user name. Based on a patch provided by Jason McIntosh. (violetagg) - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 57180] CorsFilter does not support PATCH method
https://issues.apache.org/bugzilla/show_bug.cgi?id=57180 Mark Thomas changed: What|Removed |Added Status|REOPENED|RESOLVED Resolution|--- |FIXED --- Comment #3 from Mark Thomas --- I have removed the check against complex methods. This has been fixed in trunk 8.0.x (for 8.0.16 onwards) and 7.0.x (for 7.0.58 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
buildbot exception in ASF Buildbot on tomcat-7-trunk
The Buildbot has detected a build exception on builder tomcat-7-trunk while building ASF Buildbot. Full details are available at: http://ci.apache.org/builders/tomcat-7-trunk/builds/410 Buildbot URL: http://ci.apache.org/ Buildslave for this Build: silvanus_ubuntu Build Reason: The AnyBranchScheduler scheduler named 'on-tomcat-7-commit' triggered this build Build Source Stamp: [branch tomcat/tc7.0.x/trunk] 1642671 Blamelist: markt BUILD FAILED: exception upload_1 Sincerely, -The Buildbot - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: svn commit: r1642360 - in /tomcat/trunk/java/org/apache/tomcat/websocket: Constants.java LocalStrings.properties TransformationFactory.java WsWebSocketContainer.java server/UpgradeUtil.java server
2014-12-01 11:19 GMT+01:00 Mark Thomas : > On 28/11/2014 20:33, r...@apache.org wrote: > > Author: remm > > Date: Fri Nov 28 20:33:20 2014 > > New Revision: 1642360 > > > > URL: http://svn.apache.org/r1642360 > > Log: > > - Use the extensions specified by the configuration (and ignore if there > are no associated transformations). > > I can see how this would make sense if there was a way for the > application to configure its own extensions but there isn't. At the > moment extensions have to be hard-coded into the container and there is > no requirement to support any extension. If a server endpoint requests > an unsupported extension then shouldn't that trigger some sort of error? > The tests use extensions (to see if it's supported). They are declared and of course they do nothing special, but it is supposed to be usable. To enable some, it uses a ServerEndpointConfig that overrides getExtensions, declared using a ServerApplicationConfig. Creativity :) Basically, if you give these guys some APIs that are placeholders but are user accessible they'll try to test them anyway. Actually, the test is bad since having a builtin extension breaks it (it just matches the header), but I ignored that part after verifying it. > > > - Add an origin header on the client. > > There are multiple issues with this part of the commit: > - the target is added rather than the origin > - the full URI is used rather than scheme, host and optional port > > See http://tools.ietf.org/html/rfc6454#section-7 > Yes, I put some random URL I had on hand, I'll have to "improve" it. > > > - Add path params as params too. > > I don't see that discussed anywhere in the WebSocket spec. > > I went back through the EG discussions and the thread that I think led > up to this [1],[2] was very clear that this was the query parameters and > did not include the path parameters > > [1] > > https://java.net/projects/websocket-spec/lists/jsr356-experts/archive/2012-07/message/2 > [2] http://markmail.org/message/qqwqcyg4npxv3bks > Yes, I cannot find any mention of that, but the tests are quite explicit and they use both the query parameters and the path parameters names from that PathParam annotation. IMO it is not useless, users could maybe have asked for that. Moar creativity :) > > > - Use the case insensitive map for all headers. > > Makes sense. > > Rémy
buildbot failure in ASF Buildbot on tomcat-trunk
The Buildbot has detected a new failure on builder tomcat-trunk while building ASF Buildbot. Full details are available at: http://ci.apache.org/builders/tomcat-trunk/builds/710 Buildbot URL: http://ci.apache.org/ Buildslave for this Build: bb-vm_ubuntu Build Reason: The AnyBranchScheduler scheduler named 'on-tomcat-commit' triggered this build Build Source Stamp: [branch tomcat/trunk] 1642669 Blamelist: markt BUILD FAILED: failed compile_1 Sincerely, -The Buildbot - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1642679 - /tomcat/trunk/test/org/apache/catalina/core/TestApplicationContext.java
Author: markt Date: Mon Dec 1 13:23:50 2014 New Revision: 1642679 URL: http://svn.apache.org/r1642679 Log: https://issues.apache.org/bugzilla/show_bug.cgi?id=57190 Add a test case with current failures commented out Modified: tomcat/trunk/test/org/apache/catalina/core/TestApplicationContext.java Modified: tomcat/trunk/test/org/apache/catalina/core/TestApplicationContext.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/core/TestApplicationContext.java?rev=1642679&r1=1642678&r2=1642679&view=diff == --- tomcat/trunk/test/org/apache/catalina/core/TestApplicationContext.java (original) +++ tomcat/trunk/test/org/apache/catalina/core/TestApplicationContext.java Mon Dec 1 13:23:50 2014 @@ -16,20 +16,30 @@ */ package org.apache.catalina.core; +import java.io.IOException; +import java.io.PrintWriter; import java.util.Collection; import javax.servlet.Filter; import javax.servlet.Servlet; import javax.servlet.ServletContext; +import javax.servlet.ServletException; import javax.servlet.descriptor.JspConfigDescriptor; import javax.servlet.descriptor.JspPropertyGroupDescriptor; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.junit.Assert; import org.junit.Test; +import org.apache.catalina.Context; +import org.apache.catalina.Lifecycle; +import org.apache.catalina.LifecycleEvent; import org.apache.catalina.LifecycleException; +import org.apache.catalina.LifecycleListener; import org.apache.catalina.startup.Tomcat; +import org.apache.catalina.startup.Tomcat.FixContextListener; import org.apache.catalina.startup.TomcatBaseTest; import org.apache.tomcat.util.buf.ByteChunk; @@ -146,4 +156,85 @@ public class TestApplicationContext exte getTomcatInstance().start(); getServletContext().setInitParameter("name", "value"); } + + +/* + * Cross-context requests with parallel deployment + */ +@Test +public void testBug57190() throws Exception { +Tomcat tomcat = getTomcatInstance(); + +Context foo1 = new StandardContext(); +foo1.setName("/foo##1"); +foo1.setPath("/foo"); +foo1.addLifecycleListener(new FixContextListener()); +foo1.addLifecycleListener(new SetIdListener("foo1")); +tomcat.getHost().addChild(foo1); + +Context foo2 = new StandardContext(); +foo2.setName("/foo##2"); +foo2.setPath("/foo"); +foo2.addLifecycleListener(new FixContextListener()); +foo2.addLifecycleListener(new SetIdListener("foo2")); +tomcat.getHost().addChild(foo2); + +Context bar = tomcat.addContext("/bar", null); +bar.addLifecycleListener(new SetIdListener("bar")); + +Context ctx = tomcat.addContext("", null); +ctx.setCrossContext(true); + +Tomcat.addServlet(ctx, "Bug57190Servlet", new Bug57190Servlet()); +ctx.addServletMapping("/", "Bug57190Servlet"); + +tomcat.start(); + +ByteChunk res = getUrl("http://localhost:"; + getPort() + "/"); +String body = res.toString(); + +Assert.assertTrue(body, body.contains("01-bar")); +// TODO This should pass once the bug is fixed +// Assert.assertTrue(body, body.contains("02-foo2")); +Assert.assertTrue(body, body.contains("03-foo1")); +Assert.assertTrue(body, body.contains("04-foo2")); +// TODO This should pass once the bug is fixed +// Assert.assertTrue(body, body.contains("05-foo2")); +} + + +private static class Bug57190Servlet extends HttpServlet { + +private static final long serialVersionUID = 1L; + +@Override +protected void doGet(HttpServletRequest req, HttpServletResponse resp) +throws ServletException, IOException { +resp.setContentType("text/plain"); +PrintWriter pw = resp.getWriter(); +ServletContext sc = req.getServletContext(); +pw.println("01-" + sc.getContext("/bar").getInitParameter("id")); +pw.println("02-" + sc.getContext("/foo").getInitParameter("id")); +pw.println("03-" + sc.getContext("/foo##1").getInitParameter("id")); +pw.println("04-" + sc.getContext("/foo##2").getInitParameter("id")); +pw.println("05-" + sc.getContext("/foo##3").getInitParameter("id")); +} +} + + +private static class SetIdListener implements LifecycleListener { + +private final String id; + +public SetIdListener(String id) { +this.id = id; +} + +@Override +public void lifecycleEvent(LifecycleEvent event) { +if (Lifecycle.CONFIGURE_START_EVENT.equals(event.getType())) { +((Context) event.getSource()).getServletContext().setInitParameter("id", id); +} +} +} } --
svn commit: r1642680 - /tomcat/trunk/java/org/apache/catalina/core/ContainerBase.java
Author: markt Date: Mon Dec 1 13:29:47 2014 New Revision: 1642680 URL: http://svn.apache.org/r1642680 Log: Clean-up. No functional change. Modified: tomcat/trunk/java/org/apache/catalina/core/ContainerBase.java Modified: tomcat/trunk/java/org/apache/catalina/core/ContainerBase.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ContainerBase.java?rev=1642680&r1=1642679&r2=1642680&view=diff == --- tomcat/trunk/java/org/apache/catalina/core/ContainerBase.java (original) +++ tomcat/trunk/java/org/apache/catalina/core/ContainerBase.java Mon Dec 1 13:29:47 2014 @@ -752,9 +752,7 @@ public abstract class ContainerBase exte */ @Override public void addPropertyChangeListener(PropertyChangeListener listener) { - support.addPropertyChangeListener(listener); - } @@ -766,13 +764,12 @@ public abstract class ContainerBase exte */ @Override public Container findChild(String name) { - -if (name == null) -return (null); +if (name == null) { +return null; +} synchronized (children) { return children.get(name); } - } @@ -782,12 +779,10 @@ public abstract class ContainerBase exte */ @Override public Container[] findChildren() { - synchronized (children) { Container results[] = new Container[children.size()]; return children.values().toArray(results); } - } - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 57180] CorsFilter does not support PATCH method
https://issues.apache.org/bugzilla/show_bug.cgi?id=57180 --- Comment #4 from Frank Kline --- Fantastic! Thanks, Mark. -- 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: r1642697 - in /tomcat/trunk: java/org/apache/catalina/core/ApplicationContext.java test/org/apache/catalina/core/TestApplicationContext.java
Author: markt Date: Mon Dec 1 14:54:51 2014 New Revision: 1642697 URL: http://svn.apache.org/r1642697 Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=57190 Fix ServletContext.getContext() when parallel deployment is in use. Modified: tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java tomcat/trunk/test/org/apache/catalina/core/TestApplicationContext.java Modified: tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java?rev=1642697&r1=1642696&r2=1642697&view=diff == --- tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java (original) +++ tomcat/trunk/java/org/apache/catalina/core/ApplicationContext.java Mon Dec 1 14:54:51 2014 @@ -253,16 +253,30 @@ public class ApplicationContext Context child = null; try { -Host host = (Host) context.getParent(); -String mapuri = uri; -while (true) { -child = (Context) host.findChild(mapuri); -if (child != null) -break; -int slash = mapuri.lastIndexOf('/'); -if (slash < 0) -break; -mapuri = mapuri.substring(0, slash); +// Look for an exact match +Container host = context.getParent(); +child = (Context) host.findChild(uri); + +// Remove any version information and use the mapper +if (child == null) { +int i = uri.indexOf("##"); +if (i > -1) { +uri = uri.substring(0, i); +} +// Note: This could be more efficient with a dedicated Mapper +// method but such an implementation would require some +// refactoring of the Mapper to avoid copy/paste of +// existing code. +MessageBytes hostMB = MessageBytes.newInstance(); +hostMB.setString(host.getName()); + +MessageBytes pathMB = MessageBytes.newInstance(); +pathMB.setString(uri); + +MappingData mappingData = new MappingData(); +((Engine) host.getParent()).getService().getMapper().map(hostMB, pathMB, null, mappingData); + +child = mappingData.context; } } catch (Throwable t) { ExceptionUtils.handleThrowable(t); Modified: tomcat/trunk/test/org/apache/catalina/core/TestApplicationContext.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/core/TestApplicationContext.java?rev=1642697&r1=1642696&r2=1642697&view=diff == --- tomcat/trunk/test/org/apache/catalina/core/TestApplicationContext.java (original) +++ tomcat/trunk/test/org/apache/catalina/core/TestApplicationContext.java Mon Dec 1 14:54:51 2014 @@ -194,12 +194,10 @@ public class TestApplicationContext exte String body = res.toString(); Assert.assertTrue(body, body.contains("01-bar")); -// TODO This should pass once the bug is fixed -// Assert.assertTrue(body, body.contains("02-foo2")); +Assert.assertTrue(body, body.contains("02-foo2")); Assert.assertTrue(body, body.contains("03-foo1")); Assert.assertTrue(body, body.contains("04-foo2")); -// TODO This should pass once the bug is fixed -// Assert.assertTrue(body, body.contains("05-foo2")); +Assert.assertTrue(body, body.contains("05-foo2")); } - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1642698 - in /tomcat/tc8.0.x/trunk: ./ java/org/apache/catalina/core/ApplicationContext.java test/org/apache/catalina/core/TestApplicationContext.java webapps/docs/changelog.xml
Author: markt Date: Mon Dec 1 14:58:44 2014 New Revision: 1642698 URL: http://svn.apache.org/r1642698 Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=57190 Fix ServletContext.getContext() when parallel deployment is in use. Modified: tomcat/tc8.0.x/trunk/ (props changed) tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/ApplicationContext.java tomcat/tc8.0.x/trunk/test/org/apache/catalina/core/TestApplicationContext.java tomcat/tc8.0.x/trunk/webapps/docs/changelog.xml Propchange: tomcat/tc8.0.x/trunk/ -- Merged /tomcat/trunk:r1642679,1642697 Modified: tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/ApplicationContext.java URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/ApplicationContext.java?rev=1642698&r1=1642697&r2=1642698&view=diff == --- tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/ApplicationContext.java (original) +++ tomcat/tc8.0.x/trunk/java/org/apache/catalina/core/ApplicationContext.java Mon Dec 1 14:58:44 2014 @@ -253,16 +253,30 @@ public class ApplicationContext Context child = null; try { -Host host = (Host) context.getParent(); -String mapuri = uri; -while (true) { -child = (Context) host.findChild(mapuri); -if (child != null) -break; -int slash = mapuri.lastIndexOf('/'); -if (slash < 0) -break; -mapuri = mapuri.substring(0, slash); +// Look for an exact match +Container host = context.getParent(); +child = (Context) host.findChild(uri); + +// Remove any version information and use the mapper +if (child == null) { +int i = uri.indexOf("##"); +if (i > -1) { +uri = uri.substring(0, i); +} +// Note: This could be more efficient with a dedicated Mapper +// method but such an implementation would require some +// refactoring of the Mapper to avoid copy/paste of +// existing code. +MessageBytes hostMB = MessageBytes.newInstance(); +hostMB.setString(host.getName()); + +MessageBytes pathMB = MessageBytes.newInstance(); +pathMB.setString(uri); + +MappingData mappingData = new MappingData(); +((Engine) host.getParent()).getService().getMapper().map(hostMB, pathMB, null, mappingData); + +child = mappingData.context; } } catch (Throwable t) { ExceptionUtils.handleThrowable(t); Modified: tomcat/tc8.0.x/trunk/test/org/apache/catalina/core/TestApplicationContext.java URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/test/org/apache/catalina/core/TestApplicationContext.java?rev=1642698&r1=1642697&r2=1642698&view=diff == --- tomcat/tc8.0.x/trunk/test/org/apache/catalina/core/TestApplicationContext.java (original) +++ tomcat/tc8.0.x/trunk/test/org/apache/catalina/core/TestApplicationContext.java Mon Dec 1 14:58:44 2014 @@ -16,20 +16,30 @@ */ package org.apache.catalina.core; +import java.io.IOException; +import java.io.PrintWriter; import java.util.Collection; import javax.servlet.Filter; import javax.servlet.Servlet; import javax.servlet.ServletContext; +import javax.servlet.ServletException; import javax.servlet.descriptor.JspConfigDescriptor; import javax.servlet.descriptor.JspPropertyGroupDescriptor; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.junit.Assert; import org.junit.Test; +import org.apache.catalina.Context; +import org.apache.catalina.Lifecycle; +import org.apache.catalina.LifecycleEvent; import org.apache.catalina.LifecycleException; +import org.apache.catalina.LifecycleListener; import org.apache.catalina.startup.Tomcat; +import org.apache.catalina.startup.Tomcat.FixContextListener; import org.apache.catalina.startup.TomcatBaseTest; import org.apache.tomcat.util.buf.ByteChunk; @@ -146,4 +156,83 @@ public class TestApplicationContext exte getTomcatInstance().start(); getServletContext().setInitParameter("name", "value"); } + + +/* + * Cross-context requests with parallel deployment + */ +@Test +public void testBug57190() throws Exception { +Tomcat tomcat = getTomcatInstance(); + +Context foo1 = new StandardContext(); +foo1.setName("/foo##1"); +foo1.setPath("/foo"); +foo1.addLifecycleListener(new FixContextListener()); +foo1.addLifec
svn commit: r1642699 - /tomcat/trunk/test/org/apache/catalina/core/TestApplicationContext.java
Author: markt Date: Mon Dec 1 15:17:36 2014 New Revision: 1642699 URL: http://svn.apache.org/r1642699 Log: Be explicit about webapp version Modified: tomcat/trunk/test/org/apache/catalina/core/TestApplicationContext.java Modified: tomcat/trunk/test/org/apache/catalina/core/TestApplicationContext.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/catalina/core/TestApplicationContext.java?rev=1642699&r1=1642698&r2=1642699&view=diff == --- tomcat/trunk/test/org/apache/catalina/core/TestApplicationContext.java (original) +++ tomcat/trunk/test/org/apache/catalina/core/TestApplicationContext.java Mon Dec 1 15:17:36 2014 @@ -168,6 +168,7 @@ public class TestApplicationContext exte Context foo1 = new StandardContext(); foo1.setName("/foo##1"); foo1.setPath("/foo"); +foo1.setWebappVersion("1"); foo1.addLifecycleListener(new FixContextListener()); foo1.addLifecycleListener(new SetIdListener("foo1")); tomcat.getHost().addChild(foo1); @@ -175,6 +176,7 @@ public class TestApplicationContext exte Context foo2 = new StandardContext(); foo2.setName("/foo##2"); foo2.setPath("/foo"); +foo2.setWebappVersion("2"); foo2.addLifecycleListener(new FixContextListener()); foo2.addLifecycleListener(new SetIdListener("foo2")); tomcat.getHost().addChild(foo2); - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1642701 - in /tomcat/tc8.0.x/trunk: ./ test/org/apache/catalina/core/TestApplicationContext.java
Author: markt Date: Mon Dec 1 15:18:04 2014 New Revision: 1642701 URL: http://svn.apache.org/r1642701 Log: Be explicit about webapp version Modified: tomcat/tc8.0.x/trunk/ (props changed) tomcat/tc8.0.x/trunk/test/org/apache/catalina/core/TestApplicationContext.java Propchange: tomcat/tc8.0.x/trunk/ -- Merged /tomcat/trunk:r1642699 Modified: tomcat/tc8.0.x/trunk/test/org/apache/catalina/core/TestApplicationContext.java URL: http://svn.apache.org/viewvc/tomcat/tc8.0.x/trunk/test/org/apache/catalina/core/TestApplicationContext.java?rev=1642701&r1=1642700&r2=1642701&view=diff == --- tomcat/tc8.0.x/trunk/test/org/apache/catalina/core/TestApplicationContext.java (original) +++ tomcat/tc8.0.x/trunk/test/org/apache/catalina/core/TestApplicationContext.java Mon Dec 1 15:18:04 2014 @@ -168,6 +168,7 @@ public class TestApplicationContext exte Context foo1 = new StandardContext(); foo1.setName("/foo##1"); foo1.setPath("/foo"); +foo1.setWebappVersion("1"); foo1.addLifecycleListener(new FixContextListener()); foo1.addLifecycleListener(new SetIdListener("foo1")); tomcat.getHost().addChild(foo1); @@ -175,6 +176,7 @@ public class TestApplicationContext exte Context foo2 = new StandardContext(); foo2.setName("/foo##2"); foo2.setPath("/foo"); +foo2.setWebappVersion("2"); foo2.addLifecycleListener(new FixContextListener()); foo2.addLifecycleListener(new SetIdListener("foo2")); tomcat.getHost().addChild(foo2); - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1642702 - in /tomcat/tc7.0.x/trunk: ./ java/org/apache/catalina/core/ApplicationContext.java test/org/apache/catalina/core/TestApplicationContext.java webapps/docs/changelog.xml
Author: markt Date: Mon Dec 1 15:19:56 2014 New Revision: 1642702 URL: http://svn.apache.org/r1642702 Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=57190 Fix ServletContext.getContext() when parallel deployment is in use. Modified: tomcat/tc7.0.x/trunk/ (props changed) tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/ApplicationContext.java tomcat/tc7.0.x/trunk/test/org/apache/catalina/core/TestApplicationContext.java tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Propchange: tomcat/tc7.0.x/trunk/ -- Merged /tomcat/trunk:r1642679,1642697,1642699 Merged /tomcat/tc8.0.x/trunk:r1642698,1642701 Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/ApplicationContext.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/ApplicationContext.java?rev=1642702&r1=1642701&r2=1642702&view=diff == --- tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/ApplicationContext.java (original) +++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/ApplicationContext.java Mon Dec 1 15:19:56 2014 @@ -60,7 +60,6 @@ import org.apache.catalina.Container; import org.apache.catalina.Context; import org.apache.catalina.Engine; import org.apache.catalina.Globals; -import org.apache.catalina.Host; import org.apache.catalina.LifecycleState; import org.apache.catalina.Service; import org.apache.catalina.Wrapper; @@ -270,16 +269,31 @@ public class ApplicationContext Context child = null; try { -Host host = (Host) context.getParent(); -String mapuri = uri; -while (true) { -child = (Context) host.findChild(mapuri); -if (child != null) -break; -int slash = mapuri.lastIndexOf('/'); -if (slash < 0) -break; -mapuri = mapuri.substring(0, slash); +// Look for an exact match +Container host = context.getParent(); +child = (Context) host.findChild(uri); + +// Remove any version information and use the mapper +if (child == null) { +int i = uri.indexOf("##"); +if (i > -1) { +uri = uri.substring(0, i); +} +// Note: This could be more efficient with a dedicated Mapper +// method but such an implementation would require some +// refactoring of the Mapper to avoid copy/paste of +// existing code. +MessageBytes hostMB = MessageBytes.newInstance(); +hostMB.setString(host.getName()); + +MessageBytes pathMB = MessageBytes.newInstance(); +pathMB.setString(uri); + +MappingData mappingData = new MappingData(); +((Engine) host.getParent()).getService().findConnectors()[0].getMapper().map( +hostMB, pathMB, null, mappingData); + +child = (Context) mappingData.context; } } catch (Throwable t) { ExceptionUtils.handleThrowable(t); Modified: tomcat/tc7.0.x/trunk/test/org/apache/catalina/core/TestApplicationContext.java URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/test/org/apache/catalina/core/TestApplicationContext.java?rev=1642702&r1=1642701&r2=1642702&view=diff == --- tomcat/tc7.0.x/trunk/test/org/apache/catalina/core/TestApplicationContext.java (original) +++ tomcat/tc7.0.x/trunk/test/org/apache/catalina/core/TestApplicationContext.java Mon Dec 1 15:19:56 2014 @@ -17,16 +17,26 @@ package org.apache.catalina.core; import java.io.File; +import java.io.IOException; +import java.io.PrintWriter; import javax.servlet.Filter; import javax.servlet.Servlet; import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.junit.Assert; import org.junit.Test; +import org.apache.catalina.Context; +import org.apache.catalina.Lifecycle; +import org.apache.catalina.LifecycleEvent; +import org.apache.catalina.LifecycleListener; import org.apache.catalina.startup.Tomcat; +import org.apache.catalina.startup.Tomcat.FixContextListener; import org.apache.catalina.startup.TomcatBaseTest; import org.apache.tomcat.util.buf.ByteChunk; @@ -134,4 +144,87 @@ public class TestApplicationContext exte getTomcatInstance().start(); getServletContext().setInitParameter("name", "value"); } + + +/* + * Cross-context requests with parallel deployment + */ +@Test +public void testBug57190() throws Exc
[Bug 57190] ServletContext.getContext(String) cannot return context when using parallel deployments
https://issues.apache.org/bugzilla/show_bug.cgi?id=57190 Mark Thomas changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |FIXED --- Comment #5 from Mark Thomas --- This has been fixed in trunk, 8.0.x (for 8.0.16 onwards) and 7.0.x (for 7.0.58 onwards). An explicit version can be selected by appending ##version to the end of the context path. Otherwise, the latest available version will be returned. -- 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 57283] Web Services accessible in browser but not opening in Soap UI
https://issues.apache.org/bugzilla/show_bug.cgi?id=57283 Mark Thomas changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |INVALID OS||All --- Comment #1 from Mark Thomas --- There is insufficient information in this bug report for the problem to be reproduced. Please take your questions to the Apache Tomcat users' mailing list. If the discussion there concludes that there is a bug in Tomcat then please feel free to re-open this issue to provide the necessary steps to reproduce it on a clean install of the latest stable Tomcat 8 release. -- 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
Moderators wanted
Hi, I've been reviewing the moderators for our various lists and if I ignore the no longer active ones we are below the 3 moderators the ASF likes to have on a number of lists. Therefore, can I have some volunteers for the following lists: users@tomcat.a.o- Need two moderators dev@tomct.a.o - Need one moderator announce@tomcat.a.o - Need one moderator private@tomcat.a.o - Need one moderator security@tomcat.a.o - Need one moderator You can volunteer for more than one :) There is typically less than one message a week that requires moderator input (security@ is a little higher) which is usually explaining to folks how to unsubscribe themselves or doing it for them if they are unable to. Note all of our public lists automatically reject mails from unsubscribed users so there is no moderator traffic from that source. Generally, you need to be a committer to moderate a list. To moderate the private and security list you need to be a PMC member. Cheers, Mark - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
buildbot success in ASF Buildbot on tomcat-7-trunk
The Buildbot has detected a restored build on builder tomcat-7-trunk while building ASF Buildbot. Full details are available at: http://ci.apache.org/builders/tomcat-7-trunk/builds/411 Buildbot URL: http://ci.apache.org/ Buildslave for this Build: silvanus_ubuntu Build Reason: The AnyBranchScheduler scheduler named 'on-tomcat-7-commit' triggered this build Build Source Stamp: [branch tomcat/tc7.0.x/trunk] 1642702 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
Re: Moderators wanted
Hi, On Mon, Dec 1, 2014 at 4:56 PM, Mark Thomas wrote: > Hi, > > I've been reviewing the moderators for our various lists and if I ignore > the no longer active ones we are below the 3 moderators the ASF likes to > have on a number of lists. > > Therefore, can I have some volunteers for the following lists: > > users@tomcat.a.o- Need two moderators > dev@tomct.a.o - Need one moderator > announce@tomcat.a.o - Need one moderator > private@tomcat.a.o - Need one moderator > security@tomcat.a.o - Need one moderator > > You can volunteer for more than one :) > > There is typically less than one message a week that requires moderator > input (security@ is a little higher) which is usually explaining to > folks how to unsubscribe themselves or doing it for them if they are > unable to. > > Note all of our public lists automatically reject mails from > unsubscribed users so there is no moderator traffic from that source. > > > Generally, you need to be a committer to moderate a list. > To moderate the private and security list you need to be a PMC member. > As an ASF Member I already have access to those lists. I'd volunteer for private@ and security@ if this is OK with you. > > Cheers, > > Mark > > - > To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org > For additional commands, e-mail: dev-h...@tomcat.apache.org > >
[Bug 57287] Sort files listed by DefaultServlet
https://issues.apache.org/bugzilla/show_bug.cgi?id=57287 --- Comment #1 from Christopher Schultz --- +1 to "dirs first" Arguments can be had about whether or not sorting should be done case-sensitive of case-insensitive. -- 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 57287] Sort files listed by DefaultServlet
https://issues.apache.org/bugzilla/show_bug.cgi?id=57287 --- Comment #2 from Christopher Schultz --- I also think that sorting should be optional and not enabled by default: large directories could be problematic for performance and memory usage. Or maybe there could be a setting that doesn't sort "directories" with more than a certain number of items (1k?) -- 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
buildbot success in ASF Buildbot on tomcat-trunk
The Buildbot has detected a restored build on builder tomcat-trunk while building ASF Buildbot. Full details are available at: http://ci.apache.org/builders/tomcat-trunk/builds/712 Buildbot URL: http://ci.apache.org/ Buildslave for this Build: bb-vm_ubuntu Build Reason: The AnyBranchScheduler scheduler named 'on-tomcat-commit' triggered this build Build Source Stamp: [branch tomcat/trunk] 1642699 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
Re: Behavior and default config for JULI AsyncFileHandler
2014-12-01 14:01 GMT+03:00 Mark Thomas : > On 29/11/2014 16:49, Rainer Jung wrote: >> Since Tomcat 8 our JULI config uses AsyncFileHandler by default. >> >> The default config of AsyncFileHandler allows log records to be dropped >> once the log queue gets full. I'd say this is not a sane default and >> suggest that we switch the default to the "block logging thread until >> there's again space in the queue" option. Of course that will mean >> Tomcat threads start to hang in logging once the queue gets full. But >> simply throwing away log messages should be an explicit choice of an >> admin and not our release default IMHO. >> >> I suggest to switch defaults to OVERFLOW_DROP_FLUSH (and also to rename >> that constant to OVERFLOW_DROP_WAIT). > > +1 but I'd rename it to OVERFLOW_BLOCK since a) nothing gets dropped and > b) block is more explicit as to what will happen. Maybe keep the "drop" default, but add a counter of how many log statements were dropped and log it when possible? I think the current default of "drop" is protection against single point of failure. Though I think "drop current" has the same effect and will work faster. If there is a single thread that polls that queue and it dies or is stuck at I/O (misbehaving hardware, network drives, or whatever) then several request processing threads may stuck waiting on this queue. Background processing may stuck waiting for some events generated by request processing threads to be logged. >> Then there's currently a config setting >> org.apache.juli.AsyncLoggerPollInterval which controls how long the >> thread that polls the queue blocks waiting for the next log record to >> show up in the queue. If the timeout fires, it immediately starts to >> poll again. I don't really understand, why this should be configurable. >> IMHO the only reason for this poll timeout would be to allow the polling >> thread to stop. For instance if JULI needs to get unloaded, e.g. when >> being embedded or in a per webapp use, then an endless blocking poller >> thread might not be good. But in fact although the thread has a "run" >> flag which could control stopping it, the flag is never set to false! >> The thread is marked as daemon though. >> >> I suggest to remove the system property >> org.apache.juli.AsyncLoggerPollInterval. > > +1 What do you propose? Hard-code it as 1 second or as infinite wait? When this property is configurable one can experiment with setting this property to some high value. Maybe use this loop to perform some house-keeping? E.g. periodical flush. (I moved the topic of periodical flush to the end of this e-mail, as it is a separate topic). If this loop does some work besides polling the queue then I think it is better to have a configurable a timeout. >> I suggest to also orderly shut down the thread during >> ClassLoaderogManager shutdown. Since the thread is static, that would >> mean making the "run" flag volatile, letting AsyncFileHandler count it's >> non-closed instances and set "run" to false in the close() method when >> the last instance is closed. >> >> Alternatively one could make the queue and >> the polling thread non-global but per instance and shut the thread down >> in close(). I would find the latter easier and also more plausible. >> Don't know what good reason there is to share the queue and the thread. >> >> Comments? > > Per instance makes more sense to me. Global, per JVM instances are the > sort of things that have caused problems with some of the more > interesting use cases (e.g. embedding) so if we have an opportunity to > remove one then let's do so. 1). I think that if there are any events in the queue that are targeted to this logger one has to wait for a while for those to be flushed before actually closing it. 2) I like the idea of a counter, but shutting down the thread in close() means that open() needs to start a thread when the count is increased back from 0. I suspect that open() can be triggered by application code. Starting a global thread from there needs some special processing to do not cause a memory leak (via Thread.contextClassLoader and Thread.inheritedAccessControlContext) I think the current approach in theory already suffers from this memory leak issue. Tomcat 8 is saved by the fact that the default configuration has several global AsyncFileHandlers. If there were none declared globally, the first one may be created by webapp code. 3) A single global Thread makes sense to me. I do not expect many info/error/warn log statements to keep many threads busy. Make it configurable? Do not forget that one can also use the good old FileHandler. If there are not many log statements the FileHandler is enough. On periodical flush: A feature that I miss in FileHandler is periodical flush() of file handlers. It is one reason why buffering cannot be enabled there. For comparison, an AccessLogValve can cache entries and flushes them when performing background processing on Tomcat's backgroun
svn commit: r1642722 - /tomcat/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java
Author: remm Date: Mon Dec 1 17:56:10 2014 New Revision: 1642722 URL: http://svn.apache.org/r1642722 Log: Don't call onMessage on whole empty messages. Modified: tomcat/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java Modified: tomcat/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java?rev=1642722&r1=1642721&r2=1642722&view=diff == --- tomcat/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java (original) +++ tomcat/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java Mon Dec 1 17:56:10 2014 @@ -390,8 +390,10 @@ public abstract class WsFrameBase { messageBufferText.toString(), last); } else { // Caller ensures last == true if this branch is used -((MessageHandler.Whole) textMsgHandler).onMessage( -messageBufferText.toString()); +if (messageBufferText.remaining() > 0) { +((MessageHandler.Whole) textMsgHandler).onMessage( +messageBufferText.toString()); +} } } catch (Throwable t) { handleThrowableOnSend(t); @@ -583,7 +585,9 @@ public abstract class WsFrameBase { ((MessageHandler.Partial) binaryMsgHandler).onMessage(msg, last); } else { // Caller ensures last == true if this branch is used -((MessageHandler.Whole) binaryMsgHandler).onMessage(msg); +if (msg.remaining() > 0) { +((MessageHandler.Whole) binaryMsgHandler).onMessage(msg); +} } } catch(Throwable t) { handleThrowableOnSend(t); - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1642721 - /tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
Author: remm Date: Mon Dec 1 17:55:07 2014 New Revision: 1642721 URL: http://svn.apache.org/r1642721 Log: Try a better origin header. Modified: tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java Modified: tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java?rev=1642721&r1=1642720&r2=1642721&view=diff == --- tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java (original) +++ tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java Mon Dec 1 17:55:07 2014 @@ -224,8 +224,6 @@ public class WsWebSocketContainer clientEndpointConfiguration.getConfigurator(). beforeRequest(reqHeaders); -ByteBuffer request = createRequest(path, reqHeaders); - SocketAddress sa; if (port == -1) { if ("ws".equalsIgnoreCase(scheme)) { @@ -244,6 +242,20 @@ public class WsWebSocketContainer sa = new InetSocketAddress(host, port); } +// Origin header +if (!reqHeaders.containsKey(Constants.ORIGIN_HEADER_NAME)) { +List originValues = new ArrayList<>(1); +StringBuffer originValue = new StringBuffer(); + originValue.append(path.getScheme()).append("://").append(path.getHost()); +if (port != -1) { +originValue.append(':').append(port); +} +originValues.add(originValue.toString()); +reqHeaders.put(Constants.ORIGIN_HEADER_NAME, originValues); +} + +ByteBuffer request = createRequest(path, reqHeaders); + AsynchronousSocketChannel socketChannel; try { socketChannel = AsynchronousSocketChannel.open(getAsynchronousChannelGroup()); @@ -476,11 +488,6 @@ public class WsWebSocketContainer generateExtensionHeaders(extensions)); } -// Origin header -List originValues = new ArrayList<>(1); -originValues.add(path.toString()); -headers.put(Constants.ORIGIN_HEADER_NAME, originValues); - return headers; } - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1642723 - in /tomcat/trunk/java/org/apache/tomcat/websocket: LocalStrings.properties WsRemoteEndpointImplBase.java pojo/PojoMessageHandlerBase.java
Author: remm Date: Mon Dec 1 17:57:30 2014 New Revision: 1642723 URL: http://svn.apache.org/r1642723 Log: Enforce ping/pong size limit. Relax exception handling (it seems all encode exceptions should be caught and processed through onError). Modified: tomcat/trunk/java/org/apache/tomcat/websocket/LocalStrings.properties tomcat/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerBase.java Modified: tomcat/trunk/java/org/apache/tomcat/websocket/LocalStrings.properties URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/LocalStrings.properties?rev=1642723&r1=1642722&r2=1642723&view=diff == --- tomcat/trunk/java/org/apache/tomcat/websocket/LocalStrings.properties (original) +++ tomcat/trunk/java/org/apache/tomcat/websocket/LocalStrings.properties Mon Dec 1 17:57:30 2014 @@ -76,6 +76,7 @@ wsRemoteEndpoint.noEncoder=No encoder sp wsRemoteEndpoint.wrongState=The remote endpoint was in state [{0}] which is an invalid state for called method wsRemoteEndpoint.nullData=Invalid null data argument wsRemoteEndpoint.nullHandler=Invalid null handler argument +wsRemoteEndpoint.tooMuchData=Ping or pong may not send more than 125 bytes # Note the following message is used as a close reason in a WebSocket control # frame and therefore must be 123 bytes (not characters) or less in length. Modified: tomcat/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java?rev=1642723&r1=1642722&r2=1642723&view=diff == --- tomcat/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java (original) +++ tomcat/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java Mon Dec 1 17:57:30 2014 @@ -168,6 +168,9 @@ public abstract class WsRemoteEndpointIm @Override public void sendPing(ByteBuffer applicationData) throws IOException, IllegalArgumentException { +if (applicationData.remaining() > 125) { +throw new IllegalArgumentException(sm.getString("wsRemoteEndpoint.tooMuchData")); +} startMessageBlock(Constants.OPCODE_PING, applicationData, true); } @@ -175,6 +178,9 @@ public abstract class WsRemoteEndpointIm @Override public void sendPong(ByteBuffer applicationData) throws IOException, IllegalArgumentException { +if (applicationData.remaining() > 125) { +throw new IllegalArgumentException(sm.getString("wsRemoteEndpoint.tooMuchData")); +} startMessageBlock(Constants.OPCODE_PONG, applicationData, true); } @@ -582,7 +588,7 @@ public abstract class WsRemoteEndpointIm throw new EncodeException(obj, sm.getString( "wsRemoteEndpoint.noEncoder", obj.getClass())); } -} catch (EncodeException | IOException e) { +} catch (Exception e) { SendResult sr = new SendResult(e); completion.onResult(sr); } Modified: tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerBase.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerBase.java?rev=1642723&r1=1642722&r2=1642723&view=diff == --- tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerBase.java (original) +++ tomcat/trunk/java/org/apache/tomcat/websocket/pojo/PojoMessageHandlerBase.java Mon Dec 1 17:57:30 2014 @@ -116,7 +116,7 @@ public abstract class PojoMessageHandler if (t instanceof RuntimeException) { throw (RuntimeException) t; } else { -throw new RuntimeException(t); +throw new RuntimeException(t.getMessage(), t); } } } - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 55884] JSPs no longer compile in Java 8
https://issues.apache.org/bugzilla/show_bug.cgi?id=55884 Konstantin Kolinko changed: What|Removed |Added Status|VERIFIED|CLOSED -- 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 56966] AccessLogValve's elapsed time has 15ms precision on Windows
https://issues.apache.org/bugzilla/show_bug.cgi?id=56966 Konstantin Kolinko changed: What|Removed |Added OS||All Severity|normal |enhancement --- Comment #1 from Konstantin Kolinko --- I see 1ms precision when running on Windows 7. I see 1ms running on Linux. The last time when I observed 10ms was Windows XP, but Windows XP is now End-of-life. Note that System.nanoTime() has caveats. It makes sense only when measuring time intervals. It cannot be used to measure current time. req.getStartTime() is used as wall clock time value. It means that there has to be another field in addition to req.getStartTime(). It also means that there needs to be a change to the Log interface to pass a nano time value in addition to milli time one. Is there much interest in measuring times shorter than 1ms? Usually there is an interest in requests that take a long time. -- 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 56966] AccessLogValve's elapsed time has 15ms precision on Windows
https://issues.apache.org/bugzilla/show_bug.cgi?id=56966 --- Comment #2 from Tom Fitzhenry --- I observed the 15ms precision on Windows Server 2012 R2, the latest MS server edition. Sorry, I should have mentioned that in the description. -- 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 57215] Regression in Tomcat 7.0.54 after Bug 56501 with urls starting with //
https://issues.apache.org/bugzilla/show_bug.cgi?id=57215 --- Comment #5 from Konstantin Kolinko --- (In reply to Mark Thomas from comment #4) > > Regarding the fragility of canonicalContextPath.equals(candidate), better > suggestions welcome. The code that was added to Request class is located far from the code that performs decoding and mapping (CoyoteAdapter) and one that performs URL-decoding (UDecoder) and it is hard to compare those and keep in sync. Comparing the code highlighted an issue -> 1. 1. Using UDecoder.URLDecode(candidate) + canonicalContextPath.equals(candidate) is broken, as URLDecode() without second argument uses ISO-8859-1 charset. The equals() may return false. 2. Move the code to CoyoteAdapter.postParseRequest(). Evaluate the value there only once. 3. In unexpected situations, error out (400) instead of falling through. 4. Maybe add an utility methods to UDecoder to search for next decoded '/' in a ByteChunk? 5. In CoyoteAdapter.postParseRequest() when decodedURI.getType() is not bytes (e.g. when requestURI is changed by RewriteValve), normalization is skipped. I think that it should not be skipped. -- 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
Re: svn commit: r1642721 - /tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
Hi, On Mon, Dec 1, 2014 at 6:55 PM, wrote: > Author: remm > Date: Mon Dec 1 17:55:07 2014 > New Revision: 1642721 > > URL: http://svn.apache.org/r1642721 > Log: > Try a better origin header. > > Modified: > tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java > > Modified: > tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java > URL: > http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java?rev=1642721&r1=1642720&r2=1642721&view=diff > > == > --- > tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java > (original) > +++ > tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java Mon > Dec 1 17:55:07 2014 > @@ -224,8 +224,6 @@ public class WsWebSocketContainer > clientEndpointConfiguration.getConfigurator(). > beforeRequest(reqHeaders); > > -ByteBuffer request = createRequest(path, reqHeaders); > - > SocketAddress sa; > if (port == -1) { > if ("ws".equalsIgnoreCase(scheme)) { > @@ -244,6 +242,20 @@ public class WsWebSocketContainer > sa = new InetSocketAddress(host, port); > } > > +// Origin header > +if (!reqHeaders.containsKey(Constants.ORIGIN_HEADER_NAME)) { > > +List originValues = new ArrayList<>(1); > +StringBuffer originValue = new StringBuffer(); > Prefer StringBuilder than StringBuffer for local variables to avoid unnecessary synchronizations. > + > originValue.append(path.getScheme()).append("://").append(path.getHost()); > +if (port != -1) { > +originValue.append(':').append(port); > +} > +originValues.add(originValue.toString()); > +reqHeaders.put(Constants.ORIGIN_HEADER_NAME, originValues); > +} > + > +ByteBuffer request = createRequest(path, reqHeaders); > + > AsynchronousSocketChannel socketChannel; > try { > socketChannel = > AsynchronousSocketChannel.open(getAsynchronousChannelGroup()); > @@ -476,11 +488,6 @@ public class WsWebSocketContainer > generateExtensionHeaders(extensions)); > } > > -// Origin header > -List originValues = new ArrayList<>(1); > -originValues.add(path.toString()); > -headers.put(Constants.ORIGIN_HEADER_NAME, originValues); > - > return headers; > } > > > > > - > To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org > For additional commands, e-mail: dev-h...@tomcat.apache.org > >
Re: Moderators wanted
Am 1. Dezember 2014 16:56:17 MEZ, schrieb Mark Thomas : >Hi, > >I've been reviewing the moderators for our various lists and if I >ignore >the no longer active ones we are below the 3 moderators the ASF likes >to >have on a number of lists. > >Therefore, can I have some volunteers for the following lists: > >users@tomcat.a.o- Need two moderators >dev@tomct.a.o - Need one moderator >announce@tomcat.a.o - Need one moderator >private@tomcat.a.o - Need one moderator >security@tomcat.a.o - Need one moderator > >You can volunteer for more than one :) I would be willing to moderate users and/ or dev. Regards Felix > >There is typically less than one message a week that requires moderator >input (security@ is a little higher) which is usually explaining to >folks how to unsubscribe themselves or doing it for them if they are >unable to. > >Note all of our public lists automatically reject mails from >unsubscribed users so there is no moderator traffic from that source. > >Generally, you need to be a committer to moderate a list. >To moderate the private and security list you need to be a PMC member. > >Cheers, > >Mark > >- >To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org >For additional commands, e-mail: dev-h...@tomcat.apache.org - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1642740 - /tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
Author: remm Date: Mon Dec 1 19:29:48 2014 New Revision: 1642740 URL: http://svn.apache.org/r1642740 Log: Use a StringBuilder instead. Modified: tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java Modified: tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java?rev=1642740&r1=1642739&r2=1642740&view=diff == --- tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java (original) +++ tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java Mon Dec 1 19:29:48 2014 @@ -245,7 +245,7 @@ public class WsWebSocketContainer // Origin header if (!reqHeaders.containsKey(Constants.ORIGIN_HEADER_NAME)) { List originValues = new ArrayList<>(1); -StringBuffer originValue = new StringBuffer(); +StringBuilder originValue = new StringBuilder(); originValue.append(path.getScheme()).append("://").append(path.getHost()); if (port != -1) { originValue.append(':').append(port); - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: svn commit: r1642722 - /tomcat/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java
On 01/12/2014 17:56, r...@apache.org wrote: > Author: remm > Date: Mon Dec 1 17:56:10 2014 > New Revision: 1642722 > > URL: http://svn.apache.org/r1642722 > Log: > Don't call onMessage on whole empty messages. What is the justification for this? RFC 6455 permits zero length messages. There is nothing in the Java WebSocket spec I can recall that permits zero length messages to be skipped. Mark > > Modified: > tomcat/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java > > Modified: tomcat/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java > URL: > http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java?rev=1642722&r1=1642721&r2=1642722&view=diff > == > --- tomcat/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java (original) > +++ tomcat/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java Mon Dec 1 > 17:56:10 2014 > @@ -390,8 +390,10 @@ public abstract class WsFrameBase { > messageBufferText.toString(), last); > } else { > // Caller ensures last == true if this branch is used > -((MessageHandler.Whole) textMsgHandler).onMessage( > -messageBufferText.toString()); > +if (messageBufferText.remaining() > 0) { > +((MessageHandler.Whole) > textMsgHandler).onMessage( > +messageBufferText.toString()); > +} > } > } catch (Throwable t) { > handleThrowableOnSend(t); > @@ -583,7 +585,9 @@ public abstract class WsFrameBase { > ((MessageHandler.Partial) > binaryMsgHandler).onMessage(msg, last); > } else { > // Caller ensures last == true if this branch is used > -((MessageHandler.Whole) > binaryMsgHandler).onMessage(msg); > +if (msg.remaining() > 0) { > +((MessageHandler.Whole) > binaryMsgHandler).onMessage(msg); > +} > } > } catch(Throwable t) { > handleThrowableOnSend(t); > > > > - > To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org > For additional commands, e-mail: dev-h...@tomcat.apache.org > - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
svn commit: r1642750 - /tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
Author: markt Date: Mon Dec 1 20:51:24 2014 New Revision: 1642750 URL: http://svn.apache.org/r1642750 Log: Remove unused code Modified: tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java Modified: tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java?rev=1642750&r1=1642749&r2=1642750&view=diff == --- tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java (original) +++ tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java Mon Dec 1 20:51:24 2014 @@ -218,7 +218,7 @@ public class WsWebSocketContainer sm.getString("wsWebSocketContainer.pathNoHost")); } int port = path.getPort(); -Map> reqHeaders = createRequestHeaders(path, host, port, +Map> reqHeaders = createRequestHeaders(host, port, clientEndpointConfiguration.getPreferredSubprotocols(), clientEndpointConfiguration.getExtensions()); clientEndpointConfiguration.getConfigurator(). @@ -442,7 +442,7 @@ public class WsWebSocketContainer return result; } -private Map> createRequestHeaders(URI path, String host, +private Map> createRequestHeaders(String host, int port, List subProtocols, List extensions) { Map> headers = new HashMap<>(); - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: svn commit: r1642721 - /tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
On 01/12/2014 17:55, r...@apache.org wrote: > Author: remm > Date: Mon Dec 1 17:55:07 2014 > New Revision: 1642721 > > URL: http://svn.apache.org/r1642721 > Log: > Try a better origin header. This is an improvement since it is not just the scheme, host and port but it still reflects the connection being made to WebSocket rather than the Origin of the request. I don't see how the WebSocketContainer can possibly determine what the origin is. It has to rely on a user provided value. Also, I don't see anything in either RFC6455 or the Java WebSocket specification that says that the origin header is mandatory. Mark > > Modified: > tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java > > Modified: > tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java > URL: > http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java?rev=1642721&r1=1642720&r2=1642721&view=diff > == > --- tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java > (original) > +++ tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java > Mon Dec 1 17:55:07 2014 > @@ -224,8 +224,6 @@ public class WsWebSocketContainer > clientEndpointConfiguration.getConfigurator(). > beforeRequest(reqHeaders); > > -ByteBuffer request = createRequest(path, reqHeaders); > - > SocketAddress sa; > if (port == -1) { > if ("ws".equalsIgnoreCase(scheme)) { > @@ -244,6 +242,20 @@ public class WsWebSocketContainer > sa = new InetSocketAddress(host, port); > } > > +// Origin header > +if (!reqHeaders.containsKey(Constants.ORIGIN_HEADER_NAME)) { > +List originValues = new ArrayList<>(1); > +StringBuffer originValue = new StringBuffer(); > + > originValue.append(path.getScheme()).append("://").append(path.getHost()); > +if (port != -1) { > +originValue.append(':').append(port); > +} > +originValues.add(originValue.toString()); > +reqHeaders.put(Constants.ORIGIN_HEADER_NAME, originValues); > +} > + > +ByteBuffer request = createRequest(path, reqHeaders); > + > AsynchronousSocketChannel socketChannel; > try { > socketChannel = > AsynchronousSocketChannel.open(getAsynchronousChannelGroup()); > @@ -476,11 +488,6 @@ public class WsWebSocketContainer > generateExtensionHeaders(extensions)); > } > > -// Origin header > -List originValues = new ArrayList<>(1); > -originValues.add(path.toString()); > -headers.put(Constants.ORIGIN_HEADER_NAME, originValues); > - > return headers; > } > > > > > - > To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org > For additional commands, e-mail: dev-h...@tomcat.apache.org > - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
Re: svn commit: r1642722 - /tomcat/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java
2014-12-01 21:44 GMT+01:00 Mark Thomas : > On 01/12/2014 17:56, r...@apache.org wrote: > > Author: remm > > Date: Mon Dec 1 17:56:10 2014 > > New Revision: 1642722 > > > > URL: http://svn.apache.org/r1642722 > > Log: > > Don't call onMessage on whole empty messages. > > What is the justification for this? > > RFC 6455 permits zero length messages. > > There is nothing in the Java WebSocket spec I can recall that permits > zero length messages to be skipped. > > Doing a close of a writer or OS following an exception causes an extra empty message (so the client gets an empty message and a message created from the error, and doesn't like the first one). A flush would do the same too for no reason. So there's something that needs to be filtered out there, that's probably not what was meant to happen. Rémy
Re: svn commit: r1642722 - /tomcat/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java
On 01/12/2014 21:09, Rémy Maucherat wrote: > 2014-12-01 21:44 GMT+01:00 Mark Thomas : > >> On 01/12/2014 17:56, r...@apache.org wrote: >>> Author: remm >>> Date: Mon Dec 1 17:56:10 2014 >>> New Revision: 1642722 >>> >>> URL: http://svn.apache.org/r1642722 >>> Log: >>> Don't call onMessage on whole empty messages. >> >> What is the justification for this? >> >> RFC 6455 permits zero length messages. >> >> There is nothing in the Java WebSocket spec I can recall that permits >> zero length messages to be skipped. >> >> Doing a close of a writer or OS following an exception causes an extra > empty message (so the client gets an empty message and a message created > from the error, and doesn't like the first one). A flush would do the same > too for no reason. So there's something that needs to be filtered out > there, that's probably not what was meant to happen. OK. But this isn't the right fix for that problem. Do you have a recipe to reproduce this? My main question is what is triggering the exception? Mark - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 57238] Updated SSL/TLS information for Tomcat 8/9
https://issues.apache.org/bugzilla/show_bug.cgi?id=57238 Mark Thomas changed: What|Removed |Added Severity|normal |enhancement -- 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 57135] ImportHandler shall ignore non-public classes
https://issues.apache.org/bugzilla/show_bug.cgi?id=57135 --- Comment #3 from Mark Thomas --- https://java.net/jira/browse/UEL-41 -- 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
Re: svn commit: r1642721 - /tomcat/trunk/java/org/apache/tomcat/websocket/WsWebSocketContainer.java
2014-12-01 22:00 GMT+01:00 Mark Thomas : > This is an improvement since it is not just the scheme, host and port > but it still reflects the connection being made to WebSocket rather than > the Origin of the request. I don't see how the WebSocketContainer can > possibly determine what the origin is. It has to rely on a user provided > value. > > Also, I don't see anything in either RFC6455 or the Java WebSocket > specification that says that the origin header is mandatory. > The user has the opportunity to set its origin header, but having an origin seems mandatory enough to me right now. Anything you don't like can be wrapped inside the strict flag. Rémy
svn commit: r1642766 - /tomcat/trunk/java/org/apache/catalina/connector/Request.java
Author: markt Date: Mon Dec 1 21:58:05 2014 New Revision: 1642766 URL: http://svn.apache.org/r1642766 Log: Use correct character set when decoding kkolinko's review of fix for BZ 57215 Modified: tomcat/trunk/java/org/apache/catalina/connector/Request.java Modified: tomcat/trunk/java/org/apache/catalina/connector/Request.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/connector/Request.java?rev=1642766&r1=1642765&r2=1642766&view=diff == --- tomcat/trunk/java/org/apache/catalina/connector/Request.java (original) +++ tomcat/trunk/java/org/apache/catalina/connector/Request.java Mon Dec 1 21:58:05 2014 @@ -1892,10 +1892,10 @@ public class Request } // Now allow for normalization and/or encoding. Essentially, keep // extending the candidate path up to the next slash until the decoded -//and normalized candidate path is the same as the canonical path. +// and normalized candidate path is the same as the canonical path. String candidate = uri.substring(0, pos); if (pos > 0) { -candidate = UDecoder.URLDecode(candidate); +candidate = UDecoder.URLDecode(candidate, connector.getURIEncoding()); candidate = org.apache.tomcat.util.http.RequestUtil.normalize(candidate); } while (!canonicalContextPath.equals(candidate)) { @@ -1904,7 +1904,7 @@ public class Request return uri; } candidate = uri.substring(0, pos); -candidate = UDecoder.URLDecode(candidate); +candidate = UDecoder.URLDecode(candidate, connector.getURIEncoding()); candidate = org.apache.tomcat.util.http.RequestUtil.normalize(candidate); } return uri.substring(0, pos); - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[Bug 57215] Regression in Tomcat 7.0.54 after Bug 56501 with urls starting with //
https://issues.apache.org/bugzilla/show_bug.cgi?id=57215 --- Comment #6 from Mark Thomas --- I've fixed the issue identified in 1. Regarding 2, that would cause the code to be executed for every request when it is only likely to be used for a small percentage. 3 makes sense if we do 2 but I don't think 2 is the way to go. 4 I'm neutral on. 5 I believe that was a deliberate implementaion decision. I don'tthink we need to revisit it as part of this unless suggestion 2 is followed. The key issue is whether or not to follow suggestion 2. I'm currently leaning towards not because of performance but am prepared to be convinced otherwise. -- 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 57215] Regression in Tomcat 7.0.54 after Bug 56501 with urls starting with //
https://issues.apache.org/bugzilla/show_bug.cgi?id=57215 --- Comment #7 from Christopher Schultz --- Any reason not to have code available that does (2) but in a lazy way? That is, a utility method that can do the work to produce the result and also cache the value in the request in case it's requested again? Then, only call that utility method when the value is actually needed? -- 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 56966] AccessLogValve's elapsed time has 15ms precision on Windows
https://issues.apache.org/bugzilla/show_bug.cgi?id=56966 --- Comment #3 from Christopher Schultz --- Any other environmental notes? For instance, are you running on bare metal or in a virtualized environment? -- 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: r1642773 - in /tomcat/trunk/java/org/apache/tomcat/websocket: WsFrameBase.java WsRemoteEndpointImplBase.java
Author: remm Date: Mon Dec 1 22:35:30 2014 New Revision: 1642773 URL: http://svn.apache.org/r1642773 Log: Move the offending code to the server. Avoid sending a message when nothing has actually been written. Modified: tomcat/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java tomcat/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java Modified: tomcat/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java?rev=1642773&r1=1642772&r2=1642773&view=diff == --- tomcat/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java (original) +++ tomcat/trunk/java/org/apache/tomcat/websocket/WsFrameBase.java Mon Dec 1 22:35:30 2014 @@ -390,10 +390,8 @@ public abstract class WsFrameBase { messageBufferText.toString(), last); } else { // Caller ensures last == true if this branch is used -if (messageBufferText.remaining() > 0) { -((MessageHandler.Whole) textMsgHandler).onMessage( -messageBufferText.toString()); -} +((MessageHandler.Whole) textMsgHandler).onMessage( +messageBufferText.toString()); } } catch (Throwable t) { handleThrowableOnSend(t); @@ -585,9 +583,7 @@ public abstract class WsFrameBase { ((MessageHandler.Partial) binaryMsgHandler).onMessage(msg, last); } else { // Caller ensures last == true if this branch is used -if (msg.remaining() > 0) { -((MessageHandler.Whole) binaryMsgHandler).onMessage(msg); -} +((MessageHandler.Whole) binaryMsgHandler).onMessage(msg); } } catch(Throwable t) { handleThrowableOnSend(t); Modified: tomcat/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java?rev=1642773&r1=1642772&r2=1642773&view=diff == --- tomcat/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java (original) +++ tomcat/trunk/java/org/apache/tomcat/websocket/WsRemoteEndpointImplBase.java Mon Dec 1 22:35:30 2014 @@ -875,12 +875,13 @@ public abstract class WsRemoteEndpointIm } -private class WsOutputStream extends OutputStream { +private static class WsOutputStream extends OutputStream { private final WsRemoteEndpointImplBase endpoint; private final ByteBuffer buffer = ByteBuffer.allocate(Constants.DEFAULT_BUFFER_SIZE); private final Object closeLock = new Object(); private volatile boolean closed = false; +private volatile boolean used = false; public WsOutputStream(WsRemoteEndpointImplBase endpoint) { this.endpoint = endpoint; @@ -913,6 +914,7 @@ public abstract class WsRemoteEndpointIm throw new IndexOutOfBoundsException(); } +used = true; if (buffer.remaining() == 0) { flush(); } @@ -951,9 +953,11 @@ public abstract class WsRemoteEndpointIm } private void doWrite(boolean last) throws IOException { -buffer.flip(); -endpoint.startMessageBlock(Constants.OPCODE_BINARY, buffer, last); -stateMachine.complete(last); +if (used) { +buffer.flip(); +endpoint.startMessageBlock(Constants.OPCODE_BINARY, buffer, last); +} +endpoint.stateMachine.complete(last); buffer.clear(); } } @@ -965,6 +969,7 @@ public abstract class WsRemoteEndpointIm private final CharBuffer buffer = CharBuffer.allocate(Constants.DEFAULT_BUFFER_SIZE); private final Object closeLock = new Object(); private volatile boolean closed = false; +private volatile boolean used = false; public WsWriter(WsRemoteEndpointImplBase endpoint) { this.endpoint = endpoint; @@ -984,6 +989,7 @@ public abstract class WsRemoteEndpointIm throw new IndexOutOfBoundsException(); } +used = true; if (buffer.remaining() == 0) { flush(); } @@ -1022,9 +1028,13 @@ public abstract class WsRemoteEndpointIm } private void doWrite(boolean last) throws IOException { -buffer.flip(); -endpoint.sendPartialString(buffer, last); -buffer.clear(); +if (used) { +buffer.flip(); +endpoint.sendPartialString(buffer, last); +buffer.clear(); +
[GUMP@vmgump]: 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. 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.apache.org/gump/public/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.apache.org/gump/public/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: 25 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 -Dcheckstyle.jar=/srv/gump/public/workspace/checkstyle/target/checkstyle-6.2-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/packages/antlr/antlr-3.1.3.jar:/srv/gump/public/workspace/checkstyle/target/checkstyle-6.2-SNAPSHOT.jar:/srv/gump/public/workspace/apache-commons/beanutils/dist/commons-beanutils-20141202.jar:/srv/gump/public/workspace/apache-commons/cli/target/commons-cli-1.3-SNAPSHOT.jar:/srv/gump/packages/commons-collections3/commons-collections-3.2.1.jar:/srv/gump/public/workspace/apache-commons/exec/target/commons-exec-1.3.1-SNAPSHOT.j ar:/srv/gump/public/workspace/apache-commons/logging/target/commons-logging-20141202.jar:/srv/gump/public/workspace/apache-commons/logging/target/commons-logging-api-20141202.jar:/srv/gump/public/workspace/apache-commons/validator/dist/commons-validator-20141202.jar:/srv/gump/packages/guava/guava-18.0.jar - Buildfile: /srv/gump/public/workspace/tomcat-8.0.x/build.xml build-prepare: [delete] Deleting directory /srv/gump/public/workspace/tomcat-8.0.x/output/build/temp [mkdir] Created dir: /srv/gump/public/workspace/tomcat-8.0.x/output/build/temp compile-prepare: download-validate: testexist: [echo] Testing for /srv/gump/public/workspace/checkstyle/target/checkstyle-6.2-SNAPSHOT.jar setproxy: downloadfile: validate: [mkdir] Created dir: /srv/gump/public/workspace/tomcat-8.0.x/output/res/checkstyle [checkstyle] Running Checkstyle 6.2-SNAPSHOT on 2926 files [checkstyle] /srv/gump/public/workspace/tomcat-8.0.x/webapps/docs/changelog.xml:66: Line matches the illegal pattern '\s+$'. BUILD FAILED /srv/gump/public/workspace/tomcat-8.0.x/build.xml:542: Got 1 errors and 0 warnings. Total time: 25 seconds - To subscribe to this information via syndicated feeds: - RSS: http://vmgump.apache.org/gump/public/tomcat-8.0.x/tomcat-tc8.0.x-validate/rss.xml - Atom: http://vmgump.apache.org/gump/public/tomcat-8.0.x/tomcat-tc8.0.x-validate/atom.xml == Gump Tracking Only === Produced by Apache Gump(TM) version 2.3. Gump Run 2014120205, vmgump.apache.org:vmgump:2014120205 Gump E-mail Identifier (unique within run) #5. -- Apache Gump http://gump.apache.org/ [Instance: vmgump] - To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org
[GUMP@vmgump]: Project tomcat-tc8.0.x-test-nio2 (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-test-nio2 has an issue affecting its community integration. This issue affects 1 projects, and has been outstanding for 18 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-test-nio2 : Tomcat 8.x, a web server implementing the Java Servlet 3.1, ... Full details are available at: http://vmgump.apache.org/gump/public/tomcat-8.0.x/tomcat-tc8.0.x-test-nio2/index.html That said, some information snippets are provided here. The following annotations (debug/informational/warning/error messages) were provided: -DEBUG- Dependency on commons-daemon exists, no need to add for property commons-daemon.native.src.tgz. -DEBUG- Dependency on commons-daemon exists, no need to add for property tomcat-native.tar.gz. -INFO- Failed with reason build failed -INFO- Project Reports in: /srv/gump/public/workspace/tomcat-8.0.x/output/logs-NIO2 -INFO- Project Reports in: /srv/gump/public/workspace/tomcat-8.0.x/output/test-tmp-NIO2/logs The following work was performed: http://vmgump.apache.org/gump/public/tomcat-8.0.x/tomcat-tc8.0.x-test-nio2/gump_work/build_tomcat-8.0.x_tomcat-tc8.0.x-test-nio2.html Work Name: build_tomcat-8.0.x_tomcat-tc8.0.x-test-nio2 (Type: Build) Work ended in a state of : Failed Elapsed: 23 mins 49 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 -Djunit.jar=/srv/gump/public/workspace/junit/target/junit-4.12-SNAPSHOT.jar -Dobjenesis.jar=/srv/gump/public/workspace/objenesis/main/target/objenesis-2.2-SNAPSHOT.jar -Dtest.reports=output/logs-NIO2 -Dtomcat-native.tar.gz=/srv/gump/public/workspace/apache-commons/daemon/dist/bin/commons-daemon-20141202-native-src.tar.gz -Dexamples.sources.skip=true -Djdt.jar=/srv/gump/packages/eclipse/plugins/R-4.4-201406061215/ecj-4.4.jar -Dcommons-daemon.jar=/srv/gump/public/workspace/apache-commons/daemon/dist/commons-daemon-20141202.jar -Dcommons-daemon.native.src.tgz=/srv/gump/public/workspace/apache-commons/daemon/dist/bin/commons-daemon-20141202-native-src.tar.gz -Dtest.temp=output/test-tmp-NIO2 -Dtest.accesslog=true -Dexecute.test.nio=false -Dtest.openssl.path=/srv/gump/public/workspace/openssl/dest-20141202/bin/opens sl -Dexecute.test.apr=false -Dexecute.test.bio=false -Dexecute.test.nio2=true -Deasymock.jar=/srv/gump/public/workspace/easymock/easymock/target/easymock-3.3.jar -Dhamcrest.jar=/srv/gump/public/workspace/hamcrest/build/hamcrest-all-20141202.jar -Dcglib.jar=/srv/gump/packages/cglib/cglib-nodep-2.2.jar test [Working Directory: /srv/gump/public/workspace/tomcat-8.0.x] CLASSPATH: /usr/lib/jvm/java-8-oracle/lib/tools.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/build/webapps/examples/WEB-INF/classes:/srv/gump/public/workspace/tomcat-8.0.x/output/testclasses:/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/tomcat-8.0.x/output/build/bin/bootstrap.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/build/bin/tomcat-juli.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/build/lib/annotations-api.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/build/lib/servlet-api.ja r:/srv/gump/public/workspace/tomcat-8.0.x/output/build/lib/jsp-api.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/build/lib/el-api.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/build/lib/websocket-api.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/build/lib/catalina.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/build/lib/catalina-ant.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/build/lib/catalina-storeconfig.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/build/lib/tomcat-coyote.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/build/lib/jasper.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/build/lib/jasper-el.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/build/lib/catalina-tribes.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/build/lib/catalina-ha.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/build/lib/tomcat-api.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/build/lib/tomcat-jni.jar:/srv/gump/public/workspace/tomcat-8.0.x/output/bu ild/lib/
[GUMP@vmgump]: Project tomcat-trunk-test-apr (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-test-apr has an issue affecting its community integration. This issue affects 1 projects. The current state of this project is 'Failed', with reason 'Build Failed'. For reference only, the following projects are affected by this: - tomcat-trunk-test-apr : Tomcat 9.x, a web server implementing the Java Servlet 4.0, ... Full details are available at: http://vmgump.apache.org/gump/public/tomcat-trunk/tomcat-trunk-test-apr/index.html That said, some information snippets are provided here. The following annotations (debug/informational/warning/error messages) were provided: -DEBUG- Dependency on commons-daemon exists, no need to add for property commons-daemon.native.src.tgz. -DEBUG- Dependency on commons-daemon exists, no need to add for property tomcat-native.tar.gz. -INFO- Failed with reason build failed -INFO- Project Reports in: /srv/gump/public/workspace/tomcat-trunk/output/logs-APR -INFO- Project Reports in: /srv/gump/public/workspace/tomcat-trunk/output/test-tmp-APR/logs The following work was performed: http://vmgump.apache.org/gump/public/tomcat-trunk/tomcat-trunk-test-apr/gump_work/build_tomcat-trunk_tomcat-trunk-test-apr.html Work Name: build_tomcat-trunk_tomcat-trunk-test-apr (Type: Build) Work ended in a state of : Failed Elapsed: 23 mins 14 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 -Djunit.jar=/srv/gump/public/workspace/junit/target/junit-4.12-SNAPSHOT.jar -Dobjenesis.jar=/srv/gump/public/workspace/objenesis/main/target/objenesis-2.2-SNAPSHOT.jar -Dtest.reports=output/logs-APR -Dtomcat-native.tar.gz=/srv/gump/public/workspace/apache-commons/daemon/dist/bin/commons-daemon-20141202-native-src.tar.gz -Dexamples.sources.skip=true -Djdt.jar=/srv/gump/packages/eclipse/plugins/R-4.4-201406061215/ecj-4.4.jar -Dtest.apr.loc=/srv/gump/public/workspace/tomcat-native/dest-20141202/lib -Dcommons-daemon.jar=/srv/gump/public/workspace/apache-commons/daemon/dist/commons-daemon-20141202.jar -Dcommons-daemon.native.src.tgz=/srv/gump/public/workspace/apache-commons/daemon/dist/bin/commons-daemon-20141202-native-src.tar.gz -Dtest.temp=output/test-tmp-APR -Dtest.accesslog=true -Dexecute.test.nio=false -Dtest .openssl.path=/srv/gump/public/workspace/openssl/dest-20141202/bin/openssl -Dexecute.test.apr=true -Dexecute.test.nio2=false -Deasymock.jar=/srv/gump/public/workspace/easymock/easymock/target/easymock-3.3.jar -Dhamcrest.jar=/srv/gump/public/workspace/hamcrest/build/hamcrest-all-20141202.jar -Dcglib.jar=/srv/gump/packages/cglib/cglib-nodep-2.2.jar test [Working Directory: /srv/gump/public/workspace/tomcat-trunk] CLASSPATH: /usr/lib/jvm/java-8-oracle/lib/tools.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/webapps/examples/WEB-INF/classes:/srv/gump/public/workspace/tomcat-trunk/output/testclasses:/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/tomcat-trunk/output/build/bin/bootstrap.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/bin/tomcat-juli.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/annotations-api.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/servlet-api.ja r:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/jsp-api.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/el-api.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/websocket-api.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/catalina.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/catalina-ant.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/catalina-storeconfig.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/tomcat-coyote.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/jasper.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/jasper-el.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/catalina-tribes.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/catalina-ha.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/tomcat-api.jar:/srv/gump/public/workspace/tomcat-trunk/output/build/lib/tomcat-jni.jar:/srv/gump/public/workspace/tomcat-trunk/output/bu ild/lib/tomcat-spdy.
[Bug 51580] Severe error deploying WAR application (ExpandWar error)
https://issues.apache.org/bugzilla/show_bug.cgi?id=51580 Ankur changed: What|Removed |Added URL||public_html/jSearchEngine.w ||ar -- 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 51580] Severe error deploying WAR application (ExpandWar error)
https://issues.apache.org/bugzilla/show_bug.cgi?id=51580 Chuck Caldarale changed: What|Removed |Added URL|public_html/jSearchEngine.w | |ar | -- 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: r1642801 - in /tomcat/taglibs/standard/trunk/spec: ./ src/main/java/javax/servlet/jsp/jstl/tlv/ src/test/ src/test/java/ src/test/java/javax/ src/test/java/javax/servlet/ src/test/java/jav
Author: jboynes Date: Tue Dec 2 05:09:47 2014 New Revision: 1642801 URL: http://svn.apache.org/r1642801 Log: Cleanup warnings and add test for issue 57290 Added: tomcat/taglibs/standard/trunk/spec/src/test/ tomcat/taglibs/standard/trunk/spec/src/test/java/ tomcat/taglibs/standard/trunk/spec/src/test/java/javax/ tomcat/taglibs/standard/trunk/spec/src/test/java/javax/servlet/ tomcat/taglibs/standard/trunk/spec/src/test/java/javax/servlet/jsp/ tomcat/taglibs/standard/trunk/spec/src/test/java/javax/servlet/jsp/jstl/ tomcat/taglibs/standard/trunk/spec/src/test/java/javax/servlet/jsp/jstl/tlv/ tomcat/taglibs/standard/trunk/spec/src/test/java/javax/servlet/jsp/jstl/tlv/PermittedTaglibsTLVTest.java (with props) Modified: tomcat/taglibs/standard/trunk/spec/pom.xml tomcat/taglibs/standard/trunk/spec/src/main/java/javax/servlet/jsp/jstl/tlv/PermittedTaglibsTLV.java Modified: tomcat/taglibs/standard/trunk/spec/pom.xml URL: http://svn.apache.org/viewvc/tomcat/taglibs/standard/trunk/spec/pom.xml?rev=1642801&r1=1642800&r2=1642801&view=diff == --- tomcat/taglibs/standard/trunk/spec/pom.xml (original) +++ tomcat/taglibs/standard/trunk/spec/pom.xml Tue Dec 2 05:09:47 2014 @@ -80,6 +80,19 @@ 1.0 provided + + +junit +junit +4.8.1 +test + + +org.easymock +easymock +3.0 +test + Modified: tomcat/taglibs/standard/trunk/spec/src/main/java/javax/servlet/jsp/jstl/tlv/PermittedTaglibsTLV.java URL: http://svn.apache.org/viewvc/tomcat/taglibs/standard/trunk/spec/src/main/java/javax/servlet/jsp/jstl/tlv/PermittedTaglibsTLV.java?rev=1642801&r1=1642800&r2=1642801&view=diff == --- tomcat/taglibs/standard/trunk/spec/src/main/java/javax/servlet/jsp/jstl/tlv/PermittedTaglibsTLV.java (original) +++ tomcat/taglibs/standard/trunk/spec/src/main/java/javax/servlet/jsp/jstl/tlv/PermittedTaglibsTLV.java Tue Dec 2 05:09:47 2014 @@ -18,6 +18,7 @@ package javax.servlet.jsp.jstl.tlv; import java.io.IOException; import java.util.HashSet; +import java.util.Map; import java.util.Set; import java.util.StringTokenizer; @@ -40,6 +41,10 @@ import org.xml.sax.helpers.DefaultHandle * to tag libraries permitted to be imported on the page in addition to the tag * library that references PermittedTaglibsTLV (which is allowed implicitly). * + * This implementation only detects tag libraries declared on the {@code } element, + * including libraries in regular JSP files or JSP Documents with a specific {@code }. + * It does not detect libraries declared on other elements as supported by JSP 2.0. + * * * @author Shawn Bayern */ @@ -62,56 +67,31 @@ public class PermittedTaglibsTLV extends private static final PageParser parser = new PageParser(false); -//* -// Validation and configuration state (protected) - -private Set permittedTaglibs;// what URIs are allowed? -private boolean failed;// did the page fail? -private String uri;// our taglib's URI - -//* -// Constructor and lifecycle management +private final Set permittedTaglibs;// what URIs are allowed? public PermittedTaglibsTLV() { -super(); -init(); -} - -private void init() { -permittedTaglibs = null; +permittedTaglibs = new HashSet(); } @Override -public void release() { -super.release(); -init(); +public void setInitParameters(Map initParams) { +super.setInitParameters(initParams); +permittedTaglibs.clear(); +String uris = (String) initParams.get(PERMITTED_TAGLIBS_PARAM); +if (uris != null) { +StringTokenizer st = new StringTokenizer(uris); +while (st.hasMoreTokens()) { +permittedTaglibs.add(st.nextToken()); +} +} } - -//* -// Validation entry point - @Override -public synchronized ValidationMessage[] validate(String prefix, String uri, PageData page) { +public ValidationMessage[] validate(String prefix, String uri, PageData page) { try { -// initialize -this.uri = uri; -permittedTaglibs = readConfiguration(); - -// get a handler -DefaultHandler h = new PermittedTaglibsHandler(); - -// parse the page +PermittedTaglibsHandler h = new PermittedTaglibsHandler(prefix, uri); parser.parse(page, h); - -if (fail
[Bug 57290] PermittedTaglibsTLV does not reject unspecified tags in JSP Documents
https://issues.apache.org/bugzilla/show_bug.cgi?id=57290 Jeremy Boynes changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |WONTFIX --- Comment #2 from Jeremy Boynes --- Test case added in http://svn.apache.org/r1642801 Documented that this TLV does not detect tags in JSP2.0 Documents. Closing as WONTFIX -- 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 55609] c:forEach loop on integer range consumes unnecessary heap space in proportion to value for "end"
https://issues.apache.org/bugzilla/show_bug.cgi?id=55609 Jeremy Boynes changed: What|Removed |Added Status|NEW |RESOLVED Resolution|--- |WONTFIX --- Comment #4 from Jeremy Boynes --- Closing as 1.2.1 is released and no new release of 1.1 is likely. -- 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 57283] Web Services accessible in browser but not opening in Soap UI
https://issues.apache.org/bugzilla/show_bug.cgi?id=57283 Rajdeep Raut changed: What|Removed |Added Status|RESOLVED|REOPENED Resolution|INVALID |--- --- Comment #2 from Rajdeep Raut --- Hi, For your clarification I want to tell you that we have some web services which are running perfectly with tomcat 8.0.0(browsable in browser and in soap UI as well). The same war when we have deployed in tomcat 8.0.15, the web services(which are with basic authentication) are accessible in browser after giving the user id and password, but when we are trying to create a project with the same web services in Soap Ui it's keeps on loading without giving any error. Then we have re-deployed the same war in tomcat 8.0.14, everything is working fine again.Please let me know anything else you want to know from my side. Thanks, Rajdeep -- 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 57283] Web Services accessible in browser but not opening in Soap UI
https://issues.apache.org/bugzilla/show_bug.cgi?id=57283 Chuck Caldarale changed: What|Removed |Added Status|REOPENED|RESOLVED Resolution|--- |INVALID --- Comment #3 from Chuck Caldarale --- Bugzilla is not a support forum. As Mark clearly stated, post your query on the Tomcat users' mailing list, not here. -- 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 57287] Sort files listed by DefaultServlet
https://issues.apache.org/bugzilla/show_bug.cgi?id=57287 --- Comment #3 from Oleg Trokhov --- Created attachment 32248 --> https://issues.apache.org/bugzilla/attachment.cgi?id=32248&action=edit Bug_57287 patch -- 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 57287] Sort files listed by DefaultServlet
https://issues.apache.org/bugzilla/show_bug.cgi?id=57287 --- Comment #4 from Oleg Trokhov --- Hi. I added patch with some changes in DefaultServlet. Now by default sorting is Alphabetic ascending, directory first.User can add parameters to http request to configure sorting: 1. http://localhost:8080/?name=asc 2. http://localhost:8080/?name=dsc 3. http://localhost:8080/?size=asc 4. http://localhost:8080/?size=dsc 5. http://localhost:8080/?modify=asc 6. http://localhost:8080/?modify=dsc Please tell if you have some suggestion or correction in code. And if you apply this change, where is documentation for this functions? -- 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 57287] Sort files listed by DefaultServlet
https://issues.apache.org/bugzilla/show_bug.cgi?id=57287 --- Comment #5 from Konstantin Kolinko --- 1. The code have to pass checkstyle rules (see BUILDING.txt on details on how enable checkstyle). One of rules: no ".*" imports. 2. I thought of using the same parameters as Apache HTTPD, They use query strings like C=N;O=A C column (N name, M last modified, S size, D description - absent in Tomcat) O order (A ascending, D descending) Your parameter naming with a single parameter also looks OK. -- 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 57142] JSP 2.3 & EL 3.0 - %page import directive & EL ImportHandler
https://issues.apache.org/bugzilla/show_bug.cgi?id=57142 --- Comment #10 from Arthur Fiedler --- Per comment #9's mention of #2 I ran into this issue with the class loader before, I believe what I was doing was accessing EL 3.0 classes directly in the context initialize listener and it could not see my classes, I ended up writing my own EL Resolver that resolved my classes, since my resolver was created in the servlets class loader. I wasn't sure how to fix it or how its truly suppose to function so I didn't report it and made my own work around. As for "C" is it better to reuse the ELContext instead of creating it each time? Wouldn't the object need to be reset and synchronized for every request to that jsp? I didn't look at the code so I don't know the in's and outs of how jsps are processed, but if you wanted to do that maybe a ThreadModel would work to avoid synchronizing, just a thought. -- 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