|
18 | 18 | import io.grpc.ExperimentalApi; |
19 | 19 | import io.grpc.Grpc; |
20 | 20 | import io.grpc.InternalLogId; |
21 | | -import io.grpc.InternalMetadata; |
22 | 21 | import io.grpc.Metadata; |
23 | 22 | import io.grpc.ServerStreamTracer; |
24 | 23 | import io.grpc.Status; |
|
38 | 37 | import java.net.InetSocketAddress; |
39 | 38 | import java.net.URI; |
40 | 39 | import java.net.URISyntaxException; |
41 | | -import java.nio.charset.StandardCharsets; |
42 | | -import java.util.ArrayList; |
43 | 40 | import java.util.Arrays; |
44 | 41 | import java.util.Enumeration; |
45 | 42 | import java.util.List; |
| 43 | +import java.util.Locale; |
46 | 44 | import java.util.concurrent.TimeUnit; |
47 | 45 | import java.util.concurrent.atomic.AtomicBoolean; |
48 | 46 | import java.util.logging.Logger; |
@@ -181,25 +179,26 @@ private static Metadata getHeaders(HttpServletRequest req) { |
181 | 179 | Enumeration<String> headerNames = req.getHeaderNames(); |
182 | 180 | checkNotNull( |
183 | 181 | headerNames, "Servlet container does not allow HttpServletRequest.getHeaderNames()"); |
184 | | - List<byte[]> byteArrays = new ArrayList<>(); |
| 182 | + Metadata metadata = new Metadata(); |
185 | 183 | while (headerNames.hasMoreElements()) { |
186 | 184 | String headerName = headerNames.nextElement(); |
187 | 185 | Enumeration<String> values = req.getHeaders(headerName); |
188 | 186 | if (values == null) { |
189 | 187 | continue; |
190 | 188 | } |
| 189 | + headerName = headerName.toLowerCase(Locale.ROOT); |
| 190 | + boolean isBinaryHeader = headerName.endsWith(Metadata.BINARY_HEADER_SUFFIX); |
191 | 191 | while (values.hasMoreElements()) { |
192 | 192 | String value = values.nextElement(); |
193 | | - if (headerName.endsWith(Metadata.BINARY_HEADER_SUFFIX)) { |
194 | | - byteArrays.add(headerName.getBytes(StandardCharsets.US_ASCII)); |
195 | | - byteArrays.add(BaseEncoding.base64().decode(value)); |
| 193 | + if (isBinaryHeader) { |
| 194 | + metadata.put(Metadata.Key.of(headerName, Metadata.BINARY_BYTE_MARSHALLER), |
| 195 | + BaseEncoding.base64().decode(value)); |
196 | 196 | } else { |
197 | | - byteArrays.add(headerName.getBytes(StandardCharsets.US_ASCII)); |
198 | | - byteArrays.add(value.getBytes(StandardCharsets.US_ASCII)); |
| 197 | + metadata.put(Metadata.Key.of(headerName, Metadata.ASCII_STRING_MARSHALLER), value); |
199 | 198 | } |
200 | 199 | } |
201 | 200 | } |
202 | | - return InternalMetadata.newMetadata(byteArrays.toArray(new byte[][] {})); |
| 201 | + return metadata; |
203 | 202 | } |
204 | 203 |
|
205 | 204 | // This method must use HttpRequest#getRequestURL or HttpUtils#getRequestURL, both of which |
|
0 commit comments