final class io.netty.handler.codec.http.HpackDecoder extends java.lang.Object
{
private static final io.netty.handler.codec.http.Http2Exception DECODE_ULE_128_DECOMPRESSION_EXCEPTION;
private static final io.netty.handler.codec.http.Http2Exception DECODE_ULE_128_TO_LONG_DECOMPRESSION_EXCEPTION;
private static final io.netty.handler.codec.http.Http2Exception DECODE_ULE_128_TO_INT_DECOMPRESSION_EXCEPTION;
private static final io.netty.handler.codec.http.Http2Exception DECODE_ILLEGAL_INDEX_VALUE;
private static final io.netty.handler.codec.http.Http2Exception INDEX_HEADER_ILLEGAL_INDEX_VALUE;
private static final io.netty.handler.codec.http.Http2Exception READ_NAME_ILLEGAL_INDEX_VALUE;
private static final io.netty.handler.codec.http.Http2Exception INVALID_MAX_DYNAMIC_TABLE_SIZE;
private static final io.netty.handler.codec.http.Http2Exception MAX_DYNAMIC_TABLE_SIZE_CHANGE_REQUIRED;
private static final byte READ_HEADER_REPRESENTATION;
private static final byte READ_INDEXED_HEADER;
private static final byte READ_INDEXED_HEADER_NAME;
private static final byte READ_LITERAL_HEADER_NAME_LENGTH_PREFIX;
private static final byte READ_LITERAL_HEADER_NAME_LENGTH;
private static final byte READ_LITERAL_HEADER_NAME;
private static final byte READ_LITERAL_HEADER_VALUE_LENGTH_PREFIX;
private static final byte READ_LITERAL_HEADER_VALUE_LENGTH;
private static final byte READ_LITERAL_HEADER_VALUE;
private final io.netty.handler.codec.http.HpackHuffmanDecoder huffmanDecoder;
private final io.netty.handler.codec.http.HpackDynamicTable hpackDynamicTable;
private long maxHeaderListSize;
private long maxDynamicTableSize;
private long encoderMaxDynamicTableSize;
private boolean maxDynamicTableSizeChangeRequired;
static final boolean $assertionsDisabled;
void <init>(long)
{
long v;
io.netty.handler.codec.http.HpackDecoder v;
v := @this: io.netty.handler.codec.http.HpackDecoder;
v := @parameter: long;
specialinvoke v.<io.netty.handler.codec.http.HpackDecoder: void <init>(long,int)>(v, 4096);
return;
}
void <init>(long, int)
{
io.netty.handler.codec.http.HpackDecoder v;
io.netty.handler.codec.http.HpackHuffmanDecoder v;
int v;
long v, v;
io.netty.handler.codec.http.HpackDynamicTable v;
v := @this: io.netty.handler.codec.http.HpackDecoder;
v := @parameter: long;
v := @parameter: int;
specialinvoke v.<java.lang.Object: void <init>()>();
v = new io.netty.handler.codec.http.HpackHuffmanDecoder;
specialinvoke v.<io.netty.handler.codec.http.HpackHuffmanDecoder: void <init>()>();
v.<io.netty.handler.codec.http.HpackDecoder: io.netty.handler.codec.http.HpackHuffmanDecoder huffmanDecoder> = v;
v = staticinvoke <io.netty.util.internal.ObjectUtil: long checkPositive(long,java.lang.String)>(v, "maxHeaderListSize");
v.<io.netty.handler.codec.http.HpackDecoder: long maxHeaderListSize> = v;
v.<io.netty.handler.codec.http.HpackDecoder: long encoderMaxDynamicTableSize> = v;
v.<io.netty.handler.codec.http.HpackDecoder: long maxDynamicTableSize> = v;
v.<io.netty.handler.codec.http.HpackDecoder: boolean maxDynamicTableSizeChangeRequired> = 0;
v = new io.netty.handler.codec.http.HpackDynamicTable;
specialinvoke v.<io.netty.handler.codec.http.HpackDynamicTable: void <init>(long)>(v);
v.<io.netty.handler.codec.http.HpackDecoder: io.netty.handler.codec.http.HpackDynamicTable hpackDynamicTable> = v;
return;
}
void decode(int, io.netty.buffer.ByteBuf, io.netty.handler.codec.http.Http2Headers, boolean) throws io.netty.handler.codec.http.Http2Exception
{
io.netty.handler.codec.http.HpackDecoder$Http2HeadersSink v;
io.netty.buffer.ByteBuf v;
io.netty.handler.codec.http.HpackDecoder v;
io.netty.handler.codec.http.Http2Headers v;
int v;
long v;
boolean v;
v := @this: io.netty.handler.codec.http.HpackDecoder;
v := @parameter: int;
v := @parameter: io.netty.buffer.ByteBuf;
v := @parameter: io.netty.handler.codec.http.Http2Headers;
v := @parameter: boolean;
v = new io.netty.handler.codec.http.HpackDecoder$Http2HeadersSink;
v = v.<io.netty.handler.codec.http.HpackDecoder: long maxHeaderListSize>;
specialinvoke v.<io.netty.handler.codec.http.HpackDecoder$Http2HeadersSink: void <init>(int,io.netty.handler.codec.http.Http2Headers,long,boolean)>(v, v, v, v);
specialinvoke v.<io.netty.handler.codec.http.HpackDecoder: void decodeDynamicTableSizeUpdates(io.netty.buffer.ByteBuf)>(v);
specialinvoke v.<io.netty.handler.codec.http.HpackDecoder: void decode(io.netty.buffer.ByteBuf,io.netty.handler.codec.http.HpackDecoder$Http2HeadersSink)>(v, v);
virtualinvoke v.<io.netty.handler.codec.http.HpackDecoder$Http2HeadersSink: void finish()>();
return;
}
private void decodeDynamicTableSizeUpdates(io.netty.buffer.ByteBuf) throws io.netty.handler.codec.http.Http2Exception
{
io.netty.handler.codec.http.HpackDecoder v;
long v;
short v;
byte v, v, v;
io.netty.buffer.ByteBuf v;
int v;
boolean v;
v := @this: io.netty.handler.codec.http.HpackDecoder;
v := @parameter: io.netty.buffer.ByteBuf;
label:
v = virtualinvoke v.<io.netty.buffer.ByteBuf: boolean isReadable()>();
if v == 0 goto label;
v = virtualinvoke v.<io.netty.buffer.ByteBuf: int readerIndex()>();
v = virtualinvoke v.<io.netty.buffer.ByteBuf: byte getByte(int)>(v);
v = v & 32;
if v != 32 goto label;
v = v & 192;
if v != 0 goto label;
virtualinvoke v.<io.netty.buffer.ByteBuf: byte readByte()>();
v = v & 31;
if v != 31 goto label;
v = staticinvoke <io.netty.handler.codec.http.HpackDecoder: long decodeULE128(io.netty.buffer.ByteBuf,long)>(v, v);
specialinvoke v.<io.netty.handler.codec.http.HpackDecoder: void setDynamicTableSize(long)>(v);
goto label;
label:
specialinvoke v.<io.netty.handler.codec.http.HpackDecoder: void setDynamicTableSize(long)>(v);
goto label;
label:
return;
}
private void decode(io.netty.buffer.ByteBuf, io.netty.handler.codec.http.HpackDecoder$Http2HeadersSink) throws io.netty.handler.codec.http.Http2Exception
{
io.netty.handler.codec.http.HpackDecoder v;
io.netty.util.AsciiString v, v, v;
byte v, v, v, v, v, v, v, v;
io.netty.handler.codec.http.Http2Exception v, v, v, v;
boolean v, v, v, v, v;
java.lang.CharSequence v, v, v, v;
io.netty.handler.codec.http.HpackHeaderField v, v;
io.netty.handler.codec.http.HpackDecoder$Http2HeadersSink v;
io.netty.handler.codec.http.Http2Error v, v;
io.netty.handler.codec.http.HpackUtil$IndexType v, v;
java.lang.Object[] v, v;
java.lang.Error v;
short v, v, v;
io.netty.buffer.ByteBuf v;
int v, v, v, v, v, v;
java.lang.String v;
java.lang.IllegalArgumentException v, v;
v := @this: io.netty.handler.codec.http.HpackDecoder;
v := @parameter: io.netty.buffer.ByteBuf;
v := @parameter: io.netty.handler.codec.http.HpackDecoder$Http2HeadersSink;
v = 0;
v = 0;
v = 0;
v = 0;
v = 0;
v = null;
v = <io.netty.handler.codec.http.HpackUtil$IndexType: io.netty.handler.codec.http.HpackUtil$IndexType NONE>;
label:
v = virtualinvoke v.<io.netty.buffer.ByteBuf: boolean isReadable()>();
if v == 0 goto label;
tableswitch(v)
{
case 0: goto label;
case 1: goto label;
case 2: goto label;
case 3: goto label;
case 4: goto label;
case 5: goto label;
case 6: goto label;
case 7: goto label;
case 8: goto label;
default: goto label;
};
label:
v = virtualinvoke v.<io.netty.buffer.ByteBuf: byte readByte()>();
v = v.<io.netty.handler.codec.http.HpackDecoder: boolean maxDynamicTableSizeChangeRequired>;
if v == 0 goto label;
v = v & 224;
if v == 32 goto label;
v = <io.netty.handler.codec.http.HpackDecoder: io.netty.handler.codec.http.Http2Exception MAX_DYNAMIC_TABLE_SIZE_CHANGE_REQUIRED>;
throw v;
label:
if v >= 0 goto label;
v = v & 127;
lookupswitch(v)
{
case 0: goto label;
case 127: goto label;
default: goto label;
};
label:
v = <io.netty.handler.codec.http.HpackDecoder: io.netty.handler.codec.http.Http2Exception DECODE_ILLEGAL_INDEX_VALUE>;
throw v;
label:
v = 1;
goto label;
label:
v = specialinvoke v.<io.netty.handler.codec.http.HpackDecoder: io.netty.handler.codec.http.HpackHeaderField getIndexedHeader(int)>(v);
v = v.<io.netty.handler.codec.http.HpackHeaderField: java.lang.CharSequence name>;
v = v.<io.netty.handler.codec.http.HpackHeaderField: java.lang.CharSequence value>;
virtualinvoke v.<io.netty.handler.codec.http.HpackDecoder$Http2HeadersSink: void appendToHeaderList(io.netty.util.AsciiString,io.netty.util.AsciiString)>(v, v);
goto label;
label:
v = v & 64;
if v != 64 goto label;
v = <io.netty.handler.codec.http.HpackUtil$IndexType: io.netty.handler.codec.http.HpackUtil$IndexType INCREMENTAL>;
v = v & 63;
lookupswitch(v)
{
case 0: goto label;
case 63: goto label;
default: goto label;
};
label:
v = 3;
goto label;
label:
v = 2;
goto label;
label:
v = specialinvoke v.<io.netty.handler.codec.http.HpackDecoder: io.netty.util.AsciiString readName(int)>(v);
v = virtualinvoke v.<io.netty.util.AsciiString: int length()>();
v = 6;
goto label;
label:
v = v & 32;
if v != 32 goto label;
v = <io.netty.handler.codec.http.Http2Error: io.netty.handler.codec.http.Http2Error COMPRESSION_ERROR>;
v = newarray (java.lang.Object)[0];
v = staticinvoke <io.netty.handler.codec.http.Http2Exception: io.netty.handler.codec.http.Http2Exception connectionError(io.netty.handler.codec.http.Http2Error,java.lang.String,java.lang.Object[])>(v, "Dynamic table size update must happen at the beginning of the header block", v);
throw v;
label:
v = v & 16;
if v != 16 goto label;
v = <io.netty.handler.codec.http.HpackUtil$IndexType: io.netty.handler.codec.http.HpackUtil$IndexType NEVER>;
goto label;
label:
v = <io.netty.handler.codec.http.HpackUtil$IndexType: io.netty.handler.codec.http.HpackUtil$IndexType NONE>;
label:
v = v;
v = v & 15;
lookupswitch(v)
{
case 0: goto label;
case 15: goto label;
default: goto label;
};
label:
v = 3;
goto label;
label:
v = 2;
goto label;
label:
v = specialinvoke v.<io.netty.handler.codec.http.HpackDecoder: io.netty.util.AsciiString readName(int)>(v);
v = virtualinvoke v.<io.netty.util.AsciiString: int length()>();
v = 6;
goto label;
label:
v = staticinvoke <io.netty.handler.codec.http.HpackDecoder: int decodeULE128(io.netty.buffer.ByteBuf,int)>(v, v);
v = specialinvoke v.<io.netty.handler.codec.http.HpackDecoder: io.netty.handler.codec.http.HpackHeaderField getIndexedHeader(int)>(v);
v = v.<io.netty.handler.codec.http.HpackHeaderField: java.lang.CharSequence name>;
v = v.<io.netty.handler.codec.http.HpackHeaderField: java.lang.CharSequence value>;
virtualinvoke v.<io.netty.handler.codec.http.HpackDecoder$Http2HeadersSink: void appendToHeaderList(io.netty.util.AsciiString,io.netty.util.AsciiString)>(v, v);
v = 0;
goto label;
label:
v = staticinvoke <io.netty.handler.codec.http.HpackDecoder: int decodeULE128(io.netty.buffer.ByteBuf,int)>(v, v);
v = specialinvoke v.<io.netty.handler.codec.http.HpackDecoder: io.netty.util.AsciiString readName(int)>(v);
v = virtualinvoke v.<io.netty.util.AsciiString: int length()>();
v = 6;
goto label;
label:
v = virtualinvoke v.<io.netty.buffer.ByteBuf: byte readByte()>();
v = v & 128;
if v != 128 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
v = v & 127;
if v != 127 goto label;
v = 4;
goto label;
label:
v = v;
v = 5;
goto label;
label:
v = staticinvoke <io.netty.handler.codec.http.HpackDecoder: int decodeULE128(io.netty.buffer.ByteBuf,int)>(v, v);
v = 5;
goto label;
label:
v = virtualinvoke v.<io.netty.buffer.ByteBuf: int readableBytes()>();
if v >= v goto label;
v = staticinvoke <io.netty.handler.codec.http.HpackDecoder: java.lang.IllegalArgumentException notEnoughDataException(io.netty.buffer.ByteBuf)>(v);
throw v;
label:
v = specialinvoke v.<io.netty.handler.codec.http.HpackDecoder: io.netty.util.AsciiString readStringLiteral(io.netty.buffer.ByteBuf,int,boolean)>(v, v, v);
v = 6;
goto label;
label:
v = virtualinvoke v.<io.netty.buffer.ByteBuf: byte readByte()>();
v = v & 128;
if v != 128 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
v = v & 127;
lookupswitch(v)
{
case 0: goto label;
case 127: goto label;
default: goto label;
};
label:
v = 7;
goto label;
label:
v = <io.netty.util.AsciiString: io.netty.util.AsciiString EMPTY_STRING>;
specialinvoke v.<io.netty.handler.codec.http.HpackDecoder: void insertHeader(io.netty.handler.codec.http.HpackDecoder$Http2HeadersSink,io.netty.util.AsciiString,io.netty.util.AsciiString,io.netty.handler.codec.http.HpackUtil$IndexType)>(v, v, v, v);
v = 0;
goto label;
label:
v = v;
v = 8;
goto label;
label:
v = staticinvoke <io.netty.handler.codec.http.HpackDecoder: int decodeULE128(io.netty.buffer.ByteBuf,int)>(v, v);
v = 8;
goto label;
label:
v = virtualinvoke v.<io.netty.buffer.ByteBuf: int readableBytes()>();
if v >= v goto label;
v = staticinvoke <io.netty.handler.codec.http.HpackDecoder: java.lang.IllegalArgumentException notEnoughDataException(io.netty.buffer.ByteBuf)>(v);
throw v;
label:
v = specialinvoke v.<io.netty.handler.codec.http.HpackDecoder: io.netty.util.AsciiString readStringLiteral(io.netty.buffer.ByteBuf,int,boolean)>(v, v, v);
specialinvoke v.<io.netty.handler.codec.http.HpackDecoder: void insertHeader(io.netty.handler.codec.http.HpackDecoder$Http2HeadersSink,io.netty.util.AsciiString,io.netty.util.AsciiString,io.netty.handler.codec.http.HpackUtil$IndexType)>(v, v, v, v);
v = 0;
goto label;
label:
v = new java.lang.Error;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (byte)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("should not reach here state: \u0001");
specialinvoke v.<java.lang.Error: void <init>(java.lang.String)>(v);
throw v;
label:
if v == 0 goto label;
v = <io.netty.handler.codec.http.Http2Error: io.netty.handler.codec.http.Http2Error COMPRESSION_ERROR>;
v = newarray (java.lang.Object)[0];
v = staticinvoke <io.netty.handler.codec.http.Http2Exception: io.netty.handler.codec.http.Http2Exception connectionError(io.netty.handler.codec.http.Http2Error,java.lang.String,java.lang.Object[])>(v, "Incomplete header block fragment.", v);
throw v;
label:
return;
}
void setMaxHeaderTableSize(long) throws io.netty.handler.codec.http.Http2Exception
{
java.lang.Object[] v;
io.netty.handler.codec.http.HpackDecoder v;
long v, v, v, v;
io.netty.handler.codec.http.HpackDynamicTable v;
byte v, v, v;
java.lang.Long v, v, v;
io.netty.handler.codec.http.Http2Exception v;
io.netty.handler.codec.http.Http2Error v;
v := @this: io.netty.handler.codec.http.HpackDecoder;
v := @parameter: long;
v = v cmp 0L;
if v < 0 goto label;
v = v cmp 4294967295L;
if v <= 0 goto label;
label:
v = <io.netty.handler.codec.http.Http2Error: io.netty.handler.codec.http.Http2Error PROTOCOL_ERROR>;
v = newarray (java.lang.Object)[3];
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(0L);
v[0] = v;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(4294967295L);
v[1] = v;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v[2] = v;
v = staticinvoke <io.netty.handler.codec.http.Http2Exception: io.netty.handler.codec.http.Http2Exception connectionError(io.netty.handler.codec.http.Http2Error,java.lang.String,java.lang.Object[])>(v, "Header Table Size must be >= %d and <= %d but was %d", v);
throw v;
label:
v.<io.netty.handler.codec.http.HpackDecoder: long maxDynamicTableSize> = v;
v = v.<io.netty.handler.codec.http.HpackDecoder: long maxDynamicTableSize>;
v = v.<io.netty.handler.codec.http.HpackDecoder: long encoderMaxDynamicTableSize>;
v = v cmp v;
if v >= 0 goto label;
v.<io.netty.handler.codec.http.HpackDecoder: boolean maxDynamicTableSizeChangeRequired> = 1;
v = v.<io.netty.handler.codec.http.HpackDecoder: io.netty.handler.codec.http.HpackDynamicTable hpackDynamicTable>;
v = v.<io.netty.handler.codec.http.HpackDecoder: long maxDynamicTableSize>;
virtualinvoke v.<io.netty.handler.codec.http.HpackDynamicTable: void setCapacity(long)>(v);
label:
return;
}
void setMaxHeaderListSize(long) throws io.netty.handler.codec.http.Http2Exception
{
java.lang.Object[] v;
io.netty.handler.codec.http.HpackDecoder v;
long v;
byte v, v;
java.lang.Long v, v, v;
io.netty.handler.codec.http.Http2Exception v;
io.netty.handler.codec.http.Http2Error v;
v := @this: io.netty.handler.codec.http.HpackDecoder;
v := @parameter: long;
v = v cmp 0L;
if v < 0 goto label;
v = v cmp 4294967295L;
if v <= 0 goto label;
label:
v = <io.netty.handler.codec.http.Http2Error: io.netty.handler.codec.http.Http2Error PROTOCOL_ERROR>;
v = newarray (java.lang.Object)[3];
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(0L);
v[0] = v;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(4294967295L);
v[1] = v;
v = staticinvoke <java.lang.Long: java.lang.Long valueOf(long)>(v);
v[2] = v;
v = staticinvoke <io.netty.handler.codec.http.Http2Exception: io.netty.handler.codec.http.Http2Exception connectionError(io.netty.handler.codec.http.Http2Error,java.lang.String,java.lang.Object[])>(v, "Header List Size must be >= %d and <= %d but was %d", v);
throw v;
label:
v.<io.netty.handler.codec.http.HpackDecoder: long maxHeaderListSize> = v;
return;
}
long getMaxHeaderListSize()
{
long v;
io.netty.handler.codec.http.HpackDecoder v;
v := @this: io.netty.handler.codec.http.HpackDecoder;
v = v.<io.netty.handler.codec.http.HpackDecoder: long maxHeaderListSize>;
return v;
}
long getMaxHeaderTableSize()
{
long v;
io.netty.handler.codec.http.HpackDecoder v;
io.netty.handler.codec.http.HpackDynamicTable v;
v := @this: io.netty.handler.codec.http.HpackDecoder;
v = v.<io.netty.handler.codec.http.HpackDecoder: io.netty.handler.codec.http.HpackDynamicTable hpackDynamicTable>;
v = virtualinvoke v.<io.netty.handler.codec.http.HpackDynamicTable: long capacity()>();
return v;
}
int length()
{
int v;
io.netty.handler.codec.http.HpackDecoder v;
io.netty.handler.codec.http.HpackDynamicTable v;
v := @this: io.netty.handler.codec.http.HpackDecoder;
v = v.<io.netty.handler.codec.http.HpackDecoder: io.netty.handler.codec.http.HpackDynamicTable hpackDynamicTable>;
v = virtualinvoke v.<io.netty.handler.codec.http.HpackDynamicTable: int length()>();
return v;
}
long size()
{
long v;
io.netty.handler.codec.http.HpackDecoder v;
io.netty.handler.codec.http.HpackDynamicTable v;
v := @this: io.netty.handler.codec.http.HpackDecoder;
v = v.<io.netty.handler.codec.http.HpackDecoder: io.netty.handler.codec.http.HpackDynamicTable hpackDynamicTable>;
v = virtualinvoke v.<io.netty.handler.codec.http.HpackDynamicTable: long size()>();
return v;
}
io.netty.handler.codec.http.HpackHeaderField getHeaderField(int)
{
io.netty.handler.codec.http.HpackDecoder v;
int v, v;
io.netty.handler.codec.http.HpackDynamicTable v;
io.netty.handler.codec.http.HpackHeaderField v;
v := @this: io.netty.handler.codec.http.HpackDecoder;
v := @parameter: int;
v = v.<io.netty.handler.codec.http.HpackDecoder: io.netty.handler.codec.http.HpackDynamicTable hpackDynamicTable>;
v = v + 1;
v = virtualinvoke v.<io.netty.handler.codec.http.HpackDynamicTable: io.netty.handler.codec.http.HpackHeaderField getEntry(int)>(v);
return v;
}
private void setDynamicTableSize(long) throws io.netty.handler.codec.http.Http2Exception
{
byte v;
io.netty.handler.codec.http.HpackDecoder v;
io.netty.handler.codec.http.Http2Exception v;
long v, v;
io.netty.handler.codec.http.HpackDynamicTable v;
v := @this: io.netty.handler.codec.http.HpackDecoder;
v := @parameter: long;
v = v.<io.netty.handler.codec.http.HpackDecoder: long maxDynamicTableSize>;
v = v cmp v;
if v <= 0 goto label;
v = <io.netty.handler.codec.http.HpackDecoder: io.netty.handler.codec.http.Http2Exception INVALID_MAX_DYNAMIC_TABLE_SIZE>;
throw v;
label:
v.<io.netty.handler.codec.http.HpackDecoder: long encoderMaxDynamicTableSize> = v;
v.<io.netty.handler.codec.http.HpackDecoder: boolean maxDynamicTableSizeChangeRequired> = 0;
v = v.<io.netty.handler.codec.http.HpackDecoder: io.netty.handler.codec.http.HpackDynamicTable hpackDynamicTable>;
virtualinvoke v.<io.netty.handler.codec.http.HpackDynamicTable: void setCapacity(long)>(v);
return;
}
private static io.netty.handler.codec.http.HpackDecoder$HeaderType validateHeader(int, io.netty.util.AsciiString, java.lang.CharSequence, io.netty.handler.codec.http.HpackDecoder$HeaderType) throws io.netty.handler.codec.http.Http2Exception
{
java.lang.Object[] v, v, v, v;
io.netty.util.AsciiString v;
io.netty.handler.codec.http.Http2Exception v, v, v, v;
int v;
boolean v, v, v, v;
io.netty.handler.codec.http.HpackDecoder$HeaderType v, v, v, v, v;
java.lang.CharSequence v;
io.netty.handler.codec.http.Http2Headers$PseudoHeaderName v;
io.netty.handler.codec.http.Http2Error v, v, v, v;
v := @parameter: int;
v := @parameter: io.netty.util.AsciiString;
v := @parameter: java.lang.CharSequence;
v := @parameter: io.netty.handler.codec.http.HpackDecoder$HeaderType;
v = staticinvoke <io.netty.handler.codec.http.Http2Headers$PseudoHeaderName: boolean hasPseudoHeaderFormat(java.lang.CharSequence)>(v);
if v == 0 goto label;
v = <io.netty.handler.codec.http.HpackDecoder$HeaderType: io.netty.handler.codec.http.HpackDecoder$HeaderType REGULAR_HEADER>;
if v != v goto label;
v = <io.netty.handler.codec.http.Http2Error: io.netty.handler.codec.http.Http2Error PROTOCOL_ERROR>;
v = newarray (java.lang.Object)[1];
v[0] = v;
v = staticinvoke <io.netty.handler.codec.http.Http2Exception: io.netty.handler.codec.http.Http2Exception streamError(int,io.netty.handler.codec.http.Http2Error,java.lang.String,java.lang.Object[])>(v, v, "Pseudo-header field \'%s\' found after regular header.", v);
throw v;
label:
v = staticinvoke <io.netty.handler.codec.http.Http2Headers$PseudoHeaderName: io.netty.handler.codec.http.Http2Headers$PseudoHeaderName getPseudoHeader(java.lang.CharSequence)>(v);
v = virtualinvoke v.<io.netty.handler.codec.http.Http2Headers$PseudoHeaderName: boolean isRequestOnly()>();
if v == 0 goto label;
v = <io.netty.handler.codec.http.HpackDecoder$HeaderType: io.netty.handler.codec.http.HpackDecoder$HeaderType REQUEST_PSEUDO_HEADER>;
goto label;
label:
v = <io.netty.handler.codec.http.HpackDecoder$HeaderType: io.netty.handler.codec.http.HpackDecoder$HeaderType RESPONSE_PSEUDO_HEADER>;
label:
v = v;
if v == null goto label;
if v == v goto label;
v = <io.netty.handler.codec.http.Http2Error: io.netty.handler.codec.http.Http2Error PROTOCOL_ERROR>;
v = newarray (java.lang.Object)[0];
v = staticinvoke <io.netty.handler.codec.http.Http2Exception: io.netty.handler.codec.http.Http2Exception streamError(int,io.netty.handler.codec.http.Http2Error,java.lang.String,java.lang.Object[])>(v, v, "Mix of request and response pseudo-headers.", v);
throw v;
label:
return v;
label:
v = staticinvoke <io.netty.handler.codec.http.HttpHeaderValidationUtil: boolean isConnectionHeader(java.lang.CharSequence,boolean)>(v, 1);
if v == 0 goto label;
v = <io.netty.handler.codec.http.Http2Error: io.netty.handler.codec.http.Http2Error PROTOCOL_ERROR>;
v = newarray (java.lang.Object)[1];
v[0] = v;
v = staticinvoke <io.netty.handler.codec.http.Http2Exception: io.netty.handler.codec.http.Http2Exception streamError(int,io.netty.handler.codec.http.Http2Error,java.lang.String,java.lang.Object[])>(v, v, "Illegal connection-specific header \'%s\' encountered.", v);
throw v;
label:
v = staticinvoke <io.netty.handler.codec.http.HttpHeaderValidationUtil: boolean isTeNotTrailers(java.lang.CharSequence,java.lang.CharSequence)>(v, v);
if v == 0 goto label;
v = <io.netty.handler.codec.http.Http2Error: io.netty.handler.codec.http.Http2Error PROTOCOL_ERROR>;
v = newarray (java.lang.Object)[0];
v = staticinvoke <io.netty.handler.codec.http.Http2Exception: io.netty.handler.codec.http.Http2Exception streamError(int,io.netty.handler.codec.http.Http2Error,java.lang.String,java.lang.Object[])>(v, v, "Illegal value specified for the \'TE\' header (only \'trailers\' is allowed).", v);
throw v;
label:
v = <io.netty.handler.codec.http.HpackDecoder$HeaderType: io.netty.handler.codec.http.HpackDecoder$HeaderType REGULAR_HEADER>;
return v;
}
private io.netty.util.AsciiString readName(int) throws io.netty.handler.codec.http.Http2Exception
{
java.lang.CharSequence v, v;
io.netty.handler.codec.http.HpackDecoder v;
io.netty.handler.codec.http.HpackDynamicTable v, v;
io.netty.handler.codec.http.HpackHeaderField v, v;
io.netty.handler.codec.http.Http2Exception v;
int v, v, v, v, v, v, v;
v := @this: io.netty.handler.codec.http.HpackDecoder;
v := @parameter: int;
v = <io.netty.handler.codec.http.HpackStaticTable: int length>;
if v > v goto label;
v = staticinvoke <io.netty.handler.codec.http.HpackStaticTable: io.netty.handler.codec.http.HpackHeaderField getEntry(int)>(v);
v = v.<io.netty.handler.codec.http.HpackHeaderField: java.lang.CharSequence name>;
return v;
label:
v = <io.netty.handler.codec.http.HpackStaticTable: int length>;
v = v - v;
v = v.<io.netty.handler.codec.http.HpackDecoder: io.netty.handler.codec.http.HpackDynamicTable hpackDynamicTable>;
v = virtualinvoke v.<io.netty.handler.codec.http.HpackDynamicTable: int length()>();
if v > v goto label;
v = v.<io.netty.handler.codec.http.HpackDecoder: io.netty.handler.codec.http.HpackDynamicTable hpackDynamicTable>;
v = <io.netty.handler.codec.http.HpackStaticTable: int length>;
v = v - v;
v = virtualinvoke v.<io.netty.handler.codec.http.HpackDynamicTable: io.netty.handler.codec.http.HpackHeaderField getEntry(int)>(v);
v = v.<io.netty.handler.codec.http.HpackHeaderField: java.lang.CharSequence name>;
return v;
label:
v = <io.netty.handler.codec.http.HpackDecoder: io.netty.handler.codec.http.Http2Exception READ_NAME_ILLEGAL_INDEX_VALUE>;
throw v;
}
private io.netty.handler.codec.http.HpackHeaderField getIndexedHeader(int) throws io.netty.handler.codec.http.Http2Exception
{
io.netty.handler.codec.http.HpackDecoder v;
io.netty.handler.codec.http.HpackDynamicTable v, v;
io.netty.handler.codec.http.HpackHeaderField v, v;
io.netty.handler.codec.http.Http2Exception v;
int v, v, v, v, v, v, v;
v := @this: io.netty.handler.codec.http.HpackDecoder;
v := @parameter: int;
v = <io.netty.handler.codec.http.HpackStaticTable: int length>;
if v > v goto label;
v = staticinvoke <io.netty.handler.codec.http.HpackStaticTable: io.netty.handler.codec.http.HpackHeaderField getEntry(int)>(v);
return v;
label:
v = <io.netty.handler.codec.http.HpackStaticTable: int length>;
v = v - v;
v = v.<io.netty.handler.codec.http.HpackDecoder: io.netty.handler.codec.http.HpackDynamicTable hpackDynamicTable>;
v = virtualinvoke v.<io.netty.handler.codec.http.HpackDynamicTable: int length()>();
if v > v goto label;
v = v.<io.netty.handler.codec.http.HpackDecoder: io.netty.handler.codec.http.HpackDynamicTable hpackDynamicTable>;
v = <io.netty.handler.codec.http.HpackStaticTable: int length>;
v = v - v;
v = virtualinvoke v.<io.netty.handler.codec.http.HpackDynamicTable: io.netty.handler.codec.http.HpackHeaderField getEntry(int)>(v);
return v;
label:
v = <io.netty.handler.codec.http.HpackDecoder: io.netty.handler.codec.http.Http2Exception INDEX_HEADER_ILLEGAL_INDEX_VALUE>;
throw v;
}
private void insertHeader(io.netty.handler.codec.http.HpackDecoder$Http2HeadersSink, io.netty.util.AsciiString, io.netty.util.AsciiString, io.netty.handler.codec.http.HpackUtil$IndexType)
{
io.netty.handler.codec.http.HpackDecoder v;
io.netty.util.AsciiString v, v;
java.lang.Error v;
io.netty.handler.codec.http.HpackDynamicTable v;
io.netty.handler.codec.http.HpackHeaderField v;
io.netty.handler.codec.http.HpackDecoder$Http2HeadersSink v;
int[] v;
int v, v;
io.netty.handler.codec.http.HpackUtil$IndexType v;
v := @this: io.netty.handler.codec.http.HpackDecoder;
v := @parameter: io.netty.handler.codec.http.HpackDecoder$Http2HeadersSink;
v := @parameter: io.netty.util.AsciiString;
v := @parameter: io.netty.util.AsciiString;
v := @parameter: io.netty.handler.codec.http.HpackUtil$IndexType;
virtualinvoke v.<io.netty.handler.codec.http.HpackDecoder$Http2HeadersSink: void appendToHeaderList(io.netty.util.AsciiString,io.netty.util.AsciiString)>(v, v);
v = <io.netty.handler.codec.http.HpackDecoder$1: int[] $SwitchMap$io$netty$handler$codec$http2$HpackUtil$IndexType>;
v = virtualinvoke v.<io.netty.handler.codec.http.HpackUtil$IndexType: int ordinal()>();
v = v[v];
tableswitch(v)
{
case 1: goto label;
case 2: goto label;
case 3: goto label;
default: goto label;
};
label:
v = v.<io.netty.handler.codec.http.HpackDecoder: io.netty.handler.codec.http.HpackDynamicTable hpackDynamicTable>;
v = new io.netty.handler.codec.http.HpackHeaderField;
specialinvoke v.<io.netty.handler.codec.http.HpackHeaderField: void <init>(java.lang.CharSequence,java.lang.CharSequence)>(v, v);
virtualinvoke v.<io.netty.handler.codec.http.HpackDynamicTable: void add(io.netty.handler.codec.http.HpackHeaderField)>(v);
goto label;
label:
v = new java.lang.Error;
specialinvoke v.<java.lang.Error: void <init>(java.lang.String)>("should not reach here");
throw v;
label:
return;
}
private io.netty.util.AsciiString readStringLiteral(io.netty.buffer.ByteBuf, int, boolean) throws io.netty.handler.codec.http.Http2Exception
{
byte[] v;
io.netty.handler.codec.http.HpackDecoder v;
io.netty.util.AsciiString v, v;
io.netty.buffer.ByteBuf v;
io.netty.handler.codec.http.HpackHuffmanDecoder v;
int v;
boolean v;
v := @this: io.netty.handler.codec.http.HpackDecoder;
v := @parameter: io.netty.buffer.ByteBuf;
v := @parameter: int;
v := @parameter: boolean;
if v == 0 goto label;
v = v.<io.netty.handler.codec.http.HpackDecoder: io.netty.handler.codec.http.HpackHuffmanDecoder huffmanDecoder>;
v = virtualinvoke v.<io.netty.handler.codec.http.HpackHuffmanDecoder: io.netty.util.AsciiString decode(io.netty.buffer.ByteBuf,int)>(v, v);
return v;
label:
v = newarray (byte)[v];
virtualinvoke v.<io.netty.buffer.ByteBuf: io.netty.buffer.ByteBuf readBytes(byte[])>(v);
v = new io.netty.util.AsciiString;
specialinvoke v.<io.netty.util.AsciiString: void <init>(byte[],boolean)>(v, 0);
return v;
}
private static java.lang.IllegalArgumentException notEnoughDataException(io.netty.buffer.ByteBuf)
{
java.lang.String v;
io.netty.buffer.ByteBuf v;
java.lang.IllegalArgumentException v;
v := @parameter: io.netty.buffer.ByteBuf;
v = new java.lang.IllegalArgumentException;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (io.netty.buffer.ByteBuf)>(v) <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("decode only works with an entire header block! \u0001");
specialinvoke v.<java.lang.IllegalArgumentException: void <init>(java.lang.String)>(v);
return v;
}
static int decodeULE128(io.netty.buffer.ByteBuf, int) throws io.netty.handler.codec.http.Http2Exception
{
byte v;
io.netty.buffer.ByteBuf v;
io.netty.handler.codec.http.Http2Exception v;
int v, v;
long v;
v := @parameter: io.netty.buffer.ByteBuf;
v := @parameter: int;
v = virtualinvoke v.<io.netty.buffer.ByteBuf: int readerIndex()>();
v = staticinvoke <io.netty.handler.codec.http.HpackDecoder: long decodeULE128(io.netty.buffer.ByteBuf,long)>(v, v);
v = v cmp 2147483647L;
if v <= 0 goto label;
virtualinvoke v.<io.netty.buffer.ByteBuf: io.netty.buffer.ByteBuf readerIndex(int)>(v);
v = <io.netty.handler.codec.http.HpackDecoder: io.netty.handler.codec.http.Http2Exception DECODE_ULE_128_TO_INT_DECOMPRESSION_EXCEPTION>;
throw v;
label:
return v;
}
static long decodeULE128(io.netty.buffer.ByteBuf, long) throws io.netty.handler.codec.http.Http2Exception
{
long v, v, v, v, v, v;
java.lang.AssertionError v;
short v, v;
byte v, v, v, v;
io.netty.buffer.ByteBuf v;
io.netty.handler.codec.http.Http2Exception v, v;
int v, v, v, v;
boolean v, v, v;
v := @parameter: io.netty.buffer.ByteBuf;
v := @parameter: long;
v = <io.netty.handler.codec.http.HpackDecoder: boolean $assertionsDisabled>;
if v != 0 goto label;
v = v cmp 127L;
if v > 0 goto label;
v = v cmp 0L;
if v >= 0 goto label;
label:
v = new java.lang.AssertionError;
specialinvoke v.<java.lang.AssertionError: void <init>()>();
throw v;
label:
v = v cmp 0L;
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
v = v;
v = virtualinvoke v.<io.netty.buffer.ByteBuf: int writerIndex()>();
v = virtualinvoke v.<io.netty.buffer.ByteBuf: int readerIndex()>();
v = 0;
label:
if v >= v goto label;
v = virtualinvoke v.<io.netty.buffer.ByteBuf: byte getByte(int)>(v);
if v != 56 goto label;
v = v & 128;
if v != 0 goto label;
if v != 127 goto label;
if v != 0 goto label;
label:
v = <io.netty.handler.codec.http.HpackDecoder: io.netty.handler.codec.http.Http2Exception DECODE_ULE_128_TO_LONG_DECOMPRESSION_EXCEPTION>;
throw v;
label:
v = v & 128;
if v != 0 goto label;
v = v + 1;
virtualinvoke v.<io.netty.buffer.ByteBuf: io.netty.buffer.ByteBuf readerIndex(int)>(v);
v = v & 127L;
v = v << v;
v = v + v;
return v;
label:
v = v & 127L;
v = v << v;
v = v + v;
v = v + 1;
v = v + 7;
goto label;
label:
v = <io.netty.handler.codec.http.HpackDecoder: io.netty.handler.codec.http.Http2Exception DECODE_ULE_128_DECOMPRESSION_EXCEPTION>;
throw v;
}
static void <clinit>()
{
io.netty.handler.codec.http.Http2Exception v, v, v, v, v, v, v, v;
boolean v, v;
io.netty.handler.codec.http.Http2Exception$ShutdownHint v, v, v, v, v, v, v, v;
io.netty.handler.codec.http.Http2Error v, v, v, v, v, v, v, v;
java.lang.Class v;
v = class "Lio/netty/handler/codec/http2/HpackDecoder;";
v = virtualinvoke v.<java.lang.Class: boolean desiredAssertionStatus()>();
if v != 0 goto label;
v = 1;
goto label;
label:
v = 0;
label:
<io.netty.handler.codec.http.HpackDecoder: boolean $assertionsDisabled> = v;
v = <io.netty.handler.codec.http.Http2Error: io.netty.handler.codec.http.Http2Error COMPRESSION_ERROR>;
v = <io.netty.handler.codec.http.Http2Exception$ShutdownHint: io.netty.handler.codec.http.Http2Exception$ShutdownHint HARD_SHUTDOWN>;
v = staticinvoke <io.netty.handler.codec.http.Http2Exception: io.netty.handler.codec.http.Http2Exception newStatic(io.netty.handler.codec.http.Http2Error,java.lang.String,io.netty.handler.codec.http.Http2Exception$ShutdownHint,java.lang.Class,java.lang.String)>(v, "HPACK - decompression failure", v, class "Lio/netty/handler/codec/http2/HpackDecoder;", "decodeULE128(..)");
<io.netty.handler.codec.http.HpackDecoder: io.netty.handler.codec.http.Http2Exception DECODE_ULE_128_DECOMPRESSION_EXCEPTION> = v;
v = <io.netty.handler.codec.http.Http2Error: io.netty.handler.codec.http.Http2Error COMPRESSION_ERROR>;
v = <io.netty.handler.codec.http.Http2Exception$ShutdownHint: io.netty.handler.codec.http.Http2Exception$ShutdownHint HARD_SHUTDOWN>;
v = staticinvoke <io.netty.handler.codec.http.Http2Exception: io.netty.handler.codec.http.Http2Exception newStatic(io.netty.handler.codec.http.Http2Error,java.lang.String,io.netty.handler.codec.http.Http2Exception$ShutdownHint,java.lang.Class,java.lang.String)>(v, "HPACK - long overflow", v, class "Lio/netty/handler/codec/http2/HpackDecoder;", "decodeULE128(..)");
<io.netty.handler.codec.http.HpackDecoder: io.netty.handler.codec.http.Http2Exception DECODE_ULE_128_TO_LONG_DECOMPRESSION_EXCEPTION> = v;
v = <io.netty.handler.codec.http.Http2Error: io.netty.handler.codec.http.Http2Error COMPRESSION_ERROR>;
v = <io.netty.handler.codec.http.Http2Exception$ShutdownHint: io.netty.handler.codec.http.Http2Exception$ShutdownHint HARD_SHUTDOWN>;
v = staticinvoke <io.netty.handler.codec.http.Http2Exception: io.netty.handler.codec.http.Http2Exception newStatic(io.netty.handler.codec.http.Http2Error,java.lang.String,io.netty.handler.codec.http.Http2Exception$ShutdownHint,java.lang.Class,java.lang.String)>(v, "HPACK - int overflow", v, class "Lio/netty/handler/codec/http2/HpackDecoder;", "decodeULE128ToInt(..)");
<io.netty.handler.codec.http.HpackDecoder: io.netty.handler.codec.http.Http2Exception DECODE_ULE_128_TO_INT_DECOMPRESSION_EXCEPTION> = v;
v = <io.netty.handler.codec.http.Http2Error: io.netty.handler.codec.http.Http2Error COMPRESSION_ERROR>;
v = <io.netty.handler.codec.http.Http2Exception$ShutdownHint: io.netty.handler.codec.http.Http2Exception$ShutdownHint HARD_SHUTDOWN>;
v = staticinvoke <io.netty.handler.codec.http.Http2Exception: io.netty.handler.codec.http.Http2Exception newStatic(io.netty.handler.codec.http.Http2Error,java.lang.String,io.netty.handler.codec.http.Http2Exception$ShutdownHint,java.lang.Class,java.lang.String)>(v, "HPACK - illegal index value", v, class "Lio/netty/handler/codec/http2/HpackDecoder;", "decode(..)");
<io.netty.handler.codec.http.HpackDecoder: io.netty.handler.codec.http.Http2Exception DECODE_ILLEGAL_INDEX_VALUE> = v;
v = <io.netty.handler.codec.http.Http2Error: io.netty.handler.codec.http.Http2Error COMPRESSION_ERROR>;
v = <io.netty.handler.codec.http.Http2Exception$ShutdownHint: io.netty.handler.codec.http.Http2Exception$ShutdownHint HARD_SHUTDOWN>;
v = staticinvoke <io.netty.handler.codec.http.Http2Exception: io.netty.handler.codec.http.Http2Exception newStatic(io.netty.handler.codec.http.Http2Error,java.lang.String,io.netty.handler.codec.http.Http2Exception$ShutdownHint,java.lang.Class,java.lang.String)>(v, "HPACK - illegal index value", v, class "Lio/netty/handler/codec/http2/HpackDecoder;", "indexHeader(..)");
<io.netty.handler.codec.http.HpackDecoder: io.netty.handler.codec.http.Http2Exception INDEX_HEADER_ILLEGAL_INDEX_VALUE> = v;
v = <io.netty.handler.codec.http.Http2Error: io.netty.handler.codec.http.Http2Error COMPRESSION_ERROR>;
v = <io.netty.handler.codec.http.Http2Exception$ShutdownHint: io.netty.handler.codec.http.Http2Exception$ShutdownHint HARD_SHUTDOWN>;
v = staticinvoke <io.netty.handler.codec.http.Http2Exception: io.netty.handler.codec.http.Http2Exception newStatic(io.netty.handler.codec.http.Http2Error,java.lang.String,io.netty.handler.codec.http.Http2Exception$ShutdownHint,java.lang.Class,java.lang.String)>(v, "HPACK - illegal index value", v, class "Lio/netty/handler/codec/http2/HpackDecoder;", "readName(..)");
<io.netty.handler.codec.http.HpackDecoder: io.netty.handler.codec.http.Http2Exception READ_NAME_ILLEGAL_INDEX_VALUE> = v;
v = <io.netty.handler.codec.http.Http2Error: io.netty.handler.codec.http.Http2Error COMPRESSION_ERROR>;
v = <io.netty.handler.codec.http.Http2Exception$ShutdownHint: io.netty.handler.codec.http.Http2Exception$ShutdownHint HARD_SHUTDOWN>;
v = staticinvoke <io.netty.handler.codec.http.Http2Exception: io.netty.handler.codec.http.Http2Exception newStatic(io.netty.handler.codec.http.Http2Error,java.lang.String,io.netty.handler.codec.http.Http2Exception$ShutdownHint,java.lang.Class,java.lang.String)>(v, "HPACK - invalid max dynamic table size", v, class "Lio/netty/handler/codec/http2/HpackDecoder;", "setDynamicTableSize(..)");
<io.netty.handler.codec.http.HpackDecoder: io.netty.handler.codec.http.Http2Exception INVALID_MAX_DYNAMIC_TABLE_SIZE> = v;
v = <io.netty.handler.codec.http.Http2Error: io.netty.handler.codec.http.Http2Error COMPRESSION_ERROR>;
v = <io.netty.handler.codec.http.Http2Exception$ShutdownHint: io.netty.handler.codec.http.Http2Exception$ShutdownHint HARD_SHUTDOWN>;
v = staticinvoke <io.netty.handler.codec.http.Http2Exception: io.netty.handler.codec.http.Http2Exception newStatic(io.netty.handler.codec.http.Http2Error,java.lang.String,io.netty.handler.codec.http.Http2Exception$ShutdownHint,java.lang.Class,java.lang.String)>(v, "HPACK - max dynamic table size change required", v, class "Lio/netty/handler/codec/http2/HpackDecoder;", "decode(..)");
<io.netty.handler.codec.http.HpackDecoder: io.netty.handler.codec.http.Http2Exception MAX_DYNAMIC_TABLE_SIZE_CHANGE_REQUIRED> = v;
return;
}
}