@@ -50,7 +50,10 @@ public void applyMutations(final HeaderMutations mutations, Metadata headers) {
5050 // in case of conflicts. Copying the order from Envoy here, which does removals at the end.
5151 applyHeaderUpdates (mutations .headers (), headers );
5252 for (String headerToRemove : mutations .headersToRemove ()) {
53- headers .discardAll (Metadata .Key .of (headerToRemove , Metadata .ASCII_STRING_MARSHALLER ));
53+ Metadata .Key <?> key = headerToRemove .endsWith (Metadata .BINARY_HEADER_SUFFIX )
54+ ? Metadata .Key .of (headerToRemove , Metadata .BINARY_BYTE_MARSHALLER )
55+ : Metadata .Key .of (headerToRemove , Metadata .ASCII_STRING_MARSHALLER );
56+ headers .discardAll (key );
5457 }
5558 }
5659
@@ -67,11 +70,19 @@ private void updateHeader(final HeaderValueOption option, Metadata mutableHeader
6770 boolean keepEmptyValue = option .keepEmptyValue ();
6871
6972 if (header .key ().endsWith (Metadata .BINARY_HEADER_SUFFIX )) {
70- updateHeader (action , Metadata .Key .of (header .key (), Metadata .BINARY_BYTE_MARSHALLER ),
71- header .rawValue ().get ().toByteArray (), mutableHeaders , keepEmptyValue );
73+ if (header .rawValue ().isPresent ()) {
74+ updateHeader (action , Metadata .Key .of (header .key (), Metadata .BINARY_BYTE_MARSHALLER ),
75+ header .rawValue ().get ().toByteArray (), mutableHeaders , keepEmptyValue );
76+ } else {
77+ logger .fine ("Missing binary rawValue for header: " + header .key ());
78+ }
7279 } else {
73- updateHeader (action , Metadata .Key .of (header .key (), Metadata .ASCII_STRING_MARSHALLER ),
74- header .value ().get (), mutableHeaders , keepEmptyValue );
80+ if (header .value ().isPresent ()) {
81+ updateHeader (action , Metadata .Key .of (header .key (), Metadata .ASCII_STRING_MARSHALLER ),
82+ header .value ().get (), mutableHeaders , keepEmptyValue );
83+ } else {
84+ logger .fine ("Missing value for header: " + header .key ());
85+ }
7586 }
7687 }
7788
0 commit comments