src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/Http2Connection.java
--- a/src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/Http2Connection.java Wed Nov 22 10:15:53 2017 +0000
+++ b/src/jdk.incubator.httpclient/share/classes/jdk/incubator/http/Http2Connection.java Wed Nov 22 11:21:36 2017 +0000
@@ -628,9 +628,9 @@
decodeHeaders((HeaderFrame) frame, decoder);
}
- // To avoid looping, an endpoint MUST NOT send a RST_STREAM in
- // response to a RST_STREAM frame.
- if (!(frame instanceof ResetFrame)) {
+ int sid = frame.streamid();
+ if (sid >= nextstreamid && !(frame instanceof ResetFrame)) {
+ // otherwise the stream has already been reset/closed
resetStream(streamid, ResetFrame.PROTOCOL_ERROR);
}
return;