diff options
author | Greg Wilkins | 2016-02-04 06:00:13 +0000 |
---|---|---|
committer | Greg Wilkins | 2016-02-04 06:00:13 +0000 |
commit | df79ad689a38592472d3696e15bf0252e617b8e7 (patch) | |
tree | c2fedd48685d4f06c044821f01b3a7c12a455b71 /jetty-server/src/main | |
parent | 459ba4ae5aa7f9a29d18b4e08848ff6e1cec0e4a (diff) | |
parent | 009fde2400a746b1ce24ba04bd4fcd001378516b (diff) | |
download | org.eclipse.jetty.project-df79ad689a38592472d3696e15bf0252e617b8e7.tar.gz org.eclipse.jetty.project-df79ad689a38592472d3696e15bf0252e617b8e7.tar.xz org.eclipse.jetty.project-df79ad689a38592472d3696e15bf0252e617b8e7.zip |
Merge remote-tracking branch 'origin/jetty-9.3.x'
Diffstat (limited to 'jetty-server/src/main')
11 files changed, 131 insertions, 107 deletions
diff --git a/jetty-server/src/main/config/etc/jetty-debuglog.xml b/jetty-server/src/main/config/etc/jetty-debuglog.xml index adbb10a5d4..0a082ce11f 100644 --- a/jetty-server/src/main/config/etc/jetty-debuglog.xml +++ b/jetty-server/src/main/config/etc/jetty-debuglog.xml @@ -6,20 +6,20 @@ <!-- =============================================================== --> <Configure id="Server" class="org.eclipse.jetty.server.Server"> - <Get id="oldhandler" name="handler"/> - <Set name="handler"> - <New id="DebugHandler" class="org.eclipse.jetty.server.handler.DebugHandler"> - <Set name="handler"><Ref refid="oldhandler"/></Set> - <Set name="outputStream"> - <New class="org.eclipse.jetty.util.RolloverFileOutputStream"> - <Arg type="String"><Property name="jetty.debuglog.dir" deprecated="jetty.logs" default="./logs"/>/yyyy_mm_dd.debug.log</Arg> - <Arg type="boolean"><Property name="jetty.debuglog.append" default="true"/></Arg> - <Arg type="int"><Property name="jetty.debuglog.retainDays" default="90"/></Arg> - <Arg> - <Call class="java.util.TimeZone" name="getTimeZone"><Arg><Property name="jetty.debuglog.timezone" default="GMT"/></Arg></Call> - </Arg> - </New> - </Set> - </New> - </Set> + <Call name="insertHandler"> + <Arg> + <New id="DebugHandler" class="org.eclipse.jetty.server.handler.DebugHandler"> + <Set name="outputStream"> + <New class="org.eclipse.jetty.util.RolloverFileOutputStream"> + <Arg type="String"><Property name="jetty.debuglog.dir" deprecated="jetty.logs" default="./logs"/>/yyyy_mm_dd.debug.log</Arg> + <Arg type="boolean"><Property name="jetty.debuglog.append" default="true"/></Arg> + <Arg type="int"><Property name="jetty.debuglog.retainDays" default="90"/></Arg> + <Arg> + <Call class="java.util.TimeZone" name="getTimeZone"><Arg><Property name="jetty.debuglog.timezone" default="GMT"/></Arg></Call> + </Arg> + </New> + </Set> + </New> + </Arg> + </Call> </Configure> diff --git a/jetty-server/src/main/config/etc/jetty-gzip.xml b/jetty-server/src/main/config/etc/jetty-gzip.xml index f26ef0b5a1..93b41fd639 100644 --- a/jetty-server/src/main/config/etc/jetty-gzip.xml +++ b/jetty-server/src/main/config/etc/jetty-gzip.xml @@ -9,59 +9,59 @@ <!-- =============================================================== --> <Configure id="Server" class="org.eclipse.jetty.server.Server"> - <Get id="next" name="handler" /> - <Set name="handler"> - <New id="GzipHandler" class="org.eclipse.jetty.server.handler.gzip.GzipHandler"> - <Set name="handler"><Ref refid="next" /></Set> - <Set name="minGzipSize"><Property name="jetty.gzip.minGzipSize" deprecated="gzip.minGzipSize" default="2048"/></Set> - <Set name="checkGzExists"><Property name="jetty.gzip.checkGzExists" deprecated="gzip.checkGzExists" default="false"/></Set> - <Set name="compressionLevel"><Property name="jetty.gzip.compressionLevel" deprecated="gzip.compressionLevel" default="-1"/></Set> - <Set name="excludedAgentPatterns"> - <Array type="String"> - <Item><Property name="jetty.gzip.excludedUserAgent" deprecated="gzip.excludedUserAgent" default=".*MSIE.6\.0.*"/></Item> - </Array> - </Set> + <Call name="insertHandler"> + <Arg> + <New id="GzipHandler" class="org.eclipse.jetty.server.handler.gzip.GzipHandler"> + <Set name="minGzipSize"><Property name="jetty.gzip.minGzipSize" deprecated="gzip.minGzipSize" default="2048"/></Set> + <Set name="checkGzExists"><Property name="jetty.gzip.checkGzExists" deprecated="gzip.checkGzExists" default="false"/></Set> + <Set name="compressionLevel"><Property name="jetty.gzip.compressionLevel" deprecated="gzip.compressionLevel" default="-1"/></Set> + <Set name="excludedAgentPatterns"> + <Array type="String"> + <Item><Property name="jetty.gzip.excludedUserAgent" deprecated="gzip.excludedUserAgent" default=".*MSIE.6\.0.*"/></Item> + </Array> + </Set> - <Set name="includedMethods"> - <Array type="String"> - <Item>GET</Item> - </Array> - </Set> + <Set name="includedMethods"> + <Array type="String"> + <Item>GET</Item> + </Array> + </Set> - <!-- - <Set name="includedPaths"> - <Array type="String"> - <Item>/*</Item> - </Array> - </Set> - --> + <!-- + <Set name="includedPaths"> + <Array type="String"> + <Item>/*</Item> + </Array> + </Set> + --> - <!-- - <Set name="excludedPaths"> - <Array type="String"> - <Item>*.gz</Item> - </Array> - </Set> - --> + <!-- + <Set name="excludedPaths"> + <Array type="String"> + <Item>*.gz</Item> + </Array> + </Set> + --> - <!-- - <Call name="addIncludedMimeTypes"> - <Arg><Array type="String"> - <Item>some/type</Item> - </Array></Arg> - </Call> - --> + <!-- + <Call name="addIncludedMimeTypes"> + <Arg><Array type="String"> + <Item>some/type</Item> + </Array></Arg> + </Call> + --> - <!-- - <Call name="addExcludedMimeTypes"> - <Arg><Array type="String"> - <Item>some/type</Item> - </Array></Arg> - </Call> - --> + <!-- + <Call name="addExcludedMimeTypes"> + <Arg><Array type="String"> + <Item>some/type</Item> + </Array></Arg> + </Call> + --> - </New> - </Set> + </New> + </Arg> + </Call> </Configure> diff --git a/jetty-server/src/main/config/etc/jetty-ipaccess.xml b/jetty-server/src/main/config/etc/jetty-ipaccess.xml index d8236a99a0..832565c5ad 100644 --- a/jetty-server/src/main/config/etc/jetty-ipaccess.xml +++ b/jetty-server/src/main/config/etc/jetty-ipaccess.xml @@ -6,26 +6,23 @@ <!-- =============================================================== --> <Configure id="Server" class="org.eclipse.jetty.server.Server"> - - <Get id="oldhandler" name="handler"/> - - <Set name="handler"> - <New id="IPAccessHandler" class="org.eclipse.jetty.server.handler.IPAccessHandler"> - <Set name="handler"><Ref refid="oldhandler"/></Set> - <Set name="white"> - <Array type="String"> - <Item>127.0.0.1</Item> - <Item>127.0.0.2/*.html</Item> - </Array> - </Set> - <Set name="black"> - <Array type="String"> - <Item>127.0.0.1/blacklisted</Item> - <Item>127.0.0.2/black.html</Item> - </Array> - </Set> - <Set name="whiteListByPath">false</Set> - </New> - </Set> - + <Call name="insertHandler"> + <Arg> + <New id="IPAccessHandler" class="org.eclipse.jetty.server.handler.IPAccessHandler"> + <Set name="white"> + <Array type="String"> + <Item>127.0.0.1</Item> + <Item>127.0.0.2/*.html</Item> + </Array> + </Set> + <Set name="black"> + <Array type="String"> + <Item>127.0.0.1/blacklisted</Item> + <Item>127.0.0.2/black.html</Item> + </Array> + </Set> + <Set name="whiteListByPath">false</Set> + </New> + </Arg> + </Call> </Configure> diff --git a/jetty-server/src/main/config/etc/jetty-ssl-context.xml b/jetty-server/src/main/config/etc/jetty-ssl-context.xml index 68b802c9c7..7af6e66c60 100644 --- a/jetty-server/src/main/config/etc/jetty-ssl-context.xml +++ b/jetty-server/src/main/config/etc/jetty-ssl-context.xml @@ -17,16 +17,8 @@ <Set name="EndpointIdentificationAlgorithm"></Set> <Set name="NeedClientAuth"><Property name="jetty.sslContext.needClientAuth" deprecated="jetty.ssl.needClientAuth" default="false"/></Set> <Set name="WantClientAuth"><Property name="jetty.sslContext.wantClientAuth" deprecated="jetty.ssl.wantClientAuth" default="false"/></Set> - <Set name="ExcludeCipherSuites"> - <Array type="String"> - <Item>SSL_RSA_WITH_DES_CBC_SHA</Item> - <Item>SSL_DHE_RSA_WITH_DES_CBC_SHA</Item> - <Item>SSL_DHE_DSS_WITH_DES_CBC_SHA</Item> - <Item>SSL_RSA_EXPORT_WITH_RC4_40_MD5</Item> - <Item>SSL_RSA_EXPORT_WITH_DES40_CBC_SHA</Item> - <Item>SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA</Item> - <Item>SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA</Item> - </Array> - </Set> + <!-- To configure Includes / Excludes for Cipher Suites or Protocols see tweak-ssl.xml example at + https://www.eclipse.org/jetty/documentation/current/configuring-ssl.html#configuring-sslcontextfactory-cipherSuites + --> <Set name="useCipherSuitesOrder"><Property name="jetty.sslContext.useCipherSuitesOrder" default="true"/></Set> </Configure> diff --git a/jetty-server/src/main/config/etc/jetty-stats.xml b/jetty-server/src/main/config/etc/jetty-stats.xml index 4e014906a5..445ae6a8a4 100644 --- a/jetty-server/src/main/config/etc/jetty-stats.xml +++ b/jetty-server/src/main/config/etc/jetty-stats.xml @@ -6,12 +6,12 @@ <!-- =============================================================== --> <Configure id="Server" class="org.eclipse.jetty.server.Server"> - <Get id="oldhandler" name="handler" /> - <Set name="handler"> - <New id="StatsHandler" class="org.eclipse.jetty.server.handler.StatisticsHandler"> - <Set name="handler"><Ref refid="oldhandler" /></Set> - </New> - </Set> + <Call name="insertHandler"> + <Arg> + <New id="StatsHandler" class="org.eclipse.jetty.server.handler.StatisticsHandler"> + </New> + </Arg> + </Call> <Call class="org.eclipse.jetty.server.ConnectorStatistics" name="addToAllConnectors"> <Arg><Ref refid="Server"/></Arg> </Call> diff --git a/jetty-server/src/main/config/modules/ssl.mod b/jetty-server/src/main/config/modules/ssl.mod index d262842c32..2e6dc80447 100644 --- a/jetty-server/src/main/config/modules/ssl.mod +++ b/jetty-server/src/main/config/modules/ssl.mod @@ -88,3 +88,6 @@ http://git.eclipse.org/c/jetty/org.eclipse.jetty.project.git/plain/jetty-server/ ## Whether cipher order is significant (since java 8 only) # jetty.sslContext.useCipherSuitesOrder=true +## To configure Includes / Excludes for Cipher Suites or Protocols see tweak-ssl.xml example at +## https://www.eclipse.org/jetty/documentation/current/configuring-ssl.html#configuring-sslcontextfactory-cipherSuites + diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/Server.java b/jetty-server/src/main/java/org/eclipse/jetty/server/Server.java index 1d81e6a615..51c145d606 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/Server.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/Server.java @@ -654,7 +654,6 @@ public class Server extends HandlerWrapper implements Attributes /** * @return The URI of the first {@link NetworkConnector} and first {@link ContextHandler}, or null */ - @SuppressWarnings("resource") public URI getURI() { NetworkConnector connector=null; @@ -674,7 +673,10 @@ public class Server extends HandlerWrapper implements Attributes try { - String scheme=connector.getDefaultConnectionFactory().getProtocol().startsWith("SSL-")?"https":"http"; + String protocol = connector.getDefaultConnectionFactory().getProtocol(); + String scheme="http"; + if (protocol.startsWith("SSL-") || protocol.equals("SSL")) + scheme = "https"; String host=connector.getHost(); if (context!=null && context.getVirtualHosts()!=null && context.getVirtualHosts().length>0) diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java index d0fbce55de..07c316c3c4 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ContextHandler.java @@ -100,7 +100,7 @@ import org.eclipse.jetty.util.resource.Resource; * The maximum size of a form that can be processed by this context is controlled by the system properties org.eclipse.jetty.server.Request.maxFormKeys * and org.eclipse.jetty.server.Request.maxFormContentSize. These can also be configured with {@link #setMaxFormContentSize(int)} and {@link #setMaxFormKeys(int)} * <p> - * This servers executore is made available via a context attributed "org.eclipse.jetty.server.Executor". + * This servers executor is made available via a context attributed "org.eclipse.jetty.server.Executor". * <p> * By default, the context is created with alias checkers for {@link AllowSymLinkAliasChecker} (unix only) and {@link ApproveNonExistentDirectoryAliases}. * If these alias checkers are not required, then {@link #clearAliasChecks()} or {@link #setAliasChecks(List)} should be called. diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ErrorHandler.java b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ErrorHandler.java index 1b2867384c..1eacb7d64c 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ErrorHandler.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/ErrorHandler.java @@ -99,6 +99,11 @@ public class ErrorHandler extends AbstractHandler throw new IOException(x); } } + } else { + if (LOG.isDebugEnabled()) + { + LOG.debug("No Error Page mapping for request({} {}) (using default)",request.getMethod(),request.getRequestURI()); + } else { LOG.warn("Could not dispatch to error page: {}", error_page); diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/HandlerCollection.java b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/HandlerCollection.java index 4a98f786bd..0a085ffa5b 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/HandlerCollection.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/HandlerCollection.java @@ -27,6 +27,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.eclipse.jetty.server.Handler; +import org.eclipse.jetty.server.HandlerContainer; import org.eclipse.jetty.server.Request; import org.eclipse.jetty.util.ArrayUtil; import org.eclipse.jetty.util.MultiException; @@ -81,9 +82,18 @@ public class HandlerCollection extends AbstractHandlerContainer throw new IllegalStateException(STARTED); if (handlers!=null) + { + // check for loops + for (Handler handler:handlers) + if (handler == this || (handler instanceof HandlerContainer && + Arrays.asList(((HandlerContainer)handler).getChildHandlers()).contains(this))) + throw new IllegalStateException("setHandler loop"); + + // Set server for (Handler handler:handlers) if (handler.getServer()!=getServer()) handler.setServer(getServer()); + } Handler[] old=_handlers;; _handlers = handlers; updateBeans(old, handlers); diff --git a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/HandlerWrapper.java b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/HandlerWrapper.java index 5fc2d730f7..bafc4afad3 100644 --- a/jetty-server/src/main/java/org/eclipse/jetty/server/handler/HandlerWrapper.java +++ b/jetty-server/src/main/java/org/eclipse/jetty/server/handler/HandlerWrapper.java @@ -19,6 +19,7 @@ package org.eclipse.jetty.server.handler; import java.io.IOException; +import java.util.Arrays; import java.util.List; import javax.servlet.ServletException; @@ -26,6 +27,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.eclipse.jetty.server.Handler; +import org.eclipse.jetty.server.HandlerContainer; import org.eclipse.jetty.server.Request; import org.eclipse.jetty.util.annotation.ManagedAttribute; import org.eclipse.jetty.util.annotation.ManagedObject; @@ -80,6 +82,11 @@ public class HandlerWrapper extends AbstractHandlerContainer if (isStarted()) throw new IllegalStateException(STARTED); + // check for loops + if (handler==this || (handler instanceof HandlerContainer && + Arrays.asList(((HandlerContainer)handler).getChildHandlers()).contains(this))) + throw new IllegalStateException("setHandler loop"); + if (handler!=null) handler.setServer(getServer()); @@ -102,10 +109,18 @@ public class HandlerWrapper extends AbstractHandlerContainer */ public void insertHandler(HandlerWrapper wrapper) { - if (wrapper==null || wrapper.getHandler()!=null) + if (wrapper==null) throw new IllegalArgumentException(); - wrapper.setHandler(getHandler()); + + HandlerWrapper tail = wrapper; + while(tail.getHandler() instanceof HandlerWrapper) + tail=(HandlerWrapper)tail.getHandler(); + if (tail.getHandler()!=null) + throw new IllegalArgumentException("bad tail of inserted wrapper chain"); + + Handler next=getHandler(); setHandler(wrapper); + tail.setHandler(next); } /* ------------------------------------------------------------ */ |