Merge branch 'master' into unsafe
This commit is contained in:
commit
17e1839089
68
VERSION.txt
68
VERSION.txt
|
@ -39,6 +39,74 @@ jetty-9.0.0.v20130308 - 08 March 2013
|
|||
+ 402757 WebSocket client module can't be used with WebSocket server
|
||||
module in the same WAR
|
||||
|
||||
jetty-8.1.10.v20130312 - 12 March 2013
|
||||
+ 376273 Early EOF because of SSL Protocol Error on
|
||||
https://api-3t.paypal.com/nvp.
|
||||
+ 381521 allow compress methods to be configured
|
||||
+ 392129 fixed handling of timeouts after startAsync
|
||||
+ 394064 ensure that JarFile instances are closed on JarFileResource.release()
|
||||
+ 398649 ServletContextListener.contextDestroyed() is not called on
|
||||
ContextHandler unregistration
|
||||
+ 399703 made encoding error handling consistent
|
||||
+ 399799 do not hold lock while calling invalidation listeners
|
||||
+ 399967 Shutdown hook calls destroy
|
||||
+ 400040 NullPointerException in HttpGenerator.prepareBuffers
|
||||
+ 400142 ConcurrentModificationException in JDBC SessionManger
|
||||
+ 400144 When loading a session fails the JDBCSessionManger produces duplicate
|
||||
session IDs
|
||||
+ 400312 ServletContextListener.contextInitialized() is not called when added
|
||||
in ServletContainerInitializer.onStartup
|
||||
+ 400457 Thread context classloader hierarchy not searched when finding
|
||||
webapp's java:comp/env
|
||||
+ 400859 limit max size of writes from cached content
|
||||
+ 401211 Remove requirement for jetty-websocket.jar in WEB-INF/lib
|
||||
+ 401317 Make Safari 5.x websocket support minVersion level error more clear
|
||||
+ 401382 Prevent parseAvailable from parsing next chunk when previous has not
|
||||
been consumed. Handle no content-type in chunked request.
|
||||
+ 401474 Performance problem in org.eclipse.jetty.annotation.AnnotationParser
|
||||
+ 401485 zip file closed exception
|
||||
+ 401531 StringIndexOutOfBoundsException for "/*" <url-pattern> of
|
||||
<jsp-property-group> fix for multiple mappings to *.jsp
|
||||
+ 401908 Enhance DosFilter to allow dynamic configuration of attributes.
|
||||
+ 402048 org.eclipse.jetty.server.ShutdownMonitor doesn't stop after the jetty
|
||||
server is stopped
|
||||
+ 402485 reseed secure random
|
||||
+ 402735 jetty.sh to support status which is == check
|
||||
+ 402833 Test harness for global error page and hide exception message from
|
||||
reason string
|
||||
|
||||
jetty-7.6.10.v20130312 - 12 March 2013
|
||||
+ 376273 Early EOF because of SSL Protocol Error on
|
||||
https://api-3t.paypal.com/nvp.
|
||||
+ 381521 allow compress methods to be configured
|
||||
+ 394064 ensure that JarFile instances are closed on JarFileResource.release()
|
||||
+ 398649 ServletContextListener.contextDestroyed() is not called on
|
||||
ContextHandler unregistration
|
||||
+ 399703 made encoding error handling consistent
|
||||
+ 399799 do not hold lock while calling invalidation listeners
|
||||
+ 399967 Shutdown hook calls destroy
|
||||
+ 400040 NullPointerException in HttpGenerator.prepareBuffers
|
||||
+ 400142 ConcurrentModificationException in JDBC SessionManger
|
||||
+ 400144 When loading a session fails the JDBCSessionManger produces duplicate
|
||||
session IDs
|
||||
+ 400457 Thread context classloader hierarchy not searched when finding
|
||||
webapp's java:comp/env
|
||||
+ 400859 limit max size of writes from cached content
|
||||
+ 401211 Remove requirement for jetty-websocket.jar in WEB-INF/lib
|
||||
+ 401317 Make Safari 5.x websocket support minVersion level error more clear
|
||||
+ 401382 Prevent parseAvailable from parsing next chunk when previous has not
|
||||
been consumed. Handle no content-type in chunked request.
|
||||
+ 401474 Performance problem in org.eclipse.jetty.annotation.AnnotationParser
|
||||
+ 401531 StringIndexOutOfBoundsException for "/*" <url-pattern> of
|
||||
<jsp-property-group> fix for multiple mappings to *.jsp
|
||||
+ 401908 Enhance DosFilter to allow dynamic configuration of attributes.
|
||||
+ 402048 org.eclipse.jetty.server.ShutdownMonitor doesn't stop after the jetty
|
||||
server is stopped
|
||||
+ 402485 reseed secure random
|
||||
+ 402735 jetty.sh to support status which is == check
|
||||
+ 402833 Test harness for global error page and hide exception message from
|
||||
reason string
|
||||
|
||||
jetty-9.0.0.RC2 - 24 February 2013
|
||||
+ Fix etc/jetty.xml TimerScheduler typo that is preventing normal startup
|
||||
+ Fix etc/jetty-https.xml ExcludeCipherSuites typo that prevents SSL startup
|
||||
|
|
|
@ -62,6 +62,7 @@ public class HostnameVerificationTest
|
|||
sslContextFactory.setKeyStorePath("src/test/resources/keystore.jks");
|
||||
sslContextFactory.setKeyStorePassword("storepwd");
|
||||
}
|
||||
sslContextFactory.setEndpointIdentificationAlgorithm("HTTPS");
|
||||
|
||||
if (server == null)
|
||||
server = new Server();
|
||||
|
|
|
@ -106,10 +106,28 @@ findDirectory()
|
|||
|
||||
running()
|
||||
{
|
||||
local PID=$(cat "$1" 2>/dev/null) || return 1
|
||||
local PID=$(head -n 1 "$1" 2>/dev/null) || return 1
|
||||
kill -0 "$PID" 2>/dev/null
|
||||
}
|
||||
|
||||
started()
|
||||
{
|
||||
# wait for 60s to see "STARTED" in PID file, needs jetty-started.xml as argument
|
||||
for T in 1 2 3 4 5 6 7 9 10 11 12 13 14 15
|
||||
do
|
||||
sleep 4
|
||||
[ -z "$(grep STARTED $1)" ] || return 0
|
||||
[ -z "$(grep STOPPED $1)" ] || return 1
|
||||
[ -z "$(grep FAILED $1)" ] || return 1
|
||||
local PID=$(head -n 1 "$1" 2>/dev/null) || return 1
|
||||
kill -0 "$PID" 2>/dev/null || return 1
|
||||
echo -n ". "
|
||||
done
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
readConfig()
|
||||
{
|
||||
(( DEBUG )) && echo "Reading $1.."
|
||||
|
@ -137,7 +155,13 @@ shift
|
|||
##################################################
|
||||
# Read any configuration files
|
||||
##################################################
|
||||
for CONFIG in /etc/default/jetty{,9} $HOME/.jettyrc; do
|
||||
ETC=/etc
|
||||
if [ $UID != 0 ]
|
||||
then
|
||||
ETC=$HOME/etc
|
||||
fi
|
||||
|
||||
for CONFIG in $ETC/default/jetty{,9} $HOME/.jettyrc; do
|
||||
if [ -f "$CONFIG" ] ; then
|
||||
readConfig "$CONFIG"
|
||||
fi
|
||||
|
@ -262,9 +286,9 @@ fi
|
|||
##################################################
|
||||
if [ -z "$JETTY_CONF" ]
|
||||
then
|
||||
if [ -f /etc/jetty.conf ]
|
||||
if [ -f $ETC/jetty.conf ]
|
||||
then
|
||||
JETTY_CONF=/etc/jetty.conf
|
||||
JETTY_CONF=$ETC/jetty.conf
|
||||
elif [ -f "$JETTY_HOME/etc/jetty.conf" ]
|
||||
then
|
||||
JETTY_CONF=$JETTY_HOME/etc/jetty.conf
|
||||
|
@ -318,6 +342,7 @@ if [ -z "$JETTY_PID" ]
|
|||
then
|
||||
JETTY_PID="$JETTY_RUN/jetty.pid"
|
||||
fi
|
||||
JAVA_OPTIONS+=("-Djetty.pid=$JETTY_PID")
|
||||
|
||||
##################################################
|
||||
# Setup JAVA if unset
|
||||
|
@ -407,23 +432,15 @@ case "$ACTION" in
|
|||
exit
|
||||
fi
|
||||
|
||||
if type start-stop-daemon > /dev/null 2>&1
|
||||
if [ $UID -eq 0 ] && type start-stop-daemon > /dev/null 2>&1
|
||||
then
|
||||
unset CH_USER
|
||||
if [ -n "$JETTY_USER" ]
|
||||
then
|
||||
CH_USER="-c$JETTY_USER"
|
||||
fi
|
||||
if start-stop-daemon -S -p"$JETTY_PID" $CH_USER -d"$JETTY_HOME" -b -m -a "$JAVA" -- "${RUN_ARGS[@]}" --daemon
|
||||
then
|
||||
sleep 1
|
||||
if running "$JETTY_PID"
|
||||
then
|
||||
echo "OK"
|
||||
else
|
||||
echo "FAILED"
|
||||
fi
|
||||
fi
|
||||
|
||||
start-stop-daemon -S -p"$JETTY_PID" $CH_USER -d"$JETTY_HOME" -b -m -a "$JAVA" -- "${RUN_ARGS[@]}" --daemon
|
||||
|
||||
else
|
||||
|
||||
|
@ -454,14 +471,20 @@ case "$ACTION" in
|
|||
echo $! > "$JETTY_PID"
|
||||
fi
|
||||
|
||||
echo "STARTED Jetty `date`"
|
||||
fi
|
||||
|
||||
if started "$JETTY_PID"
|
||||
then
|
||||
echo "OK `date`"
|
||||
else
|
||||
echo "FAILED `date`"
|
||||
fi
|
||||
|
||||
;;
|
||||
|
||||
stop)
|
||||
echo -n "Stopping Jetty: "
|
||||
if type start-stop-daemon > /dev/null 2>&1; then
|
||||
if [ $UID -eq 0 ] && type start-stop-daemon > /dev/null 2>&1; then
|
||||
start-stop-daemon -K -p"$JETTY_PID" -d"$JETTY_HOME" -a "$JAVA" -s HUP
|
||||
|
||||
TIMEOUT=30
|
||||
|
@ -476,7 +499,7 @@ case "$ACTION" in
|
|||
rm -f "$JETTY_PID"
|
||||
echo OK
|
||||
else
|
||||
PID=$(cat "$JETTY_PID" 2>/dev/null)
|
||||
PID=$(head -n 1 "$JETTY_PID" 2>/dev/null)
|
||||
kill "$PID" 2>/dev/null
|
||||
|
||||
TIMEOUT=30
|
||||
|
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0"?>
|
||||
<!DOCTYPE Configure PUBLIC "-//Jetty//Configure//EN" "http://www.eclipse.org/jetty/configure_9_0.dtd">
|
||||
|
||||
<!-- =============================================================== -->
|
||||
<!-- Mixin the Start FileNoticeLifeCycleListener -->
|
||||
<!-- =============================================================== -->
|
||||
<Configure id="Server" class="org.eclipse.jetty.server.Server">
|
||||
<Call name="addLifeCycleListener">
|
||||
<Arg>
|
||||
<New class="org.eclipse.jetty.util.component.FileNoticeLifeCycleListener">
|
||||
<Arg><SystemProperty name="jetty.pid" default="./jetty.pid"/></Arg>
|
||||
</New>
|
||||
</Arg>
|
||||
</Call>
|
||||
</Configure>
|
|
@ -6,8 +6,7 @@
|
|||
# created by that script.
|
||||
#
|
||||
# Each line in this file becomes an arguement to start.jar
|
||||
# unless this file contains an --ini option, then these
|
||||
# arguments will be in addition to those found in the
|
||||
# start.ini file
|
||||
# in addition to those found in the start.ini file
|
||||
# =======================================================
|
||||
--pre=etc/jetty-logging.xml
|
||||
etc/jetty-logging.xml
|
||||
etc/jetty-started.xml
|
||||
|
|
|
@ -19,7 +19,7 @@
|
|||
<felixversion>4.0.3</felixversion>
|
||||
<injection.bundle.version>1.0</injection.bundle.version>
|
||||
<runner.version>1.7.6</runner.version>
|
||||
<npn-version>1.1.2.v20130305</npn-version>
|
||||
<npn-version>1.1.5.v20130313</npn-version>
|
||||
</properties>
|
||||
<dependencies>
|
||||
<!-- Pax Exam Dependencies -->
|
||||
|
|
|
@ -17,6 +17,14 @@
|
|||
<!-- Consult the javadoc of o.e.j.util.ssl.SslContextFactory -->
|
||||
<!-- o.e.j.server.HttpConnectionFactory for all configuration -->
|
||||
<!-- that may be set here. -->
|
||||
<!-- -->
|
||||
<!-- The keyManagerPassword is passed as the password arg to -->
|
||||
<!-- KeyManagerFactory.init(...) -->
|
||||
<!-- If there is no keymanagerpassword, then the -->
|
||||
<!-- keystorepassword is used instead. -->
|
||||
<!-- If there is no trustmanager set, then the keystore is used -->
|
||||
<!-- as the trust store and the keystorepassword is used as the -->
|
||||
<!-- truststore password. -->
|
||||
<!-- =========================================================== -->
|
||||
<New id="sslContextFactory" class="org.eclipse.jetty.util.ssl.SslContextFactory">
|
||||
<Set name="KeyStorePath"><Property name="jetty.home" default="." />/etc/keystore</Set>
|
||||
|
@ -24,6 +32,7 @@
|
|||
<Set name="KeyManagerPassword">OBF:1u2u1wml1z7s1z7a1wnl1u2g</Set>
|
||||
<Set name="TrustStorePath"><Property name="jetty.home" default="." />/etc/keystore</Set>
|
||||
<Set name="TrustStorePassword">OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4</Set>
|
||||
<Set name="EndpointIdentificationAlgorithm"></Set>
|
||||
<Set name="ExcludeCipherSuites">
|
||||
<Array type="String">
|
||||
<Item>SSL_RSA_WITH_DES_CBC_SHA</Item>
|
||||
|
|
|
@ -97,7 +97,19 @@ public class FilterHolder extends Holder<Filter>
|
|||
super.stop();
|
||||
throw new IllegalStateException(msg);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/* ------------------------------------------------------------ */
|
||||
@Override
|
||||
public void initialize() throws Exception
|
||||
{
|
||||
super.initialize();
|
||||
|
||||
if (_filter==null)
|
||||
{
|
||||
try
|
||||
|
@ -123,6 +135,7 @@ public class FilterHolder extends Holder<Filter>
|
|||
_filter.init(_config);
|
||||
}
|
||||
|
||||
|
||||
/* ------------------------------------------------------------ */
|
||||
@Override
|
||||
public void doStop()
|
||||
|
|
|
@ -82,6 +82,19 @@ public class Holder<T> extends AbstractLifeCycle implements Dumpable
|
|||
{
|
||||
return _extInstance;
|
||||
}
|
||||
|
||||
|
||||
/* ------------------------------------------------------------ */
|
||||
/**
|
||||
* Do any setup necessary after starting
|
||||
* @throws Exception
|
||||
*/
|
||||
public void initialize()
|
||||
throws Exception
|
||||
{
|
||||
if (!isStarted())
|
||||
throw new IllegalStateException("Not started: "+this);
|
||||
}
|
||||
|
||||
/* ------------------------------------------------------------ */
|
||||
@SuppressWarnings("unchecked")
|
||||
|
|
|
@ -741,6 +741,7 @@ public class ServletHandler extends ScopedHandler
|
|||
try
|
||||
{
|
||||
h.start();
|
||||
h.initialize();
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
|
|
|
@ -280,7 +280,7 @@ public class ServletHolder extends Holder<Servlet> implements UserIdentity.Scope
|
|||
_enabled = enabled;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* ------------------------------------------------------------ */
|
||||
public void doStart()
|
||||
throws Exception
|
||||
|
@ -319,7 +319,17 @@ public class ServletHolder extends Holder<Servlet> implements UserIdentity.Scope
|
|||
|
||||
if (_class!=null && javax.servlet.SingleThreadModel.class.isAssignableFrom(_class))
|
||||
_servlet = new SingleThreadedWrapper();
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
/* ------------------------------------------------------------ */
|
||||
@Override
|
||||
public void initialize ()
|
||||
throws Exception
|
||||
{
|
||||
super.initialize();
|
||||
|
||||
if (_extInstance || _initOnStartup)
|
||||
{
|
||||
try
|
||||
|
@ -335,7 +345,8 @@ public class ServletHolder extends Holder<Servlet> implements UserIdentity.Scope
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
/* ------------------------------------------------------------ */
|
||||
public void doStop()
|
||||
throws Exception
|
||||
|
|
|
@ -98,7 +98,9 @@ public abstract class AbstractDoSFilterTest
|
|||
public void startFilters() throws Exception
|
||||
{
|
||||
_dosFilter.start();
|
||||
_dosFilter.initialize();
|
||||
_timeoutFilter.start();
|
||||
_timeoutFilter.initialize();
|
||||
}
|
||||
|
||||
@After
|
||||
|
|
|
@ -24,6 +24,18 @@
|
|||
<Set name="KeyManagerPassword">OBF:1u2u1wml1z7s1z7a1wnl1u2g</Set>
|
||||
<Set name="TrustStorePath"><Property name="jetty.home" default="." />/etc/keystore</Set>
|
||||
<Set name="TrustStorePassword">OBF:1vny1zlo1x8e1vnw1vn61x8g1zlu1vn4</Set>
|
||||
<Set name="EndpointIdentificationAlgorithm"></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>
|
||||
</New>
|
||||
|
||||
<!-- =========================================================== -->
|
||||
|
|
|
@ -0,0 +1,85 @@
|
|||
//
|
||||
// ========================================================================
|
||||
// Copyright (c) 1995-2013 Mort Bay Consulting Pty. Ltd.
|
||||
// ------------------------------------------------------------------------
|
||||
// All rights reserved. This program and the accompanying materials
|
||||
// are made available under the terms of the Eclipse Public License v1.0
|
||||
// and Apache License v2.0 which accompanies this distribution.
|
||||
//
|
||||
// The Eclipse Public License is available at
|
||||
// http://www.eclipse.org/legal/epl-v10.html
|
||||
//
|
||||
// The Apache License v2.0 is available at
|
||||
// http://www.opensource.org/licenses/apache2.0.php
|
||||
//
|
||||
// You may elect to redistribute this code under either of these licenses.
|
||||
// ========================================================================
|
||||
//
|
||||
|
||||
package org.eclipse.jetty.util.component;
|
||||
|
||||
import java.io.FileWriter;
|
||||
|
||||
import org.eclipse.jetty.util.log.Log;
|
||||
import org.eclipse.jetty.util.log.Logger;
|
||||
|
||||
|
||||
/* ------------------------------------------------------------ */
|
||||
/** A LifeCycle Listener that writes state changes to a file.
|
||||
* <p>This can be used with the jetty.sh script to wait for successful startup.
|
||||
*/
|
||||
public class FileNoticeLifeCycleListener implements LifeCycle.Listener
|
||||
{
|
||||
Logger LOG = Log.getLogger(FileNoticeLifeCycleListener.class);
|
||||
|
||||
private final String _filename;
|
||||
|
||||
public FileNoticeLifeCycleListener(String filename)
|
||||
{
|
||||
_filename=filename;
|
||||
}
|
||||
|
||||
private void writeState(String action, LifeCycle lifecycle)
|
||||
{
|
||||
try
|
||||
{
|
||||
FileWriter out = new FileWriter(_filename,true);
|
||||
out.append(action).append(" ").append(lifecycle.toString()).append("\n");
|
||||
out.close();
|
||||
}
|
||||
catch(Exception e)
|
||||
{
|
||||
LOG.warn(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void lifeCycleStarting(LifeCycle event)
|
||||
{
|
||||
writeState("STARTING",event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void lifeCycleStarted(LifeCycle event)
|
||||
{
|
||||
writeState("STARTED",event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void lifeCycleFailure(LifeCycle event, Throwable cause)
|
||||
{
|
||||
writeState("FAILED",event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void lifeCycleStopping(LifeCycle event)
|
||||
{
|
||||
writeState("STOPPING",event);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void lifeCycleStopped(LifeCycle event)
|
||||
{
|
||||
writeState("STOPPED",event);
|
||||
}
|
||||
}
|
|
@ -194,7 +194,7 @@ public class SslContextFactory extends AbstractLifeCycle
|
|||
private SSLContext _context;
|
||||
|
||||
/** EndpointIdentificationAlgorithm - when set to "HTTPS" hostname verification will be enabled */
|
||||
private String _endpointIdentificationAlgorithm = "HTTPS";
|
||||
private String _endpointIdentificationAlgorithm = null;
|
||||
|
||||
private boolean _trustAll;
|
||||
|
||||
|
|
|
@ -490,7 +490,7 @@ public abstract class AbstractWebSocketConnection extends AbstractConnection imp
|
|||
@Override
|
||||
protected boolean onReadTimeout()
|
||||
{
|
||||
LOG.warn("Read Timeout");
|
||||
LOG.info("Read Timeout");
|
||||
|
||||
IOState state = getIOState();
|
||||
if ((state.getState() == ConnectionState.CLOSING) || (state.getState() == ConnectionState.CLOSED))
|
||||
|
|
Loading…
Reference in New Issue