src/java.net.http/share/classes/jdk/internal/net/http/Stream.java
branchhttp-client-branch
changeset 56104 3420c1bdd254
parent 56092 fd85b2bf2b0d
child 56126 86e628130926
--- 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);
+            }
+        }
+    }
 }