From 4ea85f8d53b6765832b90e104ec4d12096265fad Mon Sep 17 00:00:00 2001 From: Daniel Kmiecik Date: Tue, 24 Jun 2025 09:59:45 +0200 Subject: [PATCH] fix: configuration for timeout http connection (#2156) --- .../io/swagger/v3/parser/util/RemoteUrl.java | 17 +++++++++---- .../swagger/v3/parser/util/RemoteUrlTest.java | 24 +++++++++++++++++++ 2 files changed, 37 insertions(+), 4 deletions(-) diff --git a/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/util/RemoteUrl.java b/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/util/RemoteUrl.java index 8a0418e0a3..491f295969 100644 --- a/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/util/RemoteUrl.java +++ b/modules/swagger-parser-v3/src/main/java/io/swagger/v3/parser/util/RemoteUrl.java @@ -14,7 +14,11 @@ import java.io.BufferedReader; import java.io.InputStream; import java.io.InputStreamReader; -import java.net.*; +import java.net.HttpURLConnection; +import java.net.URI; +import java.net.URL; +import java.net.URLConnection; +import java.net.URLEncoder; import java.nio.charset.Charset; import java.nio.charset.StandardCharsets; import java.security.KeyManagementException; @@ -35,8 +39,10 @@ public class RemoteUrl { private static final Charset UTF_8 = StandardCharsets.UTF_8; private static final String ACCEPT_HEADER_VALUE = "application/json, application/yaml, */*"; private static final String USER_AGENT_HEADER_VALUE = "Apache-HttpClient/Swagger"; + static final int CONNECTION_TIMEOUT = 30000; + static final int READ_TIMEOUT = 60000; - private static ConnectionConfigurator createConnectionConfigurator() { + static ConnectionConfigurator createConnectionConfigurator() { if (Boolean.parseBoolean(System.getProperty(TRUST_ALL))) { try { // Create a trust manager that does not validate certificate chains @@ -73,6 +79,8 @@ public void process(URLConnection connection) { final HttpsURLConnection httpsConnection = (HttpsURLConnection) connection; httpsConnection.setSSLSocketFactory(sf); httpsConnection.setHostnameVerifier(trustAllNames); + httpsConnection.setConnectTimeout(CONNECTION_TIMEOUT); + httpsConnection.setReadTimeout(READ_TIMEOUT); } } }; @@ -86,7 +94,8 @@ public void process(URLConnection connection) { @Override public void process(URLConnection connection) { - // Do nothing + connection.setConnectTimeout(CONNECTION_TIMEOUT); + connection.setReadTimeout(READ_TIMEOUT); } }; } @@ -198,7 +207,7 @@ private static void appendValue(URL url, AuthorizationValue value, Collection= CONNECTION_TIMEOUT - 500, "Timeout was too short"); + assertTrue(duration <= CONNECTION_TIMEOUT + 2000, "Timeout was not enforced properly (took too long)"); + } + } }