-
Notifications
You must be signed in to change notification settings - Fork 691
Closed
Copy link
Description
When using HttpClient from BOM 2024.0.0 and up to connect to a Unix Domain Socket (e.g. Docker Engine API), the client always uses HTTP/3 if HTTP11 is explicitly specified. This happens regardless of the transport (NIO, kqueue, ...). If HTTP/2 is specified, the client respects the version in this case.
Expected Behavior
HttpClient should use HTTP11 when HTTP11 is specified .protocol(HttpProtocol.HTTP11).
Actual Behavior
HttpClient uses HTTP3 if HTTP11 is required. This happens only when the BOM version is >= 2024.0.0.
Steps to Reproduce
class AppTests {
@Test
void testUnixSocket() throws URISyntaxException {
final var socketPath = "/var/run/docker.sock";
final var client = HttpClient.create()
.protocol(HttpProtocol.HTTP11)
// Switching to NIO transport didn't fix the issue
.remoteAddress(() -> new DomainSocketAddress(socketPath))
.wiretap(true);
final var response = client.get()
.uri("/info")
.responseContent()
.aggregate()
.asString()
.block();
System.out.println(response); // 505 HTTP Version Not Supported: unsupported protocol version
}Possible Solution
Your Environment
- Reactor version(s) used: BOM 2024.0.0, 2024.0.4, 2025.0.0-M1 (2023.0.16 worked though).
- JVM version (
java -version): 21 and 24 - OS and version (eg.
uname -a): macOS 15.3.2
Metadata
Metadata
Assignees
Labels
type/bugA general bugA general bug