22
33import java .io .IOException ;
44import java .io .OutputStream ;
5- import java .lang .reflect .Array ;
6- import java .util .ArrayDeque ;
75import java .util .ArrayList ;
86import java .util .Arrays ;
9- import java .util .Deque ;
107import java .util .EnumSet ;
11- import java .util .LinkedList ;
128
139import robaho .net .httpserver .http2 .HTTP2ErrorCode ;
1410import robaho .net .httpserver .http2 .HTTP2Exception ;
2016
2117import robaho .net .httpserver .http2 .frame .FrameFlag ;
2218import robaho .net .httpserver .http2 .frame .FrameHeader ;
23- import robaho .net .httpserver .http2 .frame .FrameType ;
2419import robaho .net .httpserver .http2 .Utils ;
2520import robaho .net .httpserver .http2 .frame .FrameType ;
2621
@@ -43,7 +38,7 @@ public void addHeaderField(HTTP2HeaderField field) {
4338 }
4439
4540 public List <HTTP2HeaderField > decodeFieldSegments (byte [] buffer ) throws HTTP2Exception {
46- List <HTTP2HeaderField > headers = new ArrayList <>();
41+ List <HTTP2HeaderField > headers = new ArrayList <>(8 );
4742 int index = 0 ;
4843
4944 try {
@@ -232,10 +227,12 @@ private static byte[] encodeHeaders(Headers headers) {
232227 List <byte []> pseudo = new ArrayList <>(6 );
233228 headers .forEach ((name , values ) -> {
234229 for (String value : values ) {
235- byte [] header = encodeHeader (name .toLowerCase (), value );
236230 if (name .startsWith (":" )) {
231+ byte [] header = encodeHeader (name , value );
237232 pseudo .add (header );
238233 } else {
234+ // Headers keys are normalized to the first letter in uppercase and the rest in lowercase
235+ byte [] header = encodeHeader (Character .toLowerCase (name .charAt (0 ))+name .substring (1 ), value );
239236 fields .add (header );
240237 }
241238 }
0 commit comments