Tag 10.1.32
diff --git a/EarlyHintsFilter.java b/EarlyHintsFilter.java
new file mode 100644
index 0000000..49e66aa
--- /dev/null
+++ b/EarlyHintsFilter.java
@@ -0,0 +1,89 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.catalina.filters;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Enumeration;
+
+import javax.servlet.Filter;
+import javax.servlet.FilterChain;
+import javax.servlet.FilterConfig;
+import javax.servlet.ServletException;
+import javax.servlet.ServletRequest;
+import javax.servlet.ServletResponse;
+import javax.servlet.http.HttpServletResponse;
+
+import org.apache.catalina.connector.ResponseFacade;
+
+/**
+ * A Filter that adds a series of Link and/or Content-Security-Policy
+ * headers to a 103 response if a compatible protocol is in use.
+ */
+public class EarlyHintsFilter
+ implements Filter
+{
+ private final ArrayList<String> csps = new ArrayList<String>(1);
+ private final ArrayList<String> hints = new ArrayList<String>();
+
+ @Override
+ public void init(FilterConfig config) throws ServletException {
+ Enumeration<String> paramNames = config.getInitParameterNames();
+ while(paramNames.hasMoreElements()) {
+ String name = paramNames.nextElement();
+
+ if(name.startsWith("csp.")) {
+ csps.add(config.getInitParameter(name));
+ } else if(name.startsWith("link.")) {
+ String hint = config.getInitParameter(name);
+ int pos = hint.indexOf("${contextPath}");
+ if(pos >= 0) {
+ hint = hint.replace("${contextPath}", config.getServletContext().getContextPath());
+ }
+
+ hints.add(hint);
+ } else {
+ config.getServletContext().log("WARNING: Unexpected init-param to EarlyHintsFilter: " + name);
+ }
+ }
+ }
+
+ @Override
+ public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
+ throws IOException, ServletException {
+ HttpServletResponse rsp = (HttpServletResponse)response;
+
+ if(!csps.isEmpty()) {
+ for(String csp : csps) {
+ rsp.addHeader("Content-Security-Policy", csp);
+ }
+ }
+ if(!hints.isEmpty()) {
+ for(String hint : hints) {
+ rsp.addHeader("Link", hint);
+ }
+
+ // NOTE: Tomcat will only return a 103 response here when
+ // the request protocol is HTTP/1.1 or HTTP/2.0. For HTTP/1.0
+ // requests, Tomcat will do nothing.
+
+ ((ResponseFacade)rsp).sendEarlyHints();
+ }
+
+ chain.doFilter(request, response);
+ }
+}
diff --git a/build.properties.release b/build.properties.release
new file mode 100644
index 0000000..3952ed8
--- /dev/null
+++ b/build.properties.release
@@ -0,0 +1,54 @@
+# -----------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -----------------------------------------------------------------------------
+
+# This file was auto-generated by the pre-release Ant target.
+
+# Any unwanted settings may be over-ridden in a build.properties file located
+# in the same directory as this file.
+
+# Set the version-dev to "" (empty string) as this is not a development release.
+version.dev=
+
+# Ensure consistent timestamps for reproducible builds.
+ant.tstamp.now.iso=2024-11-07T18:34:38Z
+
+# Enable insertion of detached signatures into the Windows installer.
+do.codesigning=true
+
+# Re-use the same GPG executable.
+gpg.exec=/usr/local/bin/gpg
+
+# Reproducible builds require the use of the build tools defined below. The
+# vendors (where appropriate) and versions must match exactly for a reproducible
+# build since this data is embedded in various files, particularly JAR file
+# manifests, as part of the build process.
+#
+# Apache Ant: Apache Ant(TM) version 1.10.15 compiled on August 25 2024
+#
+# Java Name: OpenJDK 64-Bit Server VM
+# Java Vendor: Eclipse Adoptium
+# Java Version: 22.0.2+9
+
+# The following is provided for information only. Builds will be repeatable
+# whether or not the build environment is consistent with this information.
+#
+# OS: x86_64 Mac OS X 14.7
+# File encoding: UTF-8
+#
+# Release Manager: schultz
+release-java-version=22.0.2+9
+release-ant-version=1.10.15
diff --git a/res/install-win/Uninstall.exe.sig b/res/install-win/Uninstall.exe.sig
new file mode 100644
index 0000000..2614824
--- /dev/null
+++ b/res/install-win/Uninstall.exe.sig
Binary files differ
diff --git a/res/install-win/tomcat-installer.exe.sig b/res/install-win/tomcat-installer.exe.sig
new file mode 100644
index 0000000..1d34943
--- /dev/null
+++ b/res/install-win/tomcat-installer.exe.sig
Binary files differ
diff --git a/res/maven/mvn.properties.release b/res/maven/mvn.properties.release
new file mode 100644
index 0000000..3f4dbbc
--- /dev/null
+++ b/res/maven/mvn.properties.release
@@ -0,0 +1,27 @@
+# -----------------------------------------------------------------------------
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+# -----------------------------------------------------------------------------
+
+# This file was auto-generated by the pre-release Ant target.
+
+# Remove "-dev" from the version since this is not a development release.
+maven.asf.release.deploy.version=10.1.32
+
+# Re-use the same GPG executable.
+gpg.exec=/usr/local/bin/gpg
+
+# Set the user name to use to upload the artefacts to Nexus.
+asf.ldap.username=schultz
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
index f4cd6af..68283a4 100644
--- a/webapps/docs/changelog.xml
+++ b/webapps/docs/changelog.xml
@@ -104,7 +104,7 @@
They eventually become mixed with the numbered issues (i.e., numbered
issues do not "pop up" wrt. others).
-->
-<section name="Tomcat 10.1.32 (schultz)" rtext="in development">
+<section name="Tomcat 10.1.32 (schultz)" rtext="">
<subsection name="Catalina">
<changelog>
<add>