From e4813e47a4fcf4a43e9b9e9a27f5488938b9192f Mon Sep 17 00:00:00 2001 From: Oleg Mozzhechkov Date: Thu, 13 Aug 2020 16:34:06 +0300 Subject: [PATCH] #5150 - Infinite connection timeout support in ManagedSelector --- .../main/java/org/eclipse/jetty/io/ManagedSelector.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/jetty-io/src/main/java/org/eclipse/jetty/io/ManagedSelector.java b/jetty-io/src/main/java/org/eclipse/jetty/io/ManagedSelector.java index 960ccc667174..e57d74e002b4 100644 --- a/jetty-io/src/main/java/org/eclipse/jetty/io/ManagedSelector.java +++ b/jetty-io/src/main/java/org/eclipse/jetty/io/ManagedSelector.java @@ -888,7 +888,11 @@ class Connect implements SelectorUpdate, Runnable { this.channel = channel; this.attachment = attachment; - this.timeout = ManagedSelector.this._selectorManager.getScheduler().schedule(this, ManagedSelector.this._selectorManager.getConnectTimeout(), TimeUnit.MILLISECONDS); + final long timeout = ManagedSelector.this._selectorManager.getConnectTimeout(); + if (timeout > 0) + this.timeout = ManagedSelector.this._selectorManager.getScheduler().schedule(this, timeout, TimeUnit.MILLISECONDS); + else + this.timeout = null; } @Override @@ -919,7 +923,8 @@ public void failed(Throwable failure) { if (failed.compareAndSet(false, true)) { - timeout.cancel(); + if (timeout != null) + timeout.cancel(); IO.close(channel); ManagedSelector.this._selectorManager.connectionFailed(channel, failure, attachment); }