Skip to content

Commit bb111ff

Browse files
committed
Fixes #13681 - QUICHE_ERR_STREAM_LIMIT with Jetty 12.1.2 on HTTP/3.
Updated documentation, javadocs and tests to wrap `QuicheServerQuicConfiguration` with `HTTP3ServerQuicConfiguration.configure()` when using HTTP/3. The wrapping is not necessary when using just QUIC, for example with HTTP/1 or HTTP/2. Signed-off-by: Simone Bordet <[email protected]>
1 parent ddc679e commit bb111ff

File tree

7 files changed

+15
-10
lines changed
  • documentation/jetty/modules/code/examples/src/main/java/org/eclipse/jetty/docs/programming/server
  • jetty-core
  • jetty-ee10/jetty-ee10-tests/jetty-ee10-test-client-transports/src/test/java/org/eclipse/jetty/ee10/test/client/transport
  • jetty-ee9/jetty-ee9-tests/jetty-ee9-test-client-transports/src/test/java/org/eclipse/jetty/ee9/test/client/transport

7 files changed

+15
-10
lines changed

documentation/jetty/modules/code/examples/src/main/java/org/eclipse/jetty/docs/programming/server/http/HTTPServerDocs.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@
5757
import org.eclipse.jetty.http2.server.HTTP2CServerConnectionFactory;
5858
import org.eclipse.jetty.http2.server.HTTP2ServerConnectionFactory;
5959
import org.eclipse.jetty.http3.server.HTTP3ServerConnectionFactory;
60+
import org.eclipse.jetty.http3.server.HTTP3ServerQuicConfiguration;
6061
import org.eclipse.jetty.io.Content;
6162
import org.eclipse.jetty.io.ssl.SslHandshakeListener;
6263
import org.eclipse.jetty.quic.quiche.server.QuicheServerConnector;
@@ -247,7 +248,7 @@ public void configureConnectorQuic() throws Exception
247248

248249
// Create a QuicServerConnector instance.
249250
Path pemWorkDir = Path.of("/path/to/pem/dir");
250-
QuicheServerQuicConfiguration serverQuicConfig = new QuicheServerQuicConfiguration(pemWorkDir);
251+
QuicheServerQuicConfiguration serverQuicConfig = HTTP3ServerQuicConfiguration.configure(new QuicheServerQuicConfiguration(pemWorkDir));
251252
QuicheServerConnector connector = new QuicheServerConnector(server, sslContextFactory, serverQuicConfig, new HTTP3ServerConnectionFactory());
252253

253254
// The port to listen to.
@@ -339,7 +340,7 @@ public void sameRandomPort() throws Exception
339340

340341
// Third, create the connector for HTTP/3.
341342
Path pemWorkDir = Path.of("/path/to/pem/dir");
342-
QuicheServerQuicConfiguration serverQuicConfig = new QuicheServerQuicConfiguration(pemWorkDir);
343+
QuicheServerQuicConfiguration serverQuicConfig = HTTP3ServerQuicConfiguration.configure(new QuicheServerQuicConfiguration(pemWorkDir));
343344
QuicheServerConnector http3Connector = new QuicheServerConnector(server, sslContextFactory, serverQuicConfig, new HTTP3ServerConnectionFactory());
344345
server.addConnector(http3Connector);
345346

@@ -595,7 +596,7 @@ public void h3() throws Exception
595596
// Create and configure the HTTP/3 connector.
596597
// It is mandatory to configure the PEM directory.
597598
Path pemWorkDir = Path.of("/path/to/pem/dir");
598-
QuicheServerQuicConfiguration serverQuicConfig = new QuicheServerQuicConfiguration(pemWorkDir);
599+
QuicheServerQuicConfiguration serverQuicConfig = HTTP3ServerQuicConfiguration.configure(new QuicheServerQuicConfiguration(pemWorkDir));
599600
QuicheServerConnector connector = new QuicheServerConnector(server, sslContextFactory, serverQuicConfig, new HTTP3ServerConnectionFactory());
600601
connector.setPort(843);
601602

documentation/jetty/modules/code/examples/src/main/java/org/eclipse/jetty/docs/programming/server/http3/HTTP3ServerDocs.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
import org.eclipse.jetty.http3.frames.DataFrame;
3232
import org.eclipse.jetty.http3.frames.HeadersFrame;
3333
import org.eclipse.jetty.http3.frames.SettingsFrame;
34+
import org.eclipse.jetty.http3.server.HTTP3ServerQuicConfiguration;
3435
import org.eclipse.jetty.http3.server.RawHTTP3ServerConnectionFactory;
3536
import org.eclipse.jetty.io.Content;
3637
import org.eclipse.jetty.quic.quiche.server.QuicheServerConnector;
@@ -58,7 +59,7 @@ public void setup() throws Exception
5859
// The listener for session events.
5960
Session.Server.Listener sessionListener = new Session.Server.Listener() {};
6061

61-
QuicheServerQuicConfiguration serverQuicConfig = new QuicheServerQuicConfiguration(Path.of("/path/to/pem/dir"));
62+
QuicheServerQuicConfiguration serverQuicConfig = HTTP3ServerQuicConfiguration.configure(new QuicheServerQuicConfiguration(Path.of("/path/to/pem/dir")));
6263
// Configure the max number of requests per QUIC connection.
6364
serverQuicConfig.setBidirectionalMaxStreams(1024 * 1024);
6465

jetty-core/jetty-http3/jetty-http3-client/src/main/java/org/eclipse/jetty/http3/client/HTTP3Client.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@
4343
* <p>Typical usage:</p>
4444
* <pre> {@code
4545
* // Client-side QUIC configuration to configure QUIC properties.
46-
* QuicheClientQuicConfiguration clientQuicConfig = new QuicheClientQuicConfiguration();
46+
* QuicheClientQuicConfiguration clientQuicConfig = HTTP3ClientQuicConfiguration.configure(new QuicheClientQuicConfiguration());
4747
*
4848
* // Create the HTTP3Client instance.
4949
* HTTP3Client http3Client = new HTTP3Client(clientQuicConfig);

jetty-core/jetty-http3/jetty-http3-tests/src/test/java/org/eclipse/jetty/http3/tests/IdleTimeoutTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public void testIdleTimeoutWhenCongested() throws Exception
8787
SslContextFactory.Server sslServer = new SslContextFactory.Server();
8888
sslServer.setKeyStorePath("src/test/resources/keystore.p12");
8989
sslServer.setKeyStorePassword("storepwd");
90-
QuicheServerQuicConfiguration serverQuicConfig = new QuicheServerQuicConfiguration(workDir.getEmptyPathDir());
90+
QuicheServerQuicConfiguration serverQuicConfig = HTTP3ServerQuicConfiguration.configure(new QuicheServerQuicConfiguration(workDir.getEmptyPathDir()));
9191
AtomicBoolean established = new AtomicBoolean();
9292
CountDownLatch disconnectLatch = new CountDownLatch(1);
9393
RawHTTP3ServerConnectionFactory h3 = new RawHTTP3ServerConnectionFactory(new Session.Server.Listener()
@@ -106,7 +106,7 @@ public void onDisconnect(Session session, long error, String reason)
106106
});
107107

108108
CountDownLatch closeLatch = new CountDownLatch(1);
109-
QuicheServerConnector connector = new QuicheServerConnector(server, sslServer, HTTP3ServerQuicConfiguration.configure(serverQuicConfig), h3)
109+
QuicheServerConnector connector = new QuicheServerConnector(server, sslServer, serverQuicConfig, h3)
110110
{
111111
@Override
112112
protected Connection newConnection(EndPoint endpoint)

jetty-core/jetty-tests/jetty-test-client-transports/src/test/java/org/eclipse/jetty/test/client/transport/ManyConnectorsTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
import java.nio.channels.ServerSocketChannel;
1818

1919
import org.eclipse.jetty.http3.server.HTTP3ServerConnectionFactory;
20+
import org.eclipse.jetty.http3.server.HTTP3ServerQuicConfiguration;
2021
import org.eclipse.jetty.quic.quiche.server.QuicheServerConnector;
2122
import org.eclipse.jetty.quic.quiche.server.QuicheServerQuicConfiguration;
2223
import org.eclipse.jetty.server.HttpConfiguration;
@@ -60,7 +61,7 @@ public void testManyConnectors(int acceptors) throws Exception
6061
SslContextFactory.Server sslContextFactory = new SslContextFactory.Server();
6162
sslContextFactory.setKeyStorePath(MavenPaths.findTestResourceFile("keystore.p12").toString());
6263
sslContextFactory.setKeyStorePassword("storepwd");
63-
QuicheServerQuicConfiguration serverQuicConfig = new QuicheServerQuicConfiguration(workDir.getEmptyPathDir());
64+
QuicheServerQuicConfiguration serverQuicConfig = HTTP3ServerQuicConfiguration.configure(new QuicheServerQuicConfiguration(workDir.getEmptyPathDir()));
6465
QuicheServerConnector connector2 = new QuicheServerConnector(server, sslContextFactory, serverQuicConfig, new HTTP3ServerConnectionFactory(httpConfig));
6566
server.addConnector(connector2);
6667

jetty-ee10/jetty-ee10-tests/jetty-ee10-test-client-transports/src/test/java/org/eclipse/jetty/ee10/test/client/transport/AbstractTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import org.eclipse.jetty.http3.client.transport.HttpClientTransportOverHTTP3;
4545
import org.eclipse.jetty.http3.server.AbstractHTTP3ServerConnectionFactory;
4646
import org.eclipse.jetty.http3.server.HTTP3ServerConnectionFactory;
47+
import org.eclipse.jetty.http3.server.HTTP3ServerQuicConfiguration;
4748
import org.eclipse.jetty.io.ClientConnector;
4849
import org.eclipse.jetty.quic.quiche.client.QuicheClientQuicConfiguration;
4950
import org.eclipse.jetty.quic.quiche.client.QuicheTransport;
@@ -205,7 +206,7 @@ public AbstractConnector newConnector(TransportType transportType, Server server
205206
case H3_QUICHE ->
206207
{
207208
Path serverPemDirectory = Files.createDirectories(pemDir.resolve("server"));
208-
QuicheServerQuicConfiguration serverQuicConfig = new QuicheServerQuicConfiguration(serverPemDirectory);
209+
QuicheServerQuicConfiguration serverQuicConfig = HTTP3ServerQuicConfiguration.configure(new QuicheServerQuicConfiguration(serverPemDirectory));
209210
yield new QuicheServerConnector(server, sslContextFactoryServer, serverQuicConfig, newServerConnectionFactory(transportType));
210211
}
211212
};

jetty-ee9/jetty-ee9-tests/jetty-ee9-test-client-transports/src/test/java/org/eclipse/jetty/ee9/test/client/transport/AbstractTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
import org.eclipse.jetty.http3.client.transport.HttpClientTransportOverHTTP3;
4848
import org.eclipse.jetty.http3.server.AbstractHTTP3ServerConnectionFactory;
4949
import org.eclipse.jetty.http3.server.HTTP3ServerConnectionFactory;
50+
import org.eclipse.jetty.http3.server.HTTP3ServerQuicConfiguration;
5051
import org.eclipse.jetty.io.ClientConnector;
5152
import org.eclipse.jetty.quic.quiche.client.QuicheClientQuicConfiguration;
5253
import org.eclipse.jetty.quic.quiche.client.QuicheTransport;
@@ -203,7 +204,7 @@ public AbstractConnector newConnector(TransportType transportType, Server server
203204
yield new ServerConnector(server, 1, 1, newServerConnectionFactory(transportType));
204205
case H3_QUICHE:
205206
Path serverPemDirectory = Files.createDirectories(pemDir.resolve("server"));
206-
QuicheServerQuicConfiguration serverQuicConfig = new QuicheServerQuicConfiguration(serverPemDirectory);
207+
QuicheServerQuicConfiguration serverQuicConfig = HTTP3ServerQuicConfiguration.configure(new QuicheServerQuicConfiguration(serverPemDirectory));
207208
yield new QuicheServerConnector(server, sslContextFactoryServer, serverQuicConfig, newServerConnectionFactory(transportType));
208209
};
209210
}

0 commit comments

Comments
 (0)