Skip to content

Commit 7664673

Browse files
committed
adding socket read timeout at socket layer
1 parent 43dbd4f commit 7664673

1 file changed

Lines changed: 3 additions & 1 deletion

File tree

java/src/main/java/com/cybersource/ws/client/PoolingHttpClientConnection.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import org.apache.http.client.methods.CloseableHttpResponse;
1515
import org.apache.http.client.methods.HttpPost;
1616
import org.apache.http.client.protocol.HttpClientContext;
17+
import org.apache.http.config.SocketConfig;
1718
import org.apache.http.conn.routing.HttpRoute;
1819
import org.apache.http.entity.StringEntity;
1920
import org.apache.http.impl.client.*;
@@ -80,6 +81,7 @@ private void initializeConnectionManager(MerchantConfig merchantConfig) throws C
8081
String hostname = uri.getHost();
8182
connectionManager = new PoolingHttpClientConnectionManager();
8283
connectionManager.setDefaultMaxPerRoute(merchantConfig.getDefaultMaxConnectionsPerRoute());
84+
connectionManager.setDefaultSocketConfig(SocketConfig.custom().setSoKeepAlive(true).setSoTimeout(mc.getSocketTimeoutMs()).build());
8385
connectionManager.setMaxTotal(merchantConfig.getMaxConnections());
8486
connectionManager.setValidateAfterInactivity(mc.getValidateAfterInactivityMs());
8587
final HttpHost httpHost = new HttpHost(hostname);
@@ -350,7 +352,7 @@ public boolean retryRequest(IOException exception, int executionCount, HttpConte
350352
if (StringUtils.isBlank(errMessage)) {
351353
errMessage = exception.getLocalizedMessage();
352354
}
353-
if (StringUtils.isNotBlank(errMessage) && "Connection reset".equalsIgnoreCase(errMessage)) {
355+
if (StringUtils.isNotBlank(errMessage) && ( errMessage.equalsIgnoreCase("Connection reset") || errMessage.contains("Connection reset"))) {
354356
retryAfter(retryWaitInterval, executionCount, logger);
355357
return true;
356358
}

0 commit comments

Comments
 (0)