diff --git a/VERSION.txt b/VERSION.txt
index 0795cbbdd9a..6062d67e830 100644
--- a/VERSION.txt
+++ b/VERSION.txt
@@ -1,6 +1,32 @@
jetty-10.0.0-SNAPSHOT
-jetty-9.4.5-SNAPSHOT
+jetty-9.4.6.v20170531 - 31 May 2017
+ + 523 TLS close behaviour breaking session resumption
+ + 1108 Please improve logging in SslContextFactory when there are no approved
+ cipher suites
+ + 1505 Adding jetty.base.uri and jetty.home.uri
+ + 1514 websocket dump badly formatted
+ + 1516 Delay starting of WebSocketClient until an attempt to connect is made
+ + 1520 PropertyUserStore should extract packed config file
+ + 1526 MongoSessionDataStore old session scavenging is broken due to the
+ missing $ sign in "and" operation
+ + 1527 Jetty BOM should not depend on jetty-parent
+ + 1528 Internal HttpClient usages should have common configurable technique
+ + 1536 Jetty BOM should include more artifacts
+ + 1538 NPE in Response.putHeaders
+ + 1539 JarFileResource mishandles paths with spaces
+ + 1544 Disabling JSR-356 doesn't indicate context it was disabled for
+ + 1546 Improve handling of quotes in cookies
+ + 1553 X509.isCertSign() can throw ArrayIndexOutOfBoundsException on
+ non-standard implementations
+ + 1556 A timing channel in Password.java
+ + 1558 When creating WebAppContext without session-config and with NO_SESSIONS
+ throws NPE
+ + 1567 XmlConfiguration will start the same object multiple times
+ + 1568 ServletUpgradeRequest mangles query strings containing percent-escapes
+ by re-escaping them
+ + 1569 Allow setting of maxBinaryMessageSize to 0 in WebSocketPolicy
+ + 1579 NPE in Quoted Quality CSV
jetty-9.4.4.v20170414 - 14 April 2017
+ 612 Support HTTP Trailer
diff --git a/jetty-documentation/src/main/asciidoc/administration/extras/gzip-filter.adoc b/jetty-documentation/src/main/asciidoc/administration/extras/gzip-filter.adoc
index 9d4dff73a76..0504905caf5 100644
--- a/jetty-documentation/src/main/asciidoc/administration/extras/gzip-filter.adoc
+++ b/jetty-documentation/src/main/asciidoc/administration/extras/gzip-filter.adoc
@@ -37,22 +37,26 @@ Some user-agents might be excluded from compression to avoid common browser bugs
The `GzipHandler` is added to the entire server by the `etc/jetty-gzip.xml` file from the `gzip.mod` module.
It may also be added to individual contexts in a context xml file.
+____
+[NOTE]
+Jetty 9 only compresses using GZip.
+Using deflate http compression is not supported and will not function.
+____
+
[[gzip-filter-rules]]
==== Gzip Rules
-`GzipHandler` will gzip or deflate the content of a response if:
+`GzipHandler` will gzip the content of a response if:
* It is mapped to a matching path
* The request method is configured to support gzip
* The request is not from an excluded User-Agent
-* accept-encoding header is set to either gzip, deflate or a combination of those
+* accept-encoding header is set to gzip
* The response status code is >=200 and <300
* The content length is unknown or more than the minGzipSize initParameter or the minGzipSize is 0(default)
* The content-type does not match an excluded mime-type
* No content-encoding is specified by the resource
-If both gzip and deflate are specified in the accept-encoding header, then gzip will be used.
-
Compressing the content can greatly improve the network bandwidth usage, but at the cost of memory and CPU cycles.
The link:#default-servlet[DefaultServlet] is capable of serving pre-compressed static content, which saves memory and CPU.
By default, the `GzipHandler` will check to see if pre-compressed content exists, and pass the request through to be handled by the `DefaultServlet`.
@@ -65,8 +69,6 @@ Content will only be compressed if content length is either unknown or greater t
checkGzExists::
True by default.
If set to false, the handler will not check for pre-compressed content.
-compressionLevel::
-The compression level used for deflate compression. (0-9).
includedMethods::
List of HTTP methods to compress.
If not set, only `GET` requests are compressed.
diff --git a/jetty-distribution/src/main/resources/etc/jetty-stop.xml b/jetty-home/src/main/resources/etc/jetty-stop.xml
similarity index 100%
rename from jetty-distribution/src/main/resources/etc/jetty-stop.xml
rename to jetty-home/src/main/resources/etc/jetty-stop.xml
diff --git a/jetty-home/src/main/resources/modules/stop.mod b/jetty-home/src/main/resources/modules/stop.mod
new file mode 100644
index 00000000000..6a86c04f4d7
--- /dev/null
+++ b/jetty-home/src/main/resources/modules/stop.mod
@@ -0,0 +1,5 @@
+[description]
+This module causes jetty to stop immediately after starting. This is good for testing configuration and/or precompiling quickstart webapps
+
+[xml]
+etc/jetty-stop.xml
diff --git a/jetty-jndi/src/main/assembly/config.xml b/jetty-jndi/src/main/assembly/config.xml
new file mode 100644
index 00000000000..fd02dcee4a7
--- /dev/null
+++ b/jetty-jndi/src/main/assembly/config.xml
@@ -0,0 +1,27 @@
+
+
+ config
+ false
+
+ jar
+
+
+
+ provided
+ lib/mail
+
+ org.eclipse.jetty.orbit:javax.mail.glassfish
+
+
+
+
+
+ src/main/jndi-config
+
+
+ **
+
+
+
+
+
diff --git a/jetty-jndi/src/main/config/modules/jndi.mod b/jetty-jndi/src/main/jndi-config/modules/jndi.mod
similarity index 96%
rename from jetty-jndi/src/main/config/modules/jndi.mod
rename to jetty-jndi/src/main/jndi-config/modules/jndi.mod
index b0d3fc44492..023ff9845a4 100644
--- a/jetty-jndi/src/main/config/modules/jndi.mod
+++ b/jetty-jndi/src/main/jndi-config/modules/jndi.mod
@@ -3,6 +3,7 @@ Adds the Jetty JNDI implementation to the classpath.
[depend]
server
+mail
[lib]
lib/jetty-jndi-${jetty.version}.jar
diff --git a/jetty-jndi/src/main/jndi-config/modules/mail.mod b/jetty-jndi/src/main/jndi-config/modules/mail.mod
new file mode 100644
index 00000000000..1dd711dfc7a
--- /dev/null
+++ b/jetty-jndi/src/main/jndi-config/modules/mail.mod
@@ -0,0 +1,8 @@
+[description]
+Adds the javax.mail implementation to the classpath.
+
+[name]
+mail
+
+[lib]
+lib/mail/*.jar
diff --git a/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootCore.java b/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootCore.java
index cdeedb1add3..a940fef4a3b 100644
--- a/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootCore.java
+++ b/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootCore.java
@@ -102,7 +102,6 @@ public class TestJettyOSGiBootCore
res.add(mavenBundle().groupId( "javax.servlet" ).artifactId( "javax.servlet-api" ).versionAsInProject().noStart());
res.add(mavenBundle().groupId( "javax.annotation" ).artifactId( "javax.annotation-api" ).versionAsInProject().noStart());
res.add(mavenBundle().groupId( "org.apache.geronimo.specs" ).artifactId( "geronimo-jta_1.1_spec" ).version("1.1.1").noStart());
- res.add(mavenBundle().groupId( "org.eclipse.jetty.orbit" ).artifactId( "javax.mail.glassfish" ).version( "1.4.1.v201005082020" ).noStart());
res.add(mavenBundle().groupId( "org.eclipse.jetty" ).artifactId( "jetty-util" ).versionAsInProject().noStart());
res.add(mavenBundle().groupId( "org.eclipse.jetty" ).artifactId( "jetty-deploy" ).versionAsInProject().noStart());
diff --git a/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootWithAnnotations.java b/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootWithAnnotations.java
index 21e930c59f4..fb21fbe7e24 100644
--- a/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootWithAnnotations.java
+++ b/jetty-osgi/test-jetty-osgi/src/test/java/org/eclipse/jetty/osgi/test/TestJettyOSGiBootWithAnnotations.java
@@ -111,6 +111,7 @@ public class TestJettyOSGiBootWithAnnotations
public static List