An open API service indexing awesome lists of open source software.

https://github.com/drkwitht/h2plus-http2-server

Attempt at creating an HTTP/2 server. WIP
https://github.com/drkwitht/h2plus-http2-server

cpp http2-server huffman-coding networking toy-project

Last synced: about 2 months ago
JSON representation

Attempt at creating an HTTP/2 server. WIP

Awesome Lists containing this project

README

        

# README

### Brief
A simple HTTP/2 cleartext server made with C++. The purpose of this project is to help myself learn more about the web, its HTTP protocol, and review C++. I do not intend this to be production ready at all and this will take some time to get working.

### WIP Screenshots

### Notes
- Only works on Unix-y systems because of the GNU Makefile.
- Create the bin and build folder at the project root for the build to work.
- Files in mains with names such as `test_*` are the unit tests.

### Todos
1. ~~Make special collections: BitArray, Prefix BT~~
2. ~~HPACK Huffman encoder & decoder.~~
3. ~~HPACK header indexing table (static, dynamic).~~
4. ~~HPACK string and integer encoder & decoder.~~
5. Make HPACK context class.
- Make unit tests with mock headers. See RFC 7541 5.2 for how the Huffman flag is put by the string length.
6. Make HTTP/2 streams and other utils.
- Make `Http2Stream`.
- Consider stream priority tree and algorithm...
- Make HTTP/2 `FrameScanner` and `FrameWriter`.
- Make `Http2Connection`.
7. Create server workers.
8. Create server driver.
9. Put together thread pool implementation.
10. Finish up driver class of server.
11. Test with cURL.

### Other Notes:
- Probably install and use the `s2n` SSL library because openssl is verbose.