diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/ServerConnector.java b/jetty-server/src/main/java/org/eclipse/jetty/server/ServerConnector.java index 1478a6da187..4ad598b6702 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/ServerConnector.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/ServerConnector.java @@ -327,8 +327,8 @@ public class ServerConnector extends AbstractNetworkConnector serverChannel = ServerSocketChannel.open(); InetSocketAddress bindAddress = getHost() == null ? new InetSocketAddress(getPort()) : new InetSocketAddress(getHost(), getPort()); - serverChannel.socket().bind(bindAddress, getAcceptQueueSize()); serverChannel.socket().setReuseAddress(getReuseAddress()); + serverChannel.socket().bind(bindAddress, getAcceptQueueSize()); _localPort = serverChannel.socket().getLocalPort(); if (_localPort <= 0) diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ResourceHandler.java b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ResourceHandler.java index 2f95f6cc025..d047b08918a 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ResourceHandler.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ResourceHandler.java @@ -303,6 +303,9 @@ public class ResourceHandler extends HandlerWrapper if (path==null || !path.startsWith("/")) throw new MalformedURLException(path); + if (LOG.isDebugEnabled()) + LOG.debug("{} getResource({})",_context==null?_baseResource:_context,_baseResource,path); + Resource base = _baseResource; if (base==null) { @@ -315,8 +318,12 @@ public class ResourceHandler extends HandlerWrapper { path=URIUtil.canonicalPath(path); Resource r = base.addPath(path); - if (r!=null && r.isAlias() && !_context.checkAlias(path, r)) + if (r!=null && r.isAlias() && (_context==null || !_context.checkAlias(path, r))) + { + if (LOG.isDebugEnabled()) + LOG.debug("resource={} alias={}",r,r.getAlias()); return null; + } return r; } catch(Exception e) @@ -404,6 +411,16 @@ public class ResourceHandler extends HandlerWrapper } Resource resource = getResource(request); + + if (LOG.isDebugEnabled()) + { + if (resource==null) + LOG.debug("resource=null"); + else + LOG.debug("resource={} alias={} exists={}",resource,resource.getAlias(),resource.exists()); + } + + // If resource is not found if (resource==null || !resource.exists()) { diff --git a/jetty-start/src/main/java/org/eclipse/jetty/start/StartLog.java b/jetty-start/src/main/java/org/eclipse/jetty/start/StartLog.java index e7acfa13c14..96ca01aa12a 100644 --- a/jetty-start/src/main/java/org/eclipse/jetty/start/StartLog.java +++ b/jetty-start/src/main/java/org/eclipse/jetty/start/StartLog.java @@ -114,6 +114,7 @@ public class StartLog if (logFileName != null) { Path logfile = baseHome.getPath(logFileName); + logfile = logfile.toAbsolutePath(); initLogFile(logfile); } } diff --git a/jetty-util/src/main/java/org/eclipse/jetty/util/URIUtil.java b/jetty-util/src/main/java/org/eclipse/jetty/util/URIUtil.java index afa8b442872..d65456ca64f 100644 --- a/jetty-util/src/main/java/org/eclipse/jetty/util/URIUtil.java +++ b/jetty-util/src/main/java/org/eclipse/jetty/util/URIUtil.java @@ -839,13 +839,12 @@ public class URIUtil if (cb=='%') cb=TypeUtil.convertHexDigit(uriB.charAt(b++))*16+TypeUtil.convertHexDigit(uriB.charAt(b++)); - if (ca!=cb) - return false; - if (ca=='/' && oa!=ob) return false; + + if (ca!=cb ) + return URIUtil.decodePath(uriA).equals(URIUtil.decodePath(uriB)); } - return a==lenA && b==lenB; } } diff --git a/jetty-util/src/test/java/org/eclipse/jetty/util/resource/FileSystemResourceTest.java b/jetty-util/src/test/java/org/eclipse/jetty/util/resource/FileSystemResourceTest.java index bee8a56ffb7..a964d737314 100644 --- a/jetty-util/src/test/java/org/eclipse/jetty/util/resource/FileSystemResourceTest.java +++ b/jetty-util/src/test/java/org/eclipse/jetty/util/resource/FileSystemResourceTest.java @@ -52,6 +52,7 @@ import org.eclipse.jetty.util.CollectionAssert; import org.hamcrest.BaseMatcher; import org.hamcrest.Description; import org.hamcrest.Matcher; +import org.junit.Assert; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; @@ -1043,4 +1044,20 @@ public class FileSystemResourceTest assertThat("File should have been deleted.",res.exists(),is(false)); } } + + + @Test + public void testUtf8Dir() throws Exception + { + File dir=new File(testdir.getDir(),"bãm"); + dir.mkdir(); + File file = new File(dir,"file.txt"); + file.createNewFile(); + + Resource base = newResource(dir); + assertNull(base.getAlias()); + + Resource r = base.addPath("file.txt"); + assertNull(r.getAlias()); + } } diff --git a/jetty-xml/src/main/java/org/eclipse/jetty/xml/XmlConfiguration.java b/jetty-xml/src/main/java/org/eclipse/jetty/xml/XmlConfiguration.java index 3834757a046..5c85a4cd703 100644 --- a/jetty-xml/src/main/java/org/eclipse/jetty/xml/XmlConfiguration.java +++ b/jetty-xml/src/main/java/org/eclipse/jetty/xml/XmlConfiguration.java @@ -92,7 +92,7 @@ public class XmlConfiguration private static final Iterable __factoryLoader = ServiceLoader.load(ConfigurationProcessorFactory.class); private static final XmlParser __parser = initParser(); - private synchronized static XmlParser initParser() + private static XmlParser initParser() { XmlParser parser = new XmlParser(); URL config60 = Loader.getResource(XmlConfiguration.class, "org/eclipse/jetty/xml/configure_6_0.dtd");