src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/internal/HttpClientImpl.java
--- 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);
+ }
}
}