]> gitweb.factorcode.org Git - factor.git/commit
HPack for HTTP/2 (#2447)
authorDavid Mindlin <davidmindlin4@gmail.com>
Sun, 4 Apr 2021 04:29:12 +0000 (21:29 -0700)
committerGitHub <noreply@github.com>
Sun, 4 Apr 2021 04:29:12 +0000 (21:29 -0700)
commitc10dd8201b44d1a8f70c89d201e10894e69ef42b
tree956ecc17cb90f624e0ab18d3efbda5bb43da5b80
parent149f71dc0b3cf01fbfc1970ce3c69572c33f79a6
HPack for HTTP/2 (#2447)

* created framework for hpack

* Started working on decoding hpack.

* Creating helper words for hpack decoding.

* Continued work on hpack, finished static table.

* Small updates to hpack

* Some rearranging and implementing string and integer decoding.

* Refactored the integer method, and added some of the gluing together
code for decoding hpack.

* Added some tests for the string and integer decoding of hpack.

* Added some more tests for hpack decoding

* Added dynamic-table managment to hpack decoding.

* Added some errors for hpack decoding

* Added an additional test from the rfc for hpack decoding.

* ain function for hpack encode, trying to make similar to decode

* Quick fix to hpack-decode and clean up for the test file.

* Compilation changes

* Changed to use utf 8 decoding for strings in hpack decoding.

* Renamed decode-context to hpack-context, and moved all the definitions
to one place.

* removed unnecessary function

* Created hpack string and integer encoding.
Also minor optimization to integer decoding.

* Updated default hpack dynamic table max size.

* Fixed off by 1 error in indexing, and changed the output object to an
array.

* Added some large tests for the hpack-decode word.

* Small refactoring of hpack decode-string.

* working on encode

* changed encode stack effect

* Minor update to hpack integer encoding for consistent output data
structure

* Added tests for hpack encoding, including integers, strings, individual
fields, and entire header block sequences.
Integers and strings checks the outputed byte array
individual fields and header lists checks by decoding and ensuring the
same result out, and checking that the contexts (dynamic tables) are the
same.
Individual fields also check that the entire block is consumed.

* main encode function

* table searching

* Some minor rewrites for better style in hpack code.

* Some more code edits for style to hpack context handling.

* Added huffman compression decoding for strings in hpack.
The implementation may not be the fastest, but it works.

* Implemented huffman encoding for hpack strings

* working on encode

* completed hpack encode

* Some improvements to hpack huffman decoding for style and performance
improvements.

* Cleaned up hpack encoding and decoding.

* Added new version of decoding an hpack encoded integer.

* Minor changes to decoding huffman encoded strings so the file compiles
correctly on first load.

* Minor change to hpack huffman compression.

* Added some light documentation for the hpack vocabulary.

Co-authored-by: David Flores <dflores0818@gmail.com>
basis/http2/hpack/hpack-docs.factor [new file with mode: 0644]
basis/http2/hpack/hpack-tests.factor [new file with mode: 0644]
basis/http2/hpack/hpack.factor [new file with mode: 0644]
basis/http2/hpack/huffman/huffman.factor [new file with mode: 0644]