diff --git a/httpcore5/src/main/java/org/apache/hc/core5/pool/LaxConnPool.java b/httpcore5/src/main/java/org/apache/hc/core5/pool/LaxConnPool.java index 15405ac8b..c3e682b66 100644 --- a/httpcore5/src/main/java/org/apache/hc/core5/pool/LaxConnPool.java +++ b/httpcore5/src/main/java/org/apache/hc/core5/pool/LaxConnPool.java @@ -442,13 +442,11 @@ private PoolEntry getAvailableEntry(final Object state) { final PoolEntry entry = ref.getReference(); if (ref.compareAndSet(entry, entry, false, true)) { it.remove(); - if (entry.getExpiryDeadline().isExpired()) { + if (entry.getExpiryDeadline().isExpired() || !Objects.equals(entry.getState(), state)) { entry.discardConnection(CloseMode.GRACEFUL); + } else { + return entry; } - if (!Objects.equals(entry.getState(), state)) { - entry.discardConnection(CloseMode.GRACEFUL); - } - return entry; } } return null;