Hpack Module
HPACK compression format (largely coppied from Haskell's HTTP2 package)
Types
Functions and values
| Function or value | Description |
|
|
Full Usage:
adj maxN x
Parameters:
int
x : int
Returns: int
|
|
|
|
Full Usage:
chkChange dyntbl rbuf dec
Parameters:
DynamicTable
rbuf : MemoryStream
dec : DynamicTable -> MemoryStream -> HeaderList
Returns: HeaderList
|
|
|
|
|
|
Full Usage:
decodeHPACK dyntbl inp dec
Parameters:
DynamicTable
inp : byte array
dec : DynamicTable -> MemoryStream -> HeaderList
Returns: HeaderList
|
|
Full Usage:
decodeHeader dyntbl inp
Parameters:
DynamicTable
inp : byte array
Returns: HeaderList
|
|
Full Usage:
decodeHeaderBounded dyntbl maxListSize inp
Parameters:
DynamicTable
maxListSize : int option
inp : byte array
Returns: HeaderList
|
|
Full Usage:
decodeSimple dyntbl rbuf
Parameters:
DynamicTable
rbuf : MemoryStream
Returns: HeaderList
|
|
Full Usage:
decodeSimpleBounded dyntbl maxListSize rbuf
Parameters:
DynamicTable
maxListSize : int option
rbuf : MemoryStream
Returns: HeaderList
|
Decode a header block while enforcing the HPACK list-size budget.
`maxListSize`:
* `None` — unbounded (legacy behaviour, used by some tests).
* `Some bytes` — abort with `HpackHeaderListTooLargeException` as soon
as the cumulative `name + value + 32` (per RFC 7541
§4.1) of every header decoded so far exceeds `bytes`.
The check is performed *during* decoding so that an attacker cannot
force the server to fully decode (and allocate) a multi-megabyte header
list before we notice. We still pay for the headers decoded up to the
trip point; the bound chosen by the caller (typically a few tens of
kilobytes) keeps that worst case finite.
|
Full Usage:
decodeString huff decoder rbuf len
Parameters:
bool
decoder : HuffmanDecoding
rbuf : MemoryStream
len : int
Returns: byte[]
|
|
Full Usage:
defaultDynamicTableSize
Returns: int
|
|
|
|
Full Usage:
deleteDynamicRevIndex t v drev
Parameters:
Token
v : HeaderValue
drev : DynamicRevIndex
|
|
|
|
|
|
|
|
Full Usage:
dropHuffman w
Parameters:
byte
Returns: byte
|
|
|
|
Full Usage:
encodeHeader strategy size dyntbl hl
Parameters:
EncodeStrategy
size : int
dyntbl : DynamicTable
hl : HeaderList
Returns: byte array
|
|
Full Usage:
encodeHeader' strategy size dyntbl hl
Parameters:
EncodeStrategy
size : int
dyntbl : DynamicTable
hl : TokenHeaderList
Returns: byte array
|
|
|
|
Full Usage:
encodeString useHuffman str wbuf
Parameters:
bool
str : string
wbuf : MemoryStream
|
|
Full Usage:
encodeTokenHeader wbuf size strategy first dyntbl hl
Parameters:
MemoryStream
size : 'a
strategy : EncodeStrategy
first : bool
dyntbl : DynamicTable
hl : TokenHeaderList
Returns: TokenHeaderList * int
|
|
|
|
|
|
Full Usage:
extractByteString rbuf len
Parameters:
MemoryStream
len : int
Returns: byte array
|
|
Full Usage:
fromHIndexToIndex dyntbl _arg1
Parameters:
DynamicTable
_arg1 : HIndex
Returns: int
|
|
|
|
Full Usage:
groupBy eq
Parameters:
'a -> 'a -> bool
Returns: 'a list -> 'a list list
|
|
|
|
|
|
Full Usage:
headerSizeMagicNumber
Returns: int
|
|
Full Usage:
headerStuff dyntbl rbuf
Parameters:
DynamicTable
rbuf : MemoryStream
Returns: byte[]
|
|
Full Usage:
huffmanDecoder dyntbl
Parameters:
DynamicTable
Returns: MemoryStream -> int -> byte[]
|
|
Full Usage:
incrementalIndexing dyntbl w rbuf
Parameters:
DynamicTable
w : byte
rbuf : MemoryStream
Returns: TokenHeader
|
|
|
|
Full Usage:
indexed dyntbl w rbuf
Parameters:
DynamicTable
w : byte
rbuf : MemoryStream
Returns: TokenHeader
|
|
Full Usage:
indexedHeaderField dyntbl wbuf arg3 hidx
Parameters:
DynamicTable
wbuf : MemoryStream
arg2 : 'a
hidx : HIndex
|
|
Full Usage:
indexedName wbuf huff n set v idx
Parameters:
MemoryStream
huff : bool
n : int
set : Setter
v : string
idx : int
|
|
Full Usage:
inserIndexedName dyntbl w rbuf n mask
Parameters:
DynamicTable
w : byte
rbuf : MemoryStream
n : int
mask : byte -> byte
Returns: Token * string
|
|
|
|
Full Usage:
insertNewName dyntbl rbuf
Parameters:
DynamicTable
rbuf : MemoryStream
Returns: Token * string
|
|
Full Usage:
integerLength n
Parameters:
int
Returns: int
|
|
Full Usage:
isHuffman w
Parameters:
byte
Returns: bool
|
|
Full Usage:
isIndexedName1 w
Parameters:
byte
Returns: bool
|
|
Full Usage:
isIndexedName2 w
Parameters:
byte
Returns: bool
|
|
|
|
|
|
Full Usage:
isTableSizeUpdate w
Parameters:
byte
Returns: bool
|
|
Full Usage:
isset x i
Parameters:
byte
i : int32
Returns: bool
|
|
Full Usage:
linearAlgorithm rev fa fb fc fd t v
Parameters:
RevIndex
fa : HIndex -> unit
fb : HeaderValue -> Entry -> HIndex -> unit
fc : string -> HeaderValue -> Entry -> unit
fd : HeaderValue -> HIndex -> unit
t : Token
v : HeaderValue
|
|
Full Usage:
literalHeaderFieldWithIncrementalIndexingIndexedName dyntbl wbuf huff v ent hidx
Parameters:
DynamicTable
wbuf : MemoryStream
huff : bool
v : string
ent : Entry
hidx : HIndex
|
|
Full Usage:
literalHeaderFieldWithIncrementalIndexingNewName dyntbl wbuf huff k v ent
Parameters:
DynamicTable
wbuf : MemoryStream
huff : bool
k : string
v : string
ent : Entry
|
|
Full Usage:
literalHeaderFieldWithoutIndexingIndexedName dyntbl wbuf huff v hidx
Parameters:
DynamicTable
wbuf : MemoryStream
huff : bool
v : string
hidx : HIndex
|
|
Full Usage:
literalHeaderFieldWithoutIndexingNewName arg1 wbuf huff k v
Parameters:
'a
wbuf : MemoryStream
huff : bool
k : string
v : string
|
|
Full Usage:
literalHeaderFieldWithoutIndexingNewName' arg1 wbuf huff k v
Parameters:
'a
wbuf : MemoryStream
huff : bool
k : string
v : string
|
|
Full Usage:
lookupDynamicStaticRevIndex ix v drev fa' fbd'
Parameters:
int
v : HeaderValue
drev : DynamicRevIndex
fa' : HIndex -> unit
fbd' : HIndex -> unit
|
|
Full Usage:
lookupOtherRevIndex (k, v) ref fa' fc'
Parameters:
HeaderName
v : HeaderValue
ref : OtherRevIndex
fa' : HIndex -> 'a
fc' : 'a
Returns: 'a
|
|
Full Usage:
lookupRevIndex t v fa fb fc fd arg7
Parameters:
Token
v : HeaderValue
fa : HIndex -> unit
fb : HeaderValue -> Entry -> HIndex -> unit
fc : string -> HeaderValue -> Entry -> unit
fd : HeaderValue -> HIndex -> unit
arg6 : RevIndex
|
|
Full Usage:
lookupRevIndex' t v fa fd fe
Parameters:
Token
v : HeaderValue
fa : HIndex -> unit
fd : HeaderValue -> HIndex -> unit
fe : string -> HeaderValue -> unit
|
|
Full Usage:
lookupStaticRevIndex ix v fa' fbd
Parameters:
int
v : HeaderValue
fa' : HIndex -> unit
fbd : HIndex -> unit
|
|
Full Usage:
mask4 w
Parameters:
byte
Returns: byte
|
|
Full Usage:
mask5 w
Parameters:
byte
Returns: byte
|
|
Full Usage:
mask6 w
Parameters:
byte
Returns: byte
|
|
Full Usage:
maxStaticTokenIndex
Returns: int
|
|
Full Usage:
maxTokenIndex
Returns: int
|
|
Full Usage:
minTokenIx
Returns: int
|
|
Full Usage:
mkToken index shouldIndex isPseudo tokenKey
Parameters:
int
shouldIndex : bool
isPseudo : bool
tokenKey : string
Returns: Token
|
|
|
|
|
|
Full Usage:
neverIndexing dyntbl w rbuf
Parameters:
DynamicTable
w : byte
rbuf : MemoryStream
Returns: TokenHeader
|
|
Full Usage:
newName wbuf huff set k v
Parameters:
MemoryStream
huff : bool
set : Setter
k : string
v : string
|
|
Full Usage:
powerArray
Returns: byte[]
|
|
Full Usage:
prepend b y
Parameters:
'a
y : 'a list
Returns: 'a list
|
|
|
|
Full Usage:
renewDynamicTable size dyntbl
Parameters:
'a
dyntbl : 'b
Returns: 'b
|
|
|
|
Full Usage:
set0000
Returns: 'a -> 'a
|
|
Full Usage:
set0001 x
Parameters:
byte
Returns: byte
|
|
Full Usage:
set001 x
Parameters:
byte
Returns: byte
|
|
Full Usage:
set01 x
Parameters:
byte
Returns: byte
|
|
Full Usage:
set1 x
Parameters:
byte
Returns: byte
|
|
Full Usage:
setH
Returns: byte -> byte
|
|
|
|
|
|
Full Usage:
span p
Parameters:
'a -> bool
Returns: 'a list -> 'a list * 'a list
|
|
Full Usage:
staticAlgorithm fa fd fe t v
Parameters:
HIndex -> unit
fd : HeaderValue -> HIndex -> unit
fe : string -> HeaderValue -> unit
t : Token
v : HeaderValue
|
|
|
|
|
|
|
|
|
|
Full Usage:
staticTableSize
Returns: int
|
|
Full Usage:
tableSizeUpdate dyntbl w rbuf
Parameters:
DynamicTable
w : Byte
rbuf : MemoryStream
Returns: DynamicTable
|
|
|
|
Full Usage:
toEnt (k, xs)
Parameters:
HeaderValue
xs : (string * HIndex) list
Returns: int * StaticEntry
|
|
|
|
|
|
|
|
|
|
|
|
Full Usage:
toTokenHeader dyntbl w rbuf
Parameters:
DynamicTable
w : byte
rbuf : MemoryStream
Returns: TokenHeader
|
|
Full Usage:
toTokenHeaderList hl
Parameters:
(HeaderValue * 'a) list
Returns: (Token * 'a) list
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Full Usage:
useHuffman
Returns: bool
|
|
Full Usage:
withoutIndexing dyntbl w rbuf
Parameters:
DynamicTable
w : byte
rbuf : MemoryStream
Returns: TokenHeader
|
|