diff --git a/netty/src/main/java/io/grpc/netty/GrpcHttp2HeadersUtils.java b/netty/src/main/java/io/grpc/netty/GrpcHttp2HeadersUtils.java index 4be5dbdb71..405f1e59fe 100644 --- a/netty/src/main/java/io/grpc/netty/GrpcHttp2HeadersUtils.java +++ b/netty/src/main/java/io/grpc/netty/GrpcHttp2HeadersUtils.java @@ -124,6 +124,11 @@ class GrpcHttp2HeadersUtils { return null; } + @Override + public CharSequence status() { + return get(Http2Headers.PseudoHeaderName.STATUS.value()); + } + @Override public List getAll(CharSequence csName) { AsciiString name = requireAsciiString(csName); diff --git a/netty/src/main/java/io/grpc/netty/GrpcHttp2OutboundHeaders.java b/netty/src/main/java/io/grpc/netty/GrpcHttp2OutboundHeaders.java index 25c833d025..affa6fb1d8 100644 --- a/netty/src/main/java/io/grpc/netty/GrpcHttp2OutboundHeaders.java +++ b/netty/src/main/java/io/grpc/netty/GrpcHttp2OutboundHeaders.java @@ -66,6 +66,16 @@ final class GrpcHttp2OutboundHeaders extends AbstractHttp2Headers { this.preHeaders = preHeaders; } + @Override + @SuppressWarnings("ReferenceEquality") // STATUS.value() never changes. + public CharSequence status() { + // preHeaders is never null. It has status as the first element or not at all. + if (preHeaders.length >= 2 && preHeaders[0] == Http2Headers.PseudoHeaderName.STATUS.value()) { + return preHeaders[1]; + } + return null; + } + @Override public Iterator> iterator() { return new Itr();