src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/internal/HttpClientImpl.java
branchhttp-client-branch
changeset 56081 20c6742e5545
parent 56079 d23b02f37fce
--- a/src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/internal/HttpClientImpl.java	Tue Feb 06 15:20:30 2018 +0000
+++ b/src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/internal/HttpClientImpl.java	Tue Feb 06 15:34:08 2018 +0000
@@ -520,8 +520,10 @@
         void eventUpdated(AsyncEvent e) throws ClosedChannelException {
             if (Thread.currentThread() == this) {
                 SelectionKey key = e.channel().keyFor(selector);
-                SelectorAttachment sa = (SelectorAttachment) key.attachment();
-                if (sa != null) sa.register(e);
+                if (key != null) {
+                    SelectorAttachment sa = (SelectorAttachment) key.attachment();
+                    if (sa != null) sa.register(e);
+                }
             } else {
                 register(e);
             }
@@ -775,7 +777,11 @@
             pending.add(e);
             if (reRegister) {
                 // first time registration happens here also
-                chan.register(selector, interestOps, this);
+                try {
+                    chan.register(selector, interestOps, this);
+                } catch (CancelledKeyException x) {
+                    abortPending(x);
+                }
             }
         }