Skip to content

vquic: add support for GnuTLS backend of ngtcp2 - #5148

Closed
ueno wants to merge 2 commits into
curl:masterfrom
ueno:wip/dueno/h3-gtls
Closed

ueno wants to merge 2 commits into
curl:masterfrom
ueno:wip/dueno/h3-gtls

Conversation

@ueno

@ueno ueno commented Mar 26, 2020 •

Copy link
Copy Markdown
Contributor

This can be built with the same steps as the ngtcp2 + OpenSSL procedure mentioned in docs/HTTP3.md, except:

  • gnutls (from the tmp-quic branch) needs to be installed instead
     % git clone https://gitlab.com/gnutls/gnutls.git
     % cd gnutls
     % git checkout tmp-quic
     % ./bootstrap
     % ./configure --prefix=<somewhere1> --disable-doc
     % make -j$(nproc)
     % make install
     % cd ..
     % git clone https://github.com/ueno/ngtcp2.git
     % cd ngtcp2
     % git checkout wip/dueno/crypto-gnutls
     % autoreconf -i
     % ./configure --prefix=<somewhere2> --enable-lib-only
     % make -j$(nproc)
     % make install
  • curl must be configured with --with-gnutls instead of --with-ssl
     % cd ..
     % git clone https://github.com/curl/curl
     % cd curl
     % ./buildconf
     % LDFLAGS="-Wl,-rpath,<somewhere1>/lib" ./configure --without-ssl --with-gnutls=<somewhere1> --with-nghttp3=<somewhere2> --with-ngtcp2=<somewhere3> --enable-alt-svc
     % make

Currently, the TLS backend used by vquic/ngtcp2.c is selected at compile time. Therefore OpenSSL support needs to be explicitly disabled.

@bagder

bagder commented Mar 26, 2020

Copy link
Copy Markdown
Member

Lovely! Can you also update docs/HTTP3.md with these how-to details?

Do you have any ideas or guesses on when we can hope for this work to be merged into the master branches of GnuTLS and ngtcp2?

It think it also makes sense to create a CI job that verifies the build, in the same spirit as the existing ngtcp2-openssl build is done. We can of course do that as a second follow-up PR.

@ueno
ueno force-pushed the wip/dueno/h3-gtls branch from 53aa589 to 605f10e Compare March 28, 2020 08:34
@tatsuhiro-t

Copy link
Copy Markdown
Contributor

I just merged GnuTLS support into ngtcp2.

@ueno
ueno force-pushed the wip/dueno/h3-gtls branch from 605f10e to 2ef19f4 Compare March 30, 2020 09:01
@ueno

ueno commented Mar 30, 2020

Copy link
Copy Markdown
Contributor Author

Thank you; updated the patches with the suggested changes.

@ueno
ueno force-pushed the wip/dueno/h3-gtls branch from 2ef19f4 to 568eb40 Compare March 30, 2020 11:25
@bagder

bagder commented Mar 30, 2020

Copy link
Copy Markdown
Member

Maybe you could/should make a separate PR for db45199 first to fix #5166 independently? Or does it make more sense to fix it within this PR?

@ueno

ueno commented Mar 30, 2020

Copy link
Copy Markdown
Contributor Author

Sure, filed a separate PR as #5168.

Currently, the TLS backend used by vquic/ngtcp2.c is selected at
compile time.  Therefore OpenSSL support needs to be explicitly
disabled.

Signed-off-by: Daiki Ueno <dueno@redhat.com>
@ueno
ueno force-pushed the wip/dueno/h3-gtls branch 6 times, most recently from f692bb8 to ded8586 Compare March 31, 2020 03:54
@ueno
ueno force-pushed the wip/dueno/h3-gtls branch from ded8586 to c3ed0fe Compare March 31, 2020 05:11
@ueno

ueno commented Mar 31, 2020

Copy link
Copy Markdown
Contributor Author

The build in Travis CI seems to have succeeded (finally): https://travis-ci.org/github/curl/curl/jobs/669087295

@bagder bagder closed this in 0736ee7 Mar 31, 2020
@bagder

bagder commented Mar 31, 2020

Copy link
Copy Markdown
Member

Thank you!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants