Merge remote-tracking branch 'origin/jetty-9.2.x'

Conflicts:
	jetty-server/src/main/java/org/eclipse/jetty/server/handler/ResourceHandler.java
	jetty-util/src/test/java/org/eclipse/jetty/util/resource/AbstractFSResourceTest.java
This commit is contained in:
Greg Wilkins 2014-10-30 14:36:50 +11:00
commit a6e00bc642
6 changed files with 41 additions and 7 deletions

View File

@ -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)

View File

@ -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())
{

View File

@ -114,6 +114,7 @@ public class StartLog
if (logFileName != null)
{
Path logfile = baseHome.getPath(logFileName);
logfile = logfile.toAbsolutePath();
initLogFile(logfile);
}
}

View File

@ -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;
}
}

View File

@ -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());
}
}

View File

@ -92,7 +92,7 @@ public class XmlConfiguration
private static final Iterable<ConfigurationProcessorFactory> __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");