From 23094b5e48fe88f4750fc0f4f18533bc50cc0cbe Mon Sep 17 00:00:00 2001 From: Flavia Rainone Date: Wed, 4 Aug 2021 17:37:55 -0300 Subject: [PATCH] [UNDERTOW-1929] Prevent SocketTimeoutException by tuning up SoTimeout config when running on Windows Proxy AJP mode --- .../io/undertow/testutils/TestHttpClient.java | 22 ++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/core/src/test/java/io/undertow/testutils/TestHttpClient.java b/core/src/test/java/io/undertow/testutils/TestHttpClient.java index 49ae430d49..030e3c833d 100644 --- a/core/src/test/java/io/undertow/testutils/TestHttpClient.java +++ b/core/src/test/java/io/undertow/testutils/TestHttpClient.java @@ -28,6 +28,7 @@ import org.apache.http.impl.client.DefaultHttpRequestRetryHandler; import org.apache.http.params.HttpConnectionParams; import org.apache.http.params.HttpParams; +import org.apache.http.params.SyncBasicHttpParams; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLException; @@ -65,24 +66,39 @@ public boolean verify(String s, SSLSession sslSession) { private static final List instances = new CopyOnWriteArrayList<>(); public TestHttpClient() { + super(preventSocketTimeoutException(null)); instances.add(this); } public TestHttpClient(HttpParams params) { - super(params); + super(preventSocketTimeoutException(params)); instances.add(this); } public TestHttpClient(ClientConnectionManager conman) { - super(conman); + super(conman, preventSocketTimeoutException(null)); instances.add(this); } public TestHttpClient(ClientConnectionManager conman, HttpParams params) { - super(conman, params); + super(conman, preventSocketTimeoutException(params)); instances.add(this); } + private static HttpParams preventSocketTimeoutException(HttpParams params) { + // UNDERTOW-1929 prevent the SocketTimeoutException that we see recurring + // in CI when running tests on Windows / proxy ajp mode + if (System.getProperty("os.name").startsWith("Windows") && DefaultServer.isProxy() && DefaultServer.isAjp()) { + if (params == null) { + params = new SyncBasicHttpParams(); + setDefaultHttpParams(params); + } + HttpConnectionParams.setSoTimeout(params, 120000); + return params; + } + return params; + } + @Override protected HttpRequestRetryHandler createHttpRequestRetryHandler() { return new DefaultHttpRequestRetryHandler(0, false);