Include HTTP2ServerConnectionFactory in JettyHttpConfigurationCustomizer

This commit is contained in:
Chris Eager 2024-03-26 17:54:21 -05:00 committed by Chris Eager
parent d10da39e5b
commit 75bb22f08b
1 changed files with 20 additions and 4 deletions

View File

@ -5,23 +5,39 @@
package org.whispersystems.textsecuregcm.jetty;
import org.eclipse.jetty.http2.server.HTTP2ServerConnectionFactory;
import org.eclipse.jetty.server.ConnectionFactory;
import org.eclipse.jetty.server.Connector;
import org.eclipse.jetty.server.HttpConfiguration;
import org.eclipse.jetty.server.HttpConnectionFactory;
import org.eclipse.jetty.util.component.Container;
import org.eclipse.jetty.util.component.LifeCycle;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* Uses {@link Container.Listener} to update {@link org.eclipse.jetty.server.HttpConfiguration}
*/
public class JettyHttpConfigurationCustomizer implements Container.Listener, LifeCycle.Listener {
private static final Logger logger = LoggerFactory.getLogger(JettyHttpConfigurationCustomizer.class);
@Override
public void beanAdded(final Container parent, final Object child) {
if (child instanceof Connector c) {
final HttpConnectionFactory hcf = c.getConnectionFactory(HttpConnectionFactory.class);
if (hcf != null) {
// see https://github.com/jetty/jetty.project/issues/1891
hcf.getHttpConfiguration().setNotifyRemoteAsyncErrors(false);
for (ConnectionFactory cf : c.getConnectionFactories()) {
final HttpConfiguration httpConfiguration = switch (cf) {
case HTTP2ServerConnectionFactory h2cf -> h2cf.getHttpConfiguration();
case HttpConnectionFactory hcf -> hcf.getHttpConfiguration();
default -> null;
};
if (httpConfiguration != null) {
// see https://github.com/jetty/jetty.project/issues/1891
logger.info("setNotifyRemoteAsyncErrors(false) for {}", cf);
httpConfiguration.setNotifyRemoteAsyncErrors(false);
}
}
}
}