--- a/src/java.net.http/share/classes/jdk/internal/net/http/Stream.java Mon Feb 12 17:32:52 2018 +0000
+++ b/src/java.net.http/share/classes/jdk/internal/net/http/Stream.java Mon Feb 12 18:45:17 2018 +0000
@@ -26,6 +26,7 @@
package jdk.internal.net.http;
import java.io.IOException;
+import java.io.UncheckedIOException;
import java.lang.System.Logger.Level;
import java.net.URI;
import java.nio.ByteBuffer;
@@ -304,13 +305,7 @@
this.request = e.request();
this.requestPublisher = request.requestPublisher; // may be null
responseHeaders = new HttpHeadersImpl();
- rspHeadersConsumer = (name, value) -> {
- responseHeaders.addHeader(name.toString(), value.toString());
- if (Log.headers() && Log.trace()) {
- Log.logTrace("RECEIVED HEADER (streamid={0}): {1}: {2}",
- streamid, name, value);
- }
- };
+ rspHeadersConsumer = new HeadersConsumer();
this.requestPseudoHeaders = new HttpHeadersImpl();
// NEW
this.windowUpdater = new StreamWindowUpdateSender(connection);
@@ -1177,4 +1172,21 @@
final String dbgString() {
return connection.dbgString() + "/Stream("+streamid+")";
}
+
+ private class HeadersConsumer extends Http2Connection.ValidatingHeadersConsumer {
+
+ @Override
+ public void onDecoded(CharSequence name, CharSequence value)
+ throws UncheckedIOException
+ {
+ String n = name.toString();
+ String v = value.toString();
+ super.onDecoded(n, v);
+ responseHeaders.addHeader(n, v);
+ if (Log.headers() && Log.trace()) {
+ Log.logTrace("RECEIVED HEADER (streamid={0}): {1}: {2}",
+ streamid, n, v);
+ }
+ }
+ }
}