in master/modules/http2/src/main/java/org/glassfish/grizzly/http2/hpack/Huffman.java
method
private Code codeOf(char c) {
if (c > 255) {
throw new IllegalArgumentException("char=" + (int) c);
}
return codes[c];
}
can't correctly process cyrillic symbols (chars always greater than 255), If header contain any cyrillic symbol, we're receiveng an error:
2020-09-04T13:14:48.748+0300] [Payara 5.201] [WARNING] [] [org.glassfish.grizzly.filterchain.DefaultFilterChain] [tid: _ThreadID=84 _ThreadName=http-thread-pool::http-listener-2(4)] [timeMillis: 1599214488748] [levelValue: 900] [[
GRIZZLY0013: Exception during FilterChain execution
java.lang.IllegalArgumentException: char=1060
at org.glassfish.grizzly.http2.hpack.Huffman.codeOf(Huffman.java:545)
at org.glassfish.grizzly.http2.hpack.Huffman.lengthOf(Huffman.java:510)
at org.glassfish.grizzly.http2.hpack.StringWriter.configure(StringWriter.java:70)
at org.glassfish.grizzly.http2.hpack.StringWriter.configure(StringWriter.java:55)
at org.glassfish.grizzly.http2.hpack.IndexNameValueWriter.value(IndexNameValueWriter.java:57)
at org.glassfish.grizzly.http2.hpack.Encoder.literal(Encoder.java:340)
at org.glassfish.grizzly.http2.hpack.Encoder.header(Encoder.java:197)
at org.glassfish.grizzly.http2.hpack.Encoder.header(Encoder.java:159)
at org.glassfish.grizzly.http2.HeadersEncoder.encodeHeader(HeadersEncoder.java:55)
at org.glassfish.grizzly.http2.EncoderUtils.encodeUserHeaders(EncoderUtils.java:222)
at org.glassfish.grizzly.http2.EncoderUtils.encodeResponseHeaders(EncoderUtils.java:72)
at org.glassfish.grizzly.http2.Http2Session.encodeHttpHeaderAsHeaderFrames(Http2Session.java:835)
at org.glassfish.grizzly.http2.DefaultOutputSink.writeDownStream(DefaultOutputSink.java:282)
at org.glassfish.grizzly.http2.Http2ServerFilter.processOutgoingHttpHeader(Http2ServerFilter.java:970)
at org.glassfish.grizzly.http2.Http2BaseFilter.handleWrite(Http2BaseFilter.java:729)
at org.glassfish.grizzly.filterchain.ExecutorResolver$8.execute(ExecutorResolver.java:87)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:260)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:177)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:109)
at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:88)
at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:53)
at org.glassfish.grizzly.filterchain.FilterChainContext.write(FilterChainContext.java:867)
at org.glassfish.grizzly.filterchain.FilterChainContext.write(FilterChainContext.java:835)
at org.glassfish.grizzly.http.io.OutputBuffer.flushBuffer(OutputBuffer.java:1068)
at org.glassfish.grizzly.http.io.OutputBuffer.write(OutputBuffer.java:695)
at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:338)
at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:325)
at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:158)
in master/modules/http2/src/main/java/org/glassfish/grizzly/http2/hpack/Huffman.java
method
private Code codeOf(char c) { if (c > 255) { throw new IllegalArgumentException("char=" + (int) c); } return codes[c]; }
can't correctly process cyrillic symbols (chars always greater than 255), If header contain any cyrillic symbol, we're receiveng an error:
2020-09-04T13:14:48.748+0300] [Payara 5.201] [WARNING] [] [org.glassfish.grizzly.filterchain.DefaultFilterChain] [tid: _ThreadID=84 _ThreadName=http-thread-pool::http-listener-2(4)] [timeMillis: 1599214488748] [levelValue: 900] [[ GRIZZLY0013: Exception during FilterChain execution java.lang.IllegalArgumentException: char=1060 at org.glassfish.grizzly.http2.hpack.Huffman.codeOf(Huffman.java:545) at org.glassfish.grizzly.http2.hpack.Huffman.lengthOf(Huffman.java:510) at org.glassfish.grizzly.http2.hpack.StringWriter.configure(StringWriter.java:70) at org.glassfish.grizzly.http2.hpack.StringWriter.configure(StringWriter.java:55) at org.glassfish.grizzly.http2.hpack.IndexNameValueWriter.value(IndexNameValueWriter.java:57) at org.glassfish.grizzly.http2.hpack.Encoder.literal(Encoder.java:340) at org.glassfish.grizzly.http2.hpack.Encoder.header(Encoder.java:197) at org.glassfish.grizzly.http2.hpack.Encoder.header(Encoder.java:159) at org.glassfish.grizzly.http2.HeadersEncoder.encodeHeader(HeadersEncoder.java:55) at org.glassfish.grizzly.http2.EncoderUtils.encodeUserHeaders(EncoderUtils.java:222) at org.glassfish.grizzly.http2.EncoderUtils.encodeResponseHeaders(EncoderUtils.java:72) at org.glassfish.grizzly.http2.Http2Session.encodeHttpHeaderAsHeaderFrames(Http2Session.java:835) at org.glassfish.grizzly.http2.DefaultOutputSink.writeDownStream(DefaultOutputSink.java:282) at org.glassfish.grizzly.http2.Http2ServerFilter.processOutgoingHttpHeader(Http2ServerFilter.java:970) at org.glassfish.grizzly.http2.Http2BaseFilter.handleWrite(Http2BaseFilter.java:729) at org.glassfish.grizzly.filterchain.ExecutorResolver$8.execute(ExecutorResolver.java:87) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeFilter(DefaultFilterChain.java:260) at org.glassfish.grizzly.filterchain.DefaultFilterChain.executeChainPart(DefaultFilterChain.java:177) at org.glassfish.grizzly.filterchain.DefaultFilterChain.execute(DefaultFilterChain.java:109) at org.glassfish.grizzly.filterchain.DefaultFilterChain.process(DefaultFilterChain.java:88) at org.glassfish.grizzly.ProcessorExecutor.execute(ProcessorExecutor.java:53) at org.glassfish.grizzly.filterchain.FilterChainContext.write(FilterChainContext.java:867) at org.glassfish.grizzly.filterchain.FilterChainContext.write(FilterChainContext.java:835) at org.glassfish.grizzly.http.io.OutputBuffer.flushBuffer(OutputBuffer.java:1068) at org.glassfish.grizzly.http.io.OutputBuffer.write(OutputBuffer.java:695) at org.apache.catalina.connector.OutputBuffer.writeBytes(OutputBuffer.java:338) at org.apache.catalina.connector.OutputBuffer.write(OutputBuffer.java:325) at org.apache.catalina.connector.CoyoteOutputStream.write(CoyoteOutputStream.java:158)
Disabling http/2 in payara prevents this issue.