From 54e521f37ecd7e0a533c4730bf17a688e1a82b63 Mon Sep 17 00:00:00 2001 From: samfrown Date: Tue, 8 Aug 2023 11:18:51 +0300 Subject: [PATCH] Rest: configure HTTP/1.1 version as default for client instead of request to allow HTTP/2 connection negotiation if custom http client is provided. Keeping default to HTTP/1.1 for builtin client is caused by inability of Vault Agent API to proxy unsecured HTTP/2 (h2c) connections to secured HTTPS (covered by the io.github.jopenlibs.vault.api.VaultAgentTests.testWriteAndReadFromAgent test). --- src/main/java/io/github/jopenlibs/vault/rest/Rest.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/main/java/io/github/jopenlibs/vault/rest/Rest.java b/src/main/java/io/github/jopenlibs/vault/rest/Rest.java index 782789b0..faa9b82d 100644 --- a/src/main/java/io/github/jopenlibs/vault/rest/Rest.java +++ b/src/main/java/io/github/jopenlibs/vault/rest/Rest.java @@ -423,7 +423,10 @@ private HttpClient getClient() { if (configuredClient != null) { return configuredClient; } - final var client = HttpClient.newBuilder(); + final var client = HttpClient.newBuilder() + //Stick to HTTP/1.1 by default, coz Vault Agent fails proxying h2c request to https + .version(Version.HTTP_1_1); + if (connectTimeoutSeconds != null) { client.connectTimeout(Duration.of(connectTimeoutSeconds, ChronoUnit.SECONDS)); } @@ -465,7 +468,6 @@ private Builder buildRequest(Boolean isGetOrDelete) throws URISyntaxException, R // Initialize HTTP(S) connection, and set any header values var request = HttpRequest.newBuilder() - .version(Version.HTTP_1_1) .uri(uri); headers.forEach(request::header);