diff options
author | Simone Bordet | 2015-03-19 23:22:16 +0000 |
---|---|---|
committer | Simone Bordet | 2015-03-19 23:22:16 +0000 |
commit | d47ef4b846849e4faf98cbb47ff36870275a8b2f (patch) | |
tree | a982abebf8b82860e3f951324d3ca61f005e5c20 /jetty-io | |
parent | 7acbb050600542f073b919a3d12666d56df7ed8e (diff) | |
download | org.eclipse.jetty.project-d47ef4b846849e4faf98cbb47ff36870275a8b2f.tar.gz org.eclipse.jetty.project-d47ef4b846849e4faf98cbb47ff36870275a8b2f.tar.xz org.eclipse.jetty.project-d47ef4b846849e4faf98cbb47ff36870275a8b2f.zip |
462616 - Race between finishing a connect and timing it out.
Diffstat (limited to 'jetty-io')
-rw-r--r-- | jetty-io/src/main/java/org/eclipse/jetty/io/SelectorManager.java | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/jetty-io/src/main/java/org/eclipse/jetty/io/SelectorManager.java b/jetty-io/src/main/java/org/eclipse/jetty/io/SelectorManager.java index a15268d10a..4972ea8188 100644 --- a/jetty-io/src/main/java/org/eclipse/jetty/io/SelectorManager.java +++ b/jetty-io/src/main/java/org/eclipse/jetty/io/SelectorManager.java @@ -671,10 +671,16 @@ public abstract class SelectorManager extends AbstractLifeCycle implements Dumpa boolean connected = finishConnect(channel); if (connected) { - connect.timeout.cancel(); - key.interestOps(0); - EndPoint endpoint = createEndPoint(channel, key); - key.attach(endpoint); + if (connect.timeout.cancel()) + { + key.interestOps(0); + EndPoint endpoint = createEndPoint(channel, key); + key.attach(endpoint); + } + else + { + throw new SocketTimeoutException("Concurrent Connect Timeout"); + } } else { @@ -952,7 +958,7 @@ public abstract class SelectorManager extends AbstractLifeCycle implements Dumpa { if (LOG.isDebugEnabled()) LOG.debug("Channel {} timed out while connecting, closing it", channel); - connect.failed(new SocketTimeoutException()); + connect.failed(new SocketTimeoutException("Connect Timeout")); } } } |