1# ngtcp2 and nghttp3 2 3The ngtcp2 and nghttp3 dependencies provide the core functionality for 4QUIC and HTTP/3. 5 6The sources are pulled from: 7 8* ngtcp2: https://github.com/ngtcp2/ngtcp2 9* nghttp3: https://github.com/ngtcp2/nghttp3 10 11In both the `ngtcp2` and `nghttp3` git repos, the active development occurs 12in the default branch (currently named `main` in each). Tagged versions do not 13always point to the default branch. 14 15We only use a subset of the sources for each. 16 17## Updating 18 19The `nghttp3` library depends on `ngtcp2`. Both should always be updated 20together. From `ngtcp2` we only want the contents of the `lib` and `crypto` 21directories; from `nghttp3` we only want the contents of the `lib` directory. 22 23After updating either dependency, check if any source files or include 24directories have been added or removed and update `ngtcp2.gyp` accordingly. 25 26### Updating ngtcp2 27 28To update ngtcp2, replace `v0.8.1` with the desired git tag: 29 30```sh 31$ git clone --depth=1 --branch=v0.8.1 https://github.com/ngtcp2/ngtcp2 32$ cd ngtcp2 33$ autoreconf -i 34$ ./configure --prefix=$PWD/build --enable-lib-only 35$ cp -R lib/* ../node/deps/ngtcp2/ngtcp2/lib/ 36$ cp -R crypto/* ../node/deps/ngtcp2/ngtcp2/crypto/ 37``` 38 39### Updating nghttp3 40 41To update nghttp3, replace `v0.7.0` with the desired git tag: 42 43```sh 44$ git clone --depth=1 --branch=v0.7.0 https://github.com/ngtcp2/nghttp3 45$ cd nghttp3 46$ autoreconf -i 47$ ./configure --prefix=$PWD/build --enable-lib-only 48$ cp -R lib/* ../node/deps/ngtcp2/nghttp3/lib/ 49``` 50