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); }