protocol-quic 0.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +0 -0
- data/ext/ngtcp2/AUTHORS +44 -0
- data/ext/ngtcp2/CMakeLists.txt +431 -0
- data/ext/ngtcp2/CMakeOptions.txt +17 -0
- data/ext/ngtcp2/COPYING +22 -0
- data/ext/ngtcp2/ChangeLog +0 -0
- data/ext/ngtcp2/Makefile.am +60 -0
- data/ext/ngtcp2/NEWS +0 -0
- data/ext/ngtcp2/README +1 -0
- data/ext/ngtcp2/README.rst +258 -0
- data/ext/ngtcp2/ci/build_boringssl.sh +10 -0
- data/ext/ngtcp2/ci/build_nghttp3.sh +9 -0
- data/ext/ngtcp2/ci/build_openssl1.sh +8 -0
- data/ext/ngtcp2/ci/build_openssl1_cross.sh +9 -0
- data/ext/ngtcp2/ci/build_openssl3.sh +8 -0
- data/ext/ngtcp2/ci/build_picotls.sh +26 -0
- data/ext/ngtcp2/ci/build_wolfssl.sh +9 -0
- data/ext/ngtcp2/ci/gen-certificate.sh +8 -0
- data/ext/ngtcp2/cmake/ExtractValidFlags.cmake +31 -0
- data/ext/ngtcp2/cmake/FindCUnit.cmake +40 -0
- data/ext/ngtcp2/cmake/FindJemalloc.cmake +40 -0
- data/ext/ngtcp2/cmake/FindLibev.cmake +38 -0
- data/ext/ngtcp2/cmake/FindLibnghttp3.cmake +41 -0
- data/ext/ngtcp2/cmake/Findwolfssl.cmake +41 -0
- data/ext/ngtcp2/cmake/Version.cmake +11 -0
- data/ext/ngtcp2/cmakeconfig.h.in +36 -0
- data/ext/ngtcp2/configure.ac +755 -0
- data/ext/ngtcp2/crypto/CMakeLists.txt +56 -0
- data/ext/ngtcp2/crypto/Makefile.am +49 -0
- data/ext/ngtcp2/crypto/boringssl/CMakeLists.txt +64 -0
- data/ext/ngtcp2/crypto/boringssl/Makefile.am +39 -0
- data/ext/ngtcp2/crypto/boringssl/boringssl.c +630 -0
- data/ext/ngtcp2/crypto/boringssl/libngtcp2_crypto_boringssl.pc.in +33 -0
- data/ext/ngtcp2/crypto/gnutls/CMakeLists.txt +86 -0
- data/ext/ngtcp2/crypto/gnutls/Makefile.am +43 -0
- data/ext/ngtcp2/crypto/gnutls/gnutls.c +644 -0
- data/ext/ngtcp2/crypto/gnutls/libngtcp2_crypto_gnutls.pc.in +33 -0
- data/ext/ngtcp2/crypto/includes/CMakeLists.txt +56 -0
- data/ext/ngtcp2/crypto/includes/Makefile.am +45 -0
- data/ext/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto.h +893 -0
- data/ext/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto_boringssl.h +104 -0
- data/ext/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto_gnutls.h +107 -0
- data/ext/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto_openssl.h +132 -0
- data/ext/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto_picotls.h +246 -0
- data/ext/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto_wolfssl.h +106 -0
- data/ext/ngtcp2/crypto/openssl/CMakeLists.txt +86 -0
- data/ext/ngtcp2/crypto/openssl/Makefile.am +43 -0
- data/ext/ngtcp2/crypto/openssl/libngtcp2_crypto_openssl.pc.in +33 -0
- data/ext/ngtcp2/crypto/openssl/openssl.c +807 -0
- data/ext/ngtcp2/crypto/picotls/CMakeLists.txt +65 -0
- data/ext/ngtcp2/crypto/picotls/Makefile.am +39 -0
- data/ext/ngtcp2/crypto/picotls/libngtcp2_crypto_picotls.pc.in +33 -0
- data/ext/ngtcp2/crypto/picotls/picotls.c +707 -0
- data/ext/ngtcp2/crypto/shared.c +1431 -0
- data/ext/ngtcp2/crypto/shared.h +350 -0
- data/ext/ngtcp2/crypto/wolfssl/CMakeLists.txt +84 -0
- data/ext/ngtcp2/crypto/wolfssl/Makefile.am +43 -0
- data/ext/ngtcp2/crypto/wolfssl/libngtcp2_crypto_wolfssl.pc.in +33 -0
- data/ext/ngtcp2/crypto/wolfssl/wolfssl.c +534 -0
- data/ext/ngtcp2/doc/Makefile.am +65 -0
- data/ext/ngtcp2/doc/make.bat +35 -0
- data/ext/ngtcp2/doc/mkapiref.py +356 -0
- data/ext/ngtcp2/doc/source/conf.py.in +94 -0
- data/ext/ngtcp2/doc/source/index.rst +22 -0
- data/ext/ngtcp2/doc/source/programmers-guide.rst +476 -0
- data/ext/ngtcp2/docker/Dockerfile +39 -0
- data/ext/ngtcp2/examples/CMakeLists.txt +361 -0
- data/ext/ngtcp2/examples/Makefile.am +228 -0
- data/ext/ngtcp2/examples/client.cc +3049 -0
- data/ext/ngtcp2/examples/client.h +192 -0
- data/ext/ngtcp2/examples/client_base.cc +202 -0
- data/ext/ngtcp2/examples/client_base.h +213 -0
- data/ext/ngtcp2/examples/debug.cc +298 -0
- data/ext/ngtcp2/examples/debug.h +124 -0
- data/ext/ngtcp2/examples/examplestest.cc +84 -0
- data/ext/ngtcp2/examples/gtlssimpleclient.c +720 -0
- data/ext/ngtcp2/examples/h09client.cc +2601 -0
- data/ext/ngtcp2/examples/h09client.h +196 -0
- data/ext/ngtcp2/examples/h09server.cc +3024 -0
- data/ext/ngtcp2/examples/h09server.h +237 -0
- data/ext/ngtcp2/examples/http.cc +138 -0
- data/ext/ngtcp2/examples/http.h +44 -0
- data/ext/ngtcp2/examples/network.h +80 -0
- data/ext/ngtcp2/examples/server.cc +3731 -0
- data/ext/ngtcp2/examples/server.h +256 -0
- data/ext/ngtcp2/examples/server_base.cc +58 -0
- data/ext/ngtcp2/examples/server_base.h +195 -0
- data/ext/ngtcp2/examples/shared.cc +385 -0
- data/ext/ngtcp2/examples/shared.h +96 -0
- data/ext/ngtcp2/examples/simpleclient.c +683 -0
- data/ext/ngtcp2/examples/template.h +71 -0
- data/ext/ngtcp2/examples/tests/README.rst +60 -0
- data/ext/ngtcp2/examples/tests/__init__.py +0 -0
- data/ext/ngtcp2/examples/tests/config.ini.in +32 -0
- data/ext/ngtcp2/examples/tests/conftest.py +28 -0
- data/ext/ngtcp2/examples/tests/ngtcp2test/__init__.py +6 -0
- data/ext/ngtcp2/examples/tests/ngtcp2test/certs.py +476 -0
- data/ext/ngtcp2/examples/tests/ngtcp2test/client.py +187 -0
- data/ext/ngtcp2/examples/tests/ngtcp2test/env.py +191 -0
- data/ext/ngtcp2/examples/tests/ngtcp2test/log.py +101 -0
- data/ext/ngtcp2/examples/tests/ngtcp2test/server.py +137 -0
- data/ext/ngtcp2/examples/tests/ngtcp2test/tls.py +983 -0
- data/ext/ngtcp2/examples/tests/test_01_handshake.py +30 -0
- data/ext/ngtcp2/examples/tests/test_02_resume.py +46 -0
- data/ext/ngtcp2/examples/tests/test_03_earlydata.py +56 -0
- data/ext/ngtcp2/examples/tests/test_04_clientcert.py +57 -0
- data/ext/ngtcp2/examples/tests/test_05_ciphers.py +46 -0
- data/ext/ngtcp2/examples/tls_client_context.h +52 -0
- data/ext/ngtcp2/examples/tls_client_context_boringssl.cc +126 -0
- data/ext/ngtcp2/examples/tls_client_context_boringssl.h +49 -0
- data/ext/ngtcp2/examples/tls_client_context_gnutls.cc +74 -0
- data/ext/ngtcp2/examples/tls_client_context_gnutls.h +50 -0
- data/ext/ngtcp2/examples/tls_client_context_openssl.cc +137 -0
- data/ext/ngtcp2/examples/tls_client_context_openssl.h +49 -0
- data/ext/ngtcp2/examples/tls_client_context_picotls.cc +158 -0
- data/ext/ngtcp2/examples/tls_client_context_picotls.h +53 -0
- data/ext/ngtcp2/examples/tls_client_context_wolfssl.cc +177 -0
- data/ext/ngtcp2/examples/tls_client_context_wolfssl.h +51 -0
- data/ext/ngtcp2/examples/tls_client_session.h +52 -0
- data/ext/ngtcp2/examples/tls_client_session_boringssl.cc +110 -0
- data/ext/ngtcp2/examples/tls_client_session_boringssl.h +52 -0
- data/ext/ngtcp2/examples/tls_client_session_gnutls.cc +190 -0
- data/ext/ngtcp2/examples/tls_client_session_gnutls.h +52 -0
- data/ext/ngtcp2/examples/tls_client_session_openssl.cc +113 -0
- data/ext/ngtcp2/examples/tls_client_session_openssl.h +52 -0
- data/ext/ngtcp2/examples/tls_client_session_picotls.cc +147 -0
- data/ext/ngtcp2/examples/tls_client_session_picotls.h +52 -0
- data/ext/ngtcp2/examples/tls_client_session_wolfssl.cc +160 -0
- data/ext/ngtcp2/examples/tls_client_session_wolfssl.h +52 -0
- data/ext/ngtcp2/examples/tls_server_context.h +52 -0
- data/ext/ngtcp2/examples/tls_server_context_boringssl.cc +257 -0
- data/ext/ngtcp2/examples/tls_server_context_boringssl.h +54 -0
- data/ext/ngtcp2/examples/tls_server_context_gnutls.cc +99 -0
- data/ext/ngtcp2/examples/tls_server_context_gnutls.h +59 -0
- data/ext/ngtcp2/examples/tls_server_context_openssl.cc +338 -0
- data/ext/ngtcp2/examples/tls_server_context_openssl.h +54 -0
- data/ext/ngtcp2/examples/tls_server_context_picotls.cc +321 -0
- data/ext/ngtcp2/examples/tls_server_context_picotls.h +58 -0
- data/ext/ngtcp2/examples/tls_server_context_wolfssl.cc +284 -0
- data/ext/ngtcp2/examples/tls_server_context_wolfssl.h +55 -0
- data/ext/ngtcp2/examples/tls_server_session.h +52 -0
- data/ext/ngtcp2/examples/tls_server_session_boringssl.cc +84 -0
- data/ext/ngtcp2/examples/tls_server_session_boringssl.h +47 -0
- data/ext/ngtcp2/examples/tls_server_session_gnutls.cc +155 -0
- data/ext/ngtcp2/examples/tls_server_session_gnutls.h +46 -0
- data/ext/ngtcp2/examples/tls_server_session_openssl.cc +54 -0
- data/ext/ngtcp2/examples/tls_server_session_openssl.h +47 -0
- data/ext/ngtcp2/examples/tls_server_session_picotls.cc +70 -0
- data/ext/ngtcp2/examples/tls_server_session_picotls.h +47 -0
- data/ext/ngtcp2/examples/tls_server_session_wolfssl.cc +55 -0
- data/ext/ngtcp2/examples/tls_server_session_wolfssl.h +47 -0
- data/ext/ngtcp2/examples/tls_session_base_gnutls.cc +87 -0
- data/ext/ngtcp2/examples/tls_session_base_gnutls.h +51 -0
- data/ext/ngtcp2/examples/tls_session_base_openssl.cc +54 -0
- data/ext/ngtcp2/examples/tls_session_base_openssl.h +52 -0
- data/ext/ngtcp2/examples/tls_session_base_picotls.cc +56 -0
- data/ext/ngtcp2/examples/tls_session_base_picotls.h +54 -0
- data/ext/ngtcp2/examples/tls_session_base_wolfssl.cc +54 -0
- data/ext/ngtcp2/examples/tls_session_base_wolfssl.h +54 -0
- data/ext/ngtcp2/examples/tls_shared_picotls.cc +59 -0
- data/ext/ngtcp2/examples/tls_shared_picotls.h +36 -0
- data/ext/ngtcp2/examples/util.cc +646 -0
- data/ext/ngtcp2/examples/util.h +361 -0
- data/ext/ngtcp2/examples/util_gnutls.cc +136 -0
- data/ext/ngtcp2/examples/util_openssl.cc +131 -0
- data/ext/ngtcp2/examples/util_test.cc +237 -0
- data/ext/ngtcp2/examples/util_test.h +45 -0
- data/ext/ngtcp2/examples/util_wolfssl.cc +130 -0
- data/ext/ngtcp2/fuzz/corpus/decode_frame/ack +0 -0
- data/ext/ngtcp2/fuzz/corpus/decode_frame/ack_ecn +0 -0
- data/ext/ngtcp2/fuzz/corpus/decode_frame/connection_close +0 -0
- data/ext/ngtcp2/fuzz/corpus/decode_frame/crypto +1 -0
- data/ext/ngtcp2/fuzz/corpus/decode_frame/data_blocked +1 -0
- data/ext/ngtcp2/fuzz/corpus/decode_frame/datagram +1 -0
- data/ext/ngtcp2/fuzz/corpus/decode_frame/datagram_len +1 -0
- data/ext/ngtcp2/fuzz/corpus/decode_frame/max_data +1 -0
- data/ext/ngtcp2/fuzz/corpus/decode_frame/max_stream_data +0 -0
- data/ext/ngtcp2/fuzz/corpus/decode_frame/max_streams +0 -0
- data/ext/ngtcp2/fuzz/corpus/decode_frame/new_connection_id +1 -0
- data/ext/ngtcp2/fuzz/corpus/decode_frame/new_token +1 -0
- data/ext/ngtcp2/fuzz/corpus/decode_frame/path_challenge +1 -0
- data/ext/ngtcp2/fuzz/corpus/decode_frame/path_response +1 -0
- data/ext/ngtcp2/fuzz/corpus/decode_frame/reset_stream +0 -0
- data/ext/ngtcp2/fuzz/corpus/decode_frame/retire_connection_id +1 -0
- data/ext/ngtcp2/fuzz/corpus/decode_frame/stop_sending +0 -0
- data/ext/ngtcp2/fuzz/corpus/decode_frame/stream +0 -0
- data/ext/ngtcp2/fuzz/corpus/decode_frame/stream_data_blocked +0 -0
- data/ext/ngtcp2/fuzz/corpus/decode_frame/stream_len +0 -0
- data/ext/ngtcp2/fuzz/corpus/decode_frame/streams_blocked +0 -0
- data/ext/ngtcp2/fuzz/corpus/ksl/random +0 -0
- data/ext/ngtcp2/fuzz/decode_frame.cc +25 -0
- data/ext/ngtcp2/fuzz/ksl.cc +77 -0
- data/ext/ngtcp2/interop/Dockerfile +39 -0
- data/ext/ngtcp2/interop/run_endpoint.sh +93 -0
- data/ext/ngtcp2/lib/CMakeLists.txt +110 -0
- data/ext/ngtcp2/lib/Makefile.am +122 -0
- data/ext/ngtcp2/lib/includes/CMakeLists.txt +4 -0
- data/ext/ngtcp2/lib/includes/Makefile.am +25 -0
- data/ext/ngtcp2/lib/includes/ngtcp2/ngtcp2.h +5843 -0
- data/ext/ngtcp2/lib/includes/ngtcp2/version.h.in +51 -0
- data/ext/ngtcp2/lib/libngtcp2.pc.in +33 -0
- data/ext/ngtcp2/lib/ngtcp2_acktr.c +335 -0
- data/ext/ngtcp2/lib/ngtcp2_acktr.h +221 -0
- data/ext/ngtcp2/lib/ngtcp2_addr.c +117 -0
- data/ext/ngtcp2/lib/ngtcp2_addr.h +69 -0
- data/ext/ngtcp2/lib/ngtcp2_balloc.c +90 -0
- data/ext/ngtcp2/lib/ngtcp2_balloc.h +91 -0
- data/ext/ngtcp2/lib/ngtcp2_bbr.c +693 -0
- data/ext/ngtcp2/lib/ngtcp2_bbr.h +157 -0
- data/ext/ngtcp2/lib/ngtcp2_bbr2.c +1490 -0
- data/ext/ngtcp2/lib/ngtcp2_bbr2.h +149 -0
- data/ext/ngtcp2/lib/ngtcp2_buf.c +56 -0
- data/ext/ngtcp2/lib/ngtcp2_buf.h +108 -0
- data/ext/ngtcp2/lib/ngtcp2_cc.c +616 -0
- data/ext/ngtcp2/lib/ngtcp2_cc.h +422 -0
- data/ext/ngtcp2/lib/ngtcp2_cid.c +147 -0
- data/ext/ngtcp2/lib/ngtcp2_cid.h +175 -0
- data/ext/ngtcp2/lib/ngtcp2_conn.c +13731 -0
- data/ext/ngtcp2/lib/ngtcp2_conn.h +1119 -0
- data/ext/ngtcp2/lib/ngtcp2_conn_stat.h +131 -0
- data/ext/ngtcp2/lib/ngtcp2_conv.c +291 -0
- data/ext/ngtcp2/lib/ngtcp2_conv.h +208 -0
- data/ext/ngtcp2/lib/ngtcp2_crypto.c +895 -0
- data/ext/ngtcp2/lib/ngtcp2_crypto.h +148 -0
- data/ext/ngtcp2/lib/ngtcp2_err.c +154 -0
- data/ext/ngtcp2/lib/ngtcp2_err.h +34 -0
- data/ext/ngtcp2/lib/ngtcp2_gaptr.c +167 -0
- data/ext/ngtcp2/lib/ngtcp2_gaptr.h +98 -0
- data/ext/ngtcp2/lib/ngtcp2_idtr.c +79 -0
- data/ext/ngtcp2/lib/ngtcp2_idtr.h +89 -0
- data/ext/ngtcp2/lib/ngtcp2_ksl.c +819 -0
- data/ext/ngtcp2/lib/ngtcp2_ksl.h +345 -0
- data/ext/ngtcp2/lib/ngtcp2_log.c +822 -0
- data/ext/ngtcp2/lib/ngtcp2_log.h +123 -0
- data/ext/ngtcp2/lib/ngtcp2_macro.h +58 -0
- data/ext/ngtcp2/lib/ngtcp2_map.c +336 -0
- data/ext/ngtcp2/lib/ngtcp2_map.h +136 -0
- data/ext/ngtcp2/lib/ngtcp2_mem.c +113 -0
- data/ext/ngtcp2/lib/ngtcp2_mem.h +72 -0
- data/ext/ngtcp2/lib/ngtcp2_net.h +136 -0
- data/ext/ngtcp2/lib/ngtcp2_objalloc.c +40 -0
- data/ext/ngtcp2/lib/ngtcp2_objalloc.h +140 -0
- data/ext/ngtcp2/lib/ngtcp2_opl.c +46 -0
- data/ext/ngtcp2/lib/ngtcp2_opl.h +65 -0
- data/ext/ngtcp2/lib/ngtcp2_path.c +77 -0
- data/ext/ngtcp2/lib/ngtcp2_path.h +49 -0
- data/ext/ngtcp2/lib/ngtcp2_pkt.c +2527 -0
- data/ext/ngtcp2/lib/ngtcp2_pkt.h +1235 -0
- data/ext/ngtcp2/lib/ngtcp2_pmtud.c +160 -0
- data/ext/ngtcp2/lib/ngtcp2_pmtud.h +123 -0
- data/ext/ngtcp2/lib/ngtcp2_ppe.c +230 -0
- data/ext/ngtcp2/lib/ngtcp2_ppe.h +153 -0
- data/ext/ngtcp2/lib/ngtcp2_pq.c +164 -0
- data/ext/ngtcp2/lib/ngtcp2_pq.h +126 -0
- data/ext/ngtcp2/lib/ngtcp2_pv.c +172 -0
- data/ext/ngtcp2/lib/ngtcp2_pv.h +194 -0
- data/ext/ngtcp2/lib/ngtcp2_qlog.c +1219 -0
- data/ext/ngtcp2/lib/ngtcp2_qlog.h +161 -0
- data/ext/ngtcp2/lib/ngtcp2_range.c +61 -0
- data/ext/ngtcp2/lib/ngtcp2_range.h +80 -0
- data/ext/ngtcp2/lib/ngtcp2_rcvry.h +40 -0
- data/ext/ngtcp2/lib/ngtcp2_ringbuf.c +121 -0
- data/ext/ngtcp2/lib/ngtcp2_ringbuf.h +132 -0
- data/ext/ngtcp2/lib/ngtcp2_rob.c +319 -0
- data/ext/ngtcp2/lib/ngtcp2_rob.h +197 -0
- data/ext/ngtcp2/lib/ngtcp2_rst.c +138 -0
- data/ext/ngtcp2/lib/ngtcp2_rst.h +86 -0
- data/ext/ngtcp2/lib/ngtcp2_rtb.c +1676 -0
- data/ext/ngtcp2/lib/ngtcp2_rtb.h +468 -0
- data/ext/ngtcp2/lib/ngtcp2_str.c +233 -0
- data/ext/ngtcp2/lib/ngtcp2_str.h +94 -0
- data/ext/ngtcp2/lib/ngtcp2_strm.c +698 -0
- data/ext/ngtcp2/lib/ngtcp2_strm.h +310 -0
- data/ext/ngtcp2/lib/ngtcp2_unreachable.c +71 -0
- data/ext/ngtcp2/lib/ngtcp2_unreachable.h +46 -0
- data/ext/ngtcp2/lib/ngtcp2_vec.c +243 -0
- data/ext/ngtcp2/lib/ngtcp2_vec.h +120 -0
- data/ext/ngtcp2/lib/ngtcp2_version.c +39 -0
- data/ext/ngtcp2/lib/ngtcp2_window_filter.c +99 -0
- data/ext/ngtcp2/lib/ngtcp2_window_filter.h +65 -0
- data/ext/ngtcp2/m4/ax_check_compile_flag.m4 +74 -0
- data/ext/ngtcp2/m4/ax_cxx_compile_stdcxx.m4 +1009 -0
- data/ext/ngtcp2/tests/CMakeLists.txt +68 -0
- data/ext/ngtcp2/tests/Makefile.am +94 -0
- data/ext/ngtcp2/tests/main.c +358 -0
- data/ext/ngtcp2/tests/ngtcp2_acktr_test.c +367 -0
- data/ext/ngtcp2/tests/ngtcp2_acktr_test.h +37 -0
- data/ext/ngtcp2/tests/ngtcp2_conn_test.c +9821 -0
- data/ext/ngtcp2/tests/ngtcp2_conn_test.h +104 -0
- data/ext/ngtcp2/tests/ngtcp2_conv_test.c +430 -0
- data/ext/ngtcp2/tests/ngtcp2_conv_test.h +46 -0
- data/ext/ngtcp2/tests/ngtcp2_crypto_test.c +667 -0
- data/ext/ngtcp2/tests/ngtcp2_crypto_test.h +35 -0
- data/ext/ngtcp2/tests/ngtcp2_gaptr_test.c +127 -0
- data/ext/ngtcp2/tests/ngtcp2_gaptr_test.h +36 -0
- data/ext/ngtcp2/tests/ngtcp2_idtr_test.c +79 -0
- data/ext/ngtcp2/tests/ngtcp2_idtr_test.h +34 -0
- data/ext/ngtcp2/tests/ngtcp2_ksl_test.c +502 -0
- data/ext/ngtcp2/tests/ngtcp2_ksl_test.h +39 -0
- data/ext/ngtcp2/tests/ngtcp2_map_test.c +206 -0
- data/ext/ngtcp2/tests/ngtcp2_map_test.h +38 -0
- data/ext/ngtcp2/tests/ngtcp2_pkt_test.c +1645 -0
- data/ext/ngtcp2/tests/ngtcp2_pkt_test.h +68 -0
- data/ext/ngtcp2/tests/ngtcp2_pmtud_test.c +153 -0
- data/ext/ngtcp2/tests/ngtcp2_pmtud_test.h +34 -0
- data/ext/ngtcp2/tests/ngtcp2_pv_test.c +129 -0
- data/ext/ngtcp2/tests/ngtcp2_pv_test.h +35 -0
- data/ext/ngtcp2/tests/ngtcp2_range_test.c +105 -0
- data/ext/ngtcp2/tests/ngtcp2_range_test.h +36 -0
- data/ext/ngtcp2/tests/ngtcp2_ringbuf_test.c +91 -0
- data/ext/ngtcp2/tests/ngtcp2_ringbuf_test.h +35 -0
- data/ext/ngtcp2/tests/ngtcp2_rob_test.c +552 -0
- data/ext/ngtcp2/tests/ngtcp2_rob_test.h +37 -0
- data/ext/ngtcp2/tests/ngtcp2_rtb_test.c +470 -0
- data/ext/ngtcp2/tests/ngtcp2_rtb_test.h +38 -0
- data/ext/ngtcp2/tests/ngtcp2_str_test.c +96 -0
- data/ext/ngtcp2/tests/ngtcp2_str_test.h +36 -0
- data/ext/ngtcp2/tests/ngtcp2_strm_test.c +575 -0
- data/ext/ngtcp2/tests/ngtcp2_strm_test.h +36 -0
- data/ext/ngtcp2/tests/ngtcp2_test_helper.c +404 -0
- data/ext/ngtcp2/tests/ngtcp2_test_helper.h +191 -0
- data/ext/ngtcp2/tests/ngtcp2_vec_test.c +426 -0
- data/ext/ngtcp2/tests/ngtcp2_vec_test.h +36 -0
- data/ext/ngtcp2/third-party/CMakeLists.txt +34 -0
- data/ext/ngtcp2/third-party/Makefile.am +31 -0
- data/ext/ngtcp2/third-party/http-parser/AUTHORS +68 -0
- data/ext/ngtcp2/third-party/http-parser/LICENSE-MIT +23 -0
- data/ext/ngtcp2/third-party/http-parser/Makefile +157 -0
- data/ext/ngtcp2/third-party/http-parser/README.md +246 -0
- data/ext/ngtcp2/third-party/http-parser/bench.c +111 -0
- data/ext/ngtcp2/third-party/http-parser/contrib/parsertrace.c +160 -0
- data/ext/ngtcp2/third-party/http-parser/contrib/url_parser.c +47 -0
- data/ext/ngtcp2/third-party/http-parser/http_parser.c +2419 -0
- data/ext/ngtcp2/third-party/http-parser/http_parser.gyp +111 -0
- data/ext/ngtcp2/third-party/http-parser/http_parser.h +431 -0
- data/ext/ngtcp2/third-party/http-parser/test.c +4411 -0
- data/lib/protocol/quic/version.rb +10 -0
- data/lib/protocol/quic.rb +9 -0
- data/license.md +21 -0
- data.tar.gz.sig +1 -0
- metadata +424 -0
- metadata.gz.sig +1 -0
@@ -0,0 +1,258 @@
|
|
1
|
+
ngtcp2
|
2
|
+
======
|
3
|
+
|
4
|
+
"Call it TCP/2. One More Time."
|
5
|
+
|
6
|
+
ngtcp2 project is an effort to implement `RFC9000
|
7
|
+
<https://datatracker.ietf.org/doc/html/rfc9000>`_ QUIC protocol.
|
8
|
+
|
9
|
+
Documentation
|
10
|
+
-------------
|
11
|
+
|
12
|
+
`Online documentation <https://nghttp2.org/ngtcp2/>`_ is available.
|
13
|
+
|
14
|
+
Public test server
|
15
|
+
------------------
|
16
|
+
|
17
|
+
The following endpoints are available to try out ngtcp2
|
18
|
+
implementation:
|
19
|
+
|
20
|
+
- https://nghttp2.org:4433
|
21
|
+
- https://nghttp2.org:4434 (requires address validation token)
|
22
|
+
- https://nghttp2.org (powered by `nghttpx
|
23
|
+
<https://nghttp2.org/documentation/nghttpx.1.html>`_)
|
24
|
+
|
25
|
+
This endpoints sends Alt-Svc header field to clients if it is
|
26
|
+
accessed via HTTP/1.1 or HTTP/2 to tell them that HTTP/3 is
|
27
|
+
available at UDP 443.
|
28
|
+
|
29
|
+
Requirements
|
30
|
+
------------
|
31
|
+
|
32
|
+
The libngtcp2 C library itself does not depend on any external
|
33
|
+
libraries. The example client, and server are written in C++20, and
|
34
|
+
should compile with the modern C++ compilers (e.g., clang >= 11.0, or
|
35
|
+
gcc >= 11.0).
|
36
|
+
|
37
|
+
The following packages are required to configure the build system:
|
38
|
+
|
39
|
+
- pkg-config >= 0.20
|
40
|
+
- autoconf
|
41
|
+
- automake
|
42
|
+
- autotools-dev
|
43
|
+
- libtool
|
44
|
+
|
45
|
+
libngtcp2 uses cunit for its unit test frame work:
|
46
|
+
|
47
|
+
- cunit >= 2.1
|
48
|
+
|
49
|
+
To build sources under the examples directory, libev and nghttp3 are
|
50
|
+
required:
|
51
|
+
|
52
|
+
- libev
|
53
|
+
- `nghttp3 <https://github.com/ngtcp2/nghttp3>`_ for HTTP/3
|
54
|
+
|
55
|
+
ngtcp2 crypto helper library, and client and server under examples
|
56
|
+
directory require at least one of the following TLS backends:
|
57
|
+
|
58
|
+
- `OpenSSL with QUIC support
|
59
|
+
<https://github.com/quictls/openssl/tree/OpenSSL_1_1_1t+quic>`_
|
60
|
+
- GnuTLS >= 3.7.2
|
61
|
+
- BoringSSL (commit 80a243e07ef77156af66efa7d22ac35aba44c1b3)
|
62
|
+
- Picotls (commit 9398c491cf5b21e123ce409f2d32a1d235d93b7e)
|
63
|
+
- wolfSSL >= 5.5.0
|
64
|
+
|
65
|
+
Build from git
|
66
|
+
--------------
|
67
|
+
|
68
|
+
.. code-block:: text
|
69
|
+
|
70
|
+
$ git clone --depth 1 -b OpenSSL_1_1_1t+quic https://github.com/quictls/openssl
|
71
|
+
$ cd openssl
|
72
|
+
$ # For Linux
|
73
|
+
$ ./config enable-tls1_3 --prefix=$PWD/build
|
74
|
+
$ make -j$(nproc)
|
75
|
+
$ make install_sw
|
76
|
+
$ cd ..
|
77
|
+
$ git clone https://github.com/ngtcp2/nghttp3
|
78
|
+
$ cd nghttp3
|
79
|
+
$ autoreconf -i
|
80
|
+
$ ./configure --prefix=$PWD/build --enable-lib-only
|
81
|
+
$ make -j$(nproc) check
|
82
|
+
$ make install
|
83
|
+
$ cd ..
|
84
|
+
$ git clone https://github.com/ngtcp2/ngtcp2
|
85
|
+
$ cd ngtcp2
|
86
|
+
$ autoreconf -i
|
87
|
+
$ # For Mac users who have installed libev with MacPorts, append
|
88
|
+
$ # ',-L/opt/local/lib' to LDFLAGS, and also pass
|
89
|
+
$ # CPPFLAGS="-I/opt/local/include" to ./configure.
|
90
|
+
$ # For OpenSSL >= v3.0.0, replace "openssl/build/lib" with
|
91
|
+
$ # "openssl/build/lib64".
|
92
|
+
$ ./configure PKG_CONFIG_PATH=$PWD/../openssl/build/lib/pkgconfig:$PWD/../nghttp3/build/lib/pkgconfig LDFLAGS="-Wl,-rpath,$PWD/../openssl/build/lib"
|
93
|
+
$ make -j$(nproc) check
|
94
|
+
|
95
|
+
Client/Server
|
96
|
+
-------------
|
97
|
+
|
98
|
+
After successful build, the client and server executable should be
|
99
|
+
found under examples directory. They talk HTTP/3.
|
100
|
+
|
101
|
+
Client
|
102
|
+
~~~~~~
|
103
|
+
|
104
|
+
.. code-block:: text
|
105
|
+
|
106
|
+
$ examples/client [OPTIONS] <HOST> <PORT> [<URI>...]
|
107
|
+
|
108
|
+
The notable options are:
|
109
|
+
|
110
|
+
- ``-d``, ``--data=<PATH>``: Read data from <PATH> and send it to a
|
111
|
+
peer.
|
112
|
+
|
113
|
+
Server
|
114
|
+
~~~~~~
|
115
|
+
|
116
|
+
.. code-block:: text
|
117
|
+
|
118
|
+
$ examples/server [OPTIONS] <ADDR> <PORT> <PRIVATE_KEY_FILE> <CERTIFICATE_FILE>
|
119
|
+
|
120
|
+
The notable options are:
|
121
|
+
|
122
|
+
- ``-V``, ``--validate-addr``: Enforce stateless address validation.
|
123
|
+
|
124
|
+
H09client/H09server
|
125
|
+
-------------------
|
126
|
+
|
127
|
+
There are h09client and h09server which speak HTTP/0.9. They are
|
128
|
+
written just for `quic-interop-runner
|
129
|
+
<https://github.com/marten-seemann/quic-interop-runner>`_. They share
|
130
|
+
the basic functionalities with HTTP/3 client and server but have less
|
131
|
+
functions (e.g., h09client does not have a capability to send request
|
132
|
+
body, and h09server does not understand numeric request path, like
|
133
|
+
/1000).
|
134
|
+
|
135
|
+
Resumption and 0-RTT
|
136
|
+
--------------------
|
137
|
+
|
138
|
+
In order to resume a session, a session ticket, and a transport
|
139
|
+
parameters must be fetched from server. First, run examples/client
|
140
|
+
with --session-file, and --tp-file options which specify a path to
|
141
|
+
session ticket, and transport parameter files respectively to save
|
142
|
+
them locally.
|
143
|
+
|
144
|
+
Once these files are available, run examples/client with the same
|
145
|
+
arguments again. You will see that session is resumed in your log if
|
146
|
+
resumption succeeds. Resuming session makes server's first Handshake
|
147
|
+
packet pretty small because it does not send its certificates.
|
148
|
+
|
149
|
+
To send 0-RTT data, after making sure that resumption works, use -d
|
150
|
+
option to specify a file which contains data to send.
|
151
|
+
|
152
|
+
Token (Not something included in Retry packet)
|
153
|
+
----------------------------------------------
|
154
|
+
|
155
|
+
QUIC server might send a token to client after connection has been
|
156
|
+
established. Client can send this token in subsequent connection to
|
157
|
+
the server. Server verifies the token and if it succeeds, the address
|
158
|
+
validation completes and lifts some restrictions on server which might
|
159
|
+
speed up transfer. In order to save and/or load a token,
|
160
|
+
use --token-file option of examples/client. The given file is
|
161
|
+
overwritten if it already exists when storing a token.
|
162
|
+
|
163
|
+
Crypto helper library
|
164
|
+
---------------------
|
165
|
+
|
166
|
+
In order to make TLS stack integration less painful, we provide a
|
167
|
+
crypto helper library which offers the basic crypto operations.
|
168
|
+
|
169
|
+
The header file exists under crypto/includes/ngtcp2 directory.
|
170
|
+
|
171
|
+
Each library file is built for a particular TLS backend. The
|
172
|
+
available crypto helper libraries are:
|
173
|
+
|
174
|
+
- libngtcp2_crypto_openssl: Use OpenSSL as TLS backend
|
175
|
+
- libngtcp2_crypto_gnutls: Use GnuTLS as TLS backend
|
176
|
+
- libngtcp2_crypto_boringssl: Use BoringSSL as TLS backend
|
177
|
+
- libngtcp2_crypto_picotls: Use Picotls as TLS backend
|
178
|
+
- libngtcp2_crypto_wolfssl: Use wolfSSL as TLS backend
|
179
|
+
|
180
|
+
Because BoringSSL and Picotls are an unversioned product, we only
|
181
|
+
tested their particular revision. See Requirements section above.
|
182
|
+
|
183
|
+
We use Picotls with OpenSSL as crypto backend. It does not work with
|
184
|
+
OpenSSL >= 3.0.0.
|
185
|
+
|
186
|
+
The examples directory contains client and server that are linked to
|
187
|
+
those crypto helper libraries and TLS backends. They are only built
|
188
|
+
if their corresponding crypto helper library is built:
|
189
|
+
|
190
|
+
- client: OpenSSL client
|
191
|
+
- server: OpenSSL server
|
192
|
+
- gtlsclient: GnuTLS client
|
193
|
+
- gtlsserver: GnuTLS server
|
194
|
+
- bsslclient: BoringSSL client
|
195
|
+
- bsslserver: BoringSSL server
|
196
|
+
- ptlsclient: Picotls client
|
197
|
+
- ptlsserver: Picotls server
|
198
|
+
- wsslclient: wolfSSL client
|
199
|
+
- wsslserver: wolfSSL server
|
200
|
+
|
201
|
+
QUIC protocol extensions
|
202
|
+
-------------------------
|
203
|
+
|
204
|
+
The library implements the following QUIC protocol extensions:
|
205
|
+
|
206
|
+
- `An Unreliable Datagram Extension to QUIC
|
207
|
+
<https://datatracker.ietf.org/doc/html/rfc9221>`_
|
208
|
+
- `Greasing the QUIC Bit
|
209
|
+
<https://datatracker.ietf.org/doc/html/rfc9287>`_
|
210
|
+
- `Compatible Version Negotiation for QUIC
|
211
|
+
<https://datatracker.ietf.org/doc/html/draft-ietf-quic-version-negotiation>`_
|
212
|
+
- `QUIC Version 2
|
213
|
+
<https://datatracker.ietf.org/doc/html/draft-ietf-quic-v2>`_
|
214
|
+
|
215
|
+
Configuring Wireshark for QUIC
|
216
|
+
------------------------------
|
217
|
+
|
218
|
+
`Wireshark <https://www.wireshark.org/download.html>`_ can be configured to
|
219
|
+
analyze QUIC traffic using the following steps:
|
220
|
+
|
221
|
+
1. Set *SSLKEYLOGFILE* environment variable:
|
222
|
+
|
223
|
+
.. code-block:: text
|
224
|
+
|
225
|
+
$ export SSLKEYLOGFILE=quic_keylog_file
|
226
|
+
|
227
|
+
2. Set the port that QUIC uses
|
228
|
+
|
229
|
+
Go to *Preferences->Protocols->QUIC* and set the port the program
|
230
|
+
listens to. In the case of the example application this would be
|
231
|
+
the port specified on the command line.
|
232
|
+
|
233
|
+
3. Set Pre-Master-Secret logfile
|
234
|
+
|
235
|
+
Go to *Preferences->Protocols->TLS* and set the *Pre-Master-Secret
|
236
|
+
log file* to the same value that was specified for *SSLKEYLOGFILE*.
|
237
|
+
|
238
|
+
4. Choose the correct network interface for capturing
|
239
|
+
|
240
|
+
Make sure you choose the correct network interface for
|
241
|
+
capturing. For example, if using localhost choose the *loopback*
|
242
|
+
network interface on macos.
|
243
|
+
|
244
|
+
5. Create a filter
|
245
|
+
|
246
|
+
Create A filter for the udp.port and set the port to the port the
|
247
|
+
application is listening to. For example:
|
248
|
+
|
249
|
+
.. code-block:: text
|
250
|
+
|
251
|
+
udp.port == 7777
|
252
|
+
|
253
|
+
License
|
254
|
+
-------
|
255
|
+
|
256
|
+
The MIT License
|
257
|
+
|
258
|
+
Copyright (c) 2016 ngtcp2 contributors
|
@@ -0,0 +1,10 @@
|
|
1
|
+
#!/bin/sh -e
|
2
|
+
# build boringssl (for GitHub workflow)
|
3
|
+
|
4
|
+
git clone https://boringssl.googlesource.com/boringssl
|
5
|
+
cd boringssl
|
6
|
+
git checkout "${BORINGSSL_VERSION}"
|
7
|
+
mkdir build
|
8
|
+
cd build
|
9
|
+
cmake -DCMAKE_POSITION_INDEPENDENT_CODE=ON ..
|
10
|
+
make -j"$(nproc 2> /dev/null || sysctl -n hw.ncpu)"
|
@@ -0,0 +1,8 @@
|
|
1
|
+
#!/bin/sh -e
|
2
|
+
# build patched openssl (for GitHub workflow)
|
3
|
+
|
4
|
+
git clone --depth 1 -b OpenSSL_"${OPENSSL1_VERSION}" https://github.com/quictls/openssl openssl1
|
5
|
+
cd openssl1
|
6
|
+
./config --prefix=$PWD/build
|
7
|
+
make -j"$(nproc 2> /dev/null || sysctl -n hw.ncpu)"
|
8
|
+
make install_sw
|
@@ -0,0 +1,9 @@
|
|
1
|
+
#!/bin/sh -e
|
2
|
+
# build patched openssl (for GitHub workflow) for $HOST and $OSCC
|
3
|
+
# (os/compiler).
|
4
|
+
|
5
|
+
git clone --depth 1 -b OpenSSL_1_1_1t+quic https://github.com/quictls/openssl
|
6
|
+
cd openssl
|
7
|
+
./Configure --cross-compile-prefix="$HOST"- --prefix=$PWD/build "$OSCC"
|
8
|
+
make -j$(nproc)
|
9
|
+
make install_sw
|
@@ -0,0 +1,8 @@
|
|
1
|
+
#!/bin/sh -e
|
2
|
+
# build patched openssl (for GitHub workflow)
|
3
|
+
|
4
|
+
git clone --depth 1 -b openssl-"${OPENSSL3_VERSION}" https://github.com/quictls/openssl openssl3
|
5
|
+
cd openssl3
|
6
|
+
./config --prefix=$PWD/build --openssldir=/etc/ssl
|
7
|
+
make -j"$(nproc 2> /dev/null || sysctl -n hw.ncpu)"
|
8
|
+
make install_sw
|
@@ -0,0 +1,26 @@
|
|
1
|
+
#!/bin/sh -e
|
2
|
+
# build picotls (for GitHub workflow)
|
3
|
+
|
4
|
+
if [ "${OPENSSL}" = "openssl1" ]; then
|
5
|
+
WORKSPACE=picotls-openssl1
|
6
|
+
else
|
7
|
+
WORKSPACE=picotls-openssl3
|
8
|
+
fi
|
9
|
+
|
10
|
+
git clone https://github.com/h2o/picotls/ "${WORKSPACE}"
|
11
|
+
cd "${WORKSPACE}"
|
12
|
+
git checkout "${PICOTLS_VERSION}"
|
13
|
+
git submodule update --init
|
14
|
+
mkdir build
|
15
|
+
cd build
|
16
|
+
if [ "${OPENSSL}" = "openssl1" ]; then
|
17
|
+
PKG_CONFIG_PATH=$PWD/../../openssl1/build/lib/pkgconfig
|
18
|
+
else
|
19
|
+
PKG_CONFIG_PATH=$PWD/../../openssl3/build/lib/pkgconfig:$PWD/../../openssl3/build/lib64/pkgconfig
|
20
|
+
fi
|
21
|
+
|
22
|
+
export PKG_CONFIG_PATH
|
23
|
+
|
24
|
+
cmake -DCMAKE_POSITION_INDEPENDENT_CODE=ON ..
|
25
|
+
|
26
|
+
make -j"$(nproc 2> /dev/null || sysctl -n hw.ncpu)"
|
@@ -0,0 +1,9 @@
|
|
1
|
+
#!/bin/sh -e
|
2
|
+
# wolfssl (for GitHub workflow)
|
3
|
+
|
4
|
+
git clone --depth 1 -b "${WOLFSSL_VERSION}" https://github.com/wolfSSL/wolfssl
|
5
|
+
cd wolfssl
|
6
|
+
autoreconf -i
|
7
|
+
./configure --prefix=$PWD/build --enable-all --enable-quic
|
8
|
+
make -j"$(nproc 2> /dev/null || sysctl -n hw.ncpu)"
|
9
|
+
make install
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# Convenience function that checks the availability of certain
|
2
|
+
# C or C++ compiler flags and returns valid ones as a string.
|
3
|
+
|
4
|
+
include(CheckCCompilerFlag)
|
5
|
+
include(CheckCXXCompilerFlag)
|
6
|
+
|
7
|
+
function(extract_valid_c_flags varname)
|
8
|
+
set(valid_flags)
|
9
|
+
foreach(flag IN LISTS ARGN)
|
10
|
+
string(REGEX REPLACE "[^a-zA-Z0-9_]+" "_" flag_var ${flag})
|
11
|
+
set(flag_var "C_FLAG_${flag_var}")
|
12
|
+
check_c_compiler_flag("${flag}" "${flag_var}")
|
13
|
+
if(${flag_var})
|
14
|
+
set(valid_flags "${valid_flags} ${flag}")
|
15
|
+
endif()
|
16
|
+
endforeach()
|
17
|
+
set(${varname} "${valid_flags}" PARENT_SCOPE)
|
18
|
+
endfunction()
|
19
|
+
|
20
|
+
function(extract_valid_cxx_flags varname)
|
21
|
+
set(valid_flags)
|
22
|
+
foreach(flag IN LISTS ARGN)
|
23
|
+
string(REGEX REPLACE "[^a-zA-Z0-9_]+" "_" flag_var ${flag})
|
24
|
+
set(flag_var "CXX_FLAG_${flag_var}")
|
25
|
+
check_cxx_compiler_flag("${flag}" "${flag_var}")
|
26
|
+
if(${flag_var})
|
27
|
+
set(valid_flags "${valid_flags} ${flag}")
|
28
|
+
endif()
|
29
|
+
endforeach()
|
30
|
+
set(${varname} "${valid_flags}" PARENT_SCOPE)
|
31
|
+
endfunction()
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# - Try to find cunit
|
2
|
+
# Once done this will define
|
3
|
+
# CUNIT_FOUND - System has cunit
|
4
|
+
# CUNIT_INCLUDE_DIRS - The cunit include directories
|
5
|
+
# CUNIT_LIBRARIES - The libraries needed to use cunit
|
6
|
+
|
7
|
+
find_package(PkgConfig QUIET)
|
8
|
+
pkg_check_modules(PC_CUNIT QUIET cunit)
|
9
|
+
|
10
|
+
find_path(CUNIT_INCLUDE_DIR
|
11
|
+
NAMES CUnit/CUnit.h
|
12
|
+
HINTS ${PC_CUNIT_INCLUDE_DIRS}
|
13
|
+
)
|
14
|
+
find_library(CUNIT_LIBRARY
|
15
|
+
NAMES cunit
|
16
|
+
HINTS ${PC_CUNIT_LIBRARY_DIRS}
|
17
|
+
)
|
18
|
+
|
19
|
+
if(CUNIT_INCLUDE_DIR)
|
20
|
+
set(_version_regex "^#define[ \t]+CU_VERSION[ \t]+\"([^\"]+)\".*")
|
21
|
+
file(STRINGS "${CUNIT_INCLUDE_DIR}/CUnit/CUnit.h"
|
22
|
+
CUNIT_VERSION REGEX "${_version_regex}")
|
23
|
+
string(REGEX REPLACE "${_version_regex}" "\\1"
|
24
|
+
CUNIT_VERSION "${CUNIT_VERSION}")
|
25
|
+
unset(_version_regex)
|
26
|
+
endif()
|
27
|
+
|
28
|
+
include(FindPackageHandleStandardArgs)
|
29
|
+
# handle the QUIETLY and REQUIRED arguments and set CUNIT_FOUND to TRUE
|
30
|
+
# if all listed variables are TRUE and the requested version matches.
|
31
|
+
find_package_handle_standard_args(CUnit REQUIRED_VARS
|
32
|
+
CUNIT_LIBRARY CUNIT_INCLUDE_DIR
|
33
|
+
VERSION_VAR CUNIT_VERSION)
|
34
|
+
|
35
|
+
if(CUNIT_FOUND)
|
36
|
+
set(CUNIT_LIBRARIES ${CUNIT_LIBRARY})
|
37
|
+
set(CUNIT_INCLUDE_DIRS ${CUNIT_INCLUDE_DIR})
|
38
|
+
endif()
|
39
|
+
|
40
|
+
mark_as_advanced(CUNIT_INCLUDE_DIR CUNIT_LIBRARY)
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# - Try to find jemalloc
|
2
|
+
# Once done this will define
|
3
|
+
# JEMALLOC_FOUND - System has jemalloc
|
4
|
+
# JEMALLOC_INCLUDE_DIRS - The jemalloc include directories
|
5
|
+
# JEMALLOC_LIBRARIES - The libraries needed to use jemalloc
|
6
|
+
|
7
|
+
find_package(PkgConfig QUIET)
|
8
|
+
pkg_check_modules(PC_JEMALLOC QUIET jemalloc)
|
9
|
+
|
10
|
+
find_path(JEMALLOC_INCLUDE_DIR
|
11
|
+
NAMES jemalloc/jemalloc.h
|
12
|
+
HINTS ${PC_JEMALLOC_INCLUDE_DIRS}
|
13
|
+
)
|
14
|
+
find_library(JEMALLOC_LIBRARY
|
15
|
+
NAMES jemalloc
|
16
|
+
HINTS ${PC_JEMALLOC_LIBRARY_DIRS}
|
17
|
+
)
|
18
|
+
|
19
|
+
if(JEMALLOC_INCLUDE_DIR)
|
20
|
+
set(_version_regex "^#define[ \t]+JEMALLOC_VERSION[ \t]+\"([^\"]+)\".*")
|
21
|
+
file(STRINGS "${JEMALLOC_INCLUDE_DIR}/jemalloc/jemalloc.h"
|
22
|
+
JEMALLOC_VERSION REGEX "${_version_regex}")
|
23
|
+
string(REGEX REPLACE "${_version_regex}" "\\1"
|
24
|
+
JEMALLOC_VERSION "${JEMALLOC_VERSION}")
|
25
|
+
unset(_version_regex)
|
26
|
+
endif()
|
27
|
+
|
28
|
+
include(FindPackageHandleStandardArgs)
|
29
|
+
# handle the QUIETLY and REQUIRED arguments and set JEMALLOC_FOUND to TRUE
|
30
|
+
# if all listed variables are TRUE and the requested version matches.
|
31
|
+
find_package_handle_standard_args(Jemalloc REQUIRED_VARS
|
32
|
+
JEMALLOC_LIBRARY JEMALLOC_INCLUDE_DIR
|
33
|
+
VERSION_VAR JEMALLOC_VERSION)
|
34
|
+
|
35
|
+
if(JEMALLOC_FOUND)
|
36
|
+
set(JEMALLOC_LIBRARIES ${JEMALLOC_LIBRARY})
|
37
|
+
set(JEMALLOC_INCLUDE_DIRS ${JEMALLOC_INCLUDE_DIR})
|
38
|
+
endif()
|
39
|
+
|
40
|
+
mark_as_advanced(JEMALLOC_INCLUDE_DIR JEMALLOC_LIBRARY)
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# - Try to find libev
|
2
|
+
# Once done this will define
|
3
|
+
# LIBEV_FOUND - System has libev
|
4
|
+
# LIBEV_INCLUDE_DIRS - The libev include directories
|
5
|
+
# LIBEV_LIBRARIES - The libraries needed to use libev
|
6
|
+
|
7
|
+
find_path(LIBEV_INCLUDE_DIR
|
8
|
+
NAMES ev.h
|
9
|
+
)
|
10
|
+
find_library(LIBEV_LIBRARY
|
11
|
+
NAMES ev
|
12
|
+
)
|
13
|
+
|
14
|
+
if(LIBEV_INCLUDE_DIR)
|
15
|
+
file(STRINGS "${LIBEV_INCLUDE_DIR}/ev.h"
|
16
|
+
LIBEV_VERSION_MAJOR REGEX "^#define[ \t]+EV_VERSION_MAJOR[ \t]+[0-9]+")
|
17
|
+
file(STRINGS "${LIBEV_INCLUDE_DIR}/ev.h"
|
18
|
+
LIBEV_VERSION_MINOR REGEX "^#define[ \t]+EV_VERSION_MINOR[ \t]+[0-9]+")
|
19
|
+
string(REGEX REPLACE "[^0-9]+" "" LIBEV_VERSION_MAJOR "${LIBEV_VERSION_MAJOR}")
|
20
|
+
string(REGEX REPLACE "[^0-9]+" "" LIBEV_VERSION_MINOR "${LIBEV_VERSION_MINOR}")
|
21
|
+
set(LIBEV_VERSION "${LIBEV_VERSION_MAJOR}.${LIBEV_VERSION_MINOR}")
|
22
|
+
unset(LIBEV_VERSION_MINOR)
|
23
|
+
unset(LIBEV_VERSION_MAJOR)
|
24
|
+
endif()
|
25
|
+
|
26
|
+
include(FindPackageHandleStandardArgs)
|
27
|
+
# handle the QUIETLY and REQUIRED arguments and set LIBEV_FOUND to TRUE
|
28
|
+
# if all listed variables are TRUE and the requested version matches.
|
29
|
+
find_package_handle_standard_args(Libev REQUIRED_VARS
|
30
|
+
LIBEV_LIBRARY LIBEV_INCLUDE_DIR
|
31
|
+
VERSION_VAR LIBEV_VERSION)
|
32
|
+
|
33
|
+
if(LIBEV_FOUND)
|
34
|
+
set(LIBEV_LIBRARIES ${LIBEV_LIBRARY})
|
35
|
+
set(LIBEV_INCLUDE_DIRS ${LIBEV_INCLUDE_DIR})
|
36
|
+
endif()
|
37
|
+
|
38
|
+
mark_as_advanced(LIBEV_INCLUDE_DIR LIBEV_LIBRARY)
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# - Try to find libnghttp3
|
2
|
+
# Once done this will define
|
3
|
+
# LIBNGHTTP3_FOUND - System has libnghttp3
|
4
|
+
# LIBNGHTTP3_INCLUDE_DIRS - The libnghttp3 include directories
|
5
|
+
# LIBNGHTTP3_LIBRARIES - The libraries needed to use libnghttp3
|
6
|
+
|
7
|
+
find_package(PkgConfig QUIET)
|
8
|
+
pkg_check_modules(PC_LIBNGHTTP3 QUIET libnghttp3)
|
9
|
+
|
10
|
+
find_path(LIBNGHTTP3_INCLUDE_DIR
|
11
|
+
NAMES nghttp3/nghttp3.h
|
12
|
+
HINTS ${PC_LIBNGHTTP3_INCLUDE_DIRS}
|
13
|
+
)
|
14
|
+
find_library(LIBNGHTTP3_LIBRARY
|
15
|
+
NAMES nghttp3
|
16
|
+
HINTS ${PC_LIBNGHTTP3_LIBRARY_DIRS}
|
17
|
+
)
|
18
|
+
|
19
|
+
if(LIBNGHTTP3_INCLUDE_DIR)
|
20
|
+
set(_version_regex "^#define[ \t]+NGHTTP3_VERSION[ \t]+\"([^\"]+)\".*")
|
21
|
+
file(STRINGS "${LIBNGHTTP3_INCLUDE_DIR}/nghttp3/version.h"
|
22
|
+
LIBNGHTTP3_VERSION REGEX "${_version_regex}")
|
23
|
+
string(REGEX REPLACE "${_version_regex}" "\\1"
|
24
|
+
LIBNGHTTP3_VERSION "${LIBNGHTTP3_VERSION}")
|
25
|
+
unset(_version_regex)
|
26
|
+
endif()
|
27
|
+
|
28
|
+
include(FindPackageHandleStandardArgs)
|
29
|
+
# handle the QUIETLY and REQUIRED arguments and set LIBNGHTTP3_FOUND
|
30
|
+
# to TRUE if all listed variables are TRUE and the requested version
|
31
|
+
# matches.
|
32
|
+
find_package_handle_standard_args(Libnghttp3 REQUIRED_VARS
|
33
|
+
LIBNGHTTP3_LIBRARY LIBNGHTTP3_INCLUDE_DIR
|
34
|
+
VERSION_VAR LIBNGHTTP3_VERSION)
|
35
|
+
|
36
|
+
if(LIBNGHTTP3_FOUND)
|
37
|
+
set(LIBNGHTTP3_LIBRARIES ${LIBNGHTTP3_LIBRARY})
|
38
|
+
set(LIBNGHTTP3_INCLUDE_DIRS ${LIBNGHTTP3_INCLUDE_DIR})
|
39
|
+
endif()
|
40
|
+
|
41
|
+
mark_as_advanced(LIBNGHTTP3_INCLUDE_DIR LIBNGHTTP3_LIBRARY)
|
@@ -0,0 +1,41 @@
|
|
1
|
+
# - Try to find wolfssl
|
2
|
+
# Once done this will define
|
3
|
+
# WOLFSSL_FOUND - System has wolfssl
|
4
|
+
# WOLFSSL_INCLUDE_DIR - The wolfssl include directories
|
5
|
+
# WOLFSSL_LIBRARIES - The libraries needed to use wolfssl
|
6
|
+
|
7
|
+
find_package(PkgConfig QUIET)
|
8
|
+
pkg_check_modules(PC_WOLFSSL QUIET wolfssl)
|
9
|
+
|
10
|
+
find_path(WOLFSSL_INCLUDE_DIR
|
11
|
+
NAMES wolfssl/ssl.h
|
12
|
+
HINTS ${PC_WOLFSSL_INCLUDE_DIRS}
|
13
|
+
)
|
14
|
+
find_library(WOLFSSL_LIBRARY
|
15
|
+
NAMES wolfssl
|
16
|
+
HINTS ${PC_WOLFSSL_LIBRARY_DIRS}
|
17
|
+
)
|
18
|
+
|
19
|
+
if(WOLFSSL_INCLUDE_DIR)
|
20
|
+
set(_version_regex "^#define[ \t]+LIBWOLFSSL_VERSION_STRING[ \t]+\"([^\"]+)\".*")
|
21
|
+
file(STRINGS "${WOLFSSL_INCLUDE_DIR}/wolfssl/version.h"
|
22
|
+
WOLFSSL_VERSION REGEX "${_version_regex}")
|
23
|
+
string(REGEX REPLACE "${_version_regex}" "\\1"
|
24
|
+
WOLFSSL_VERSION "${WOLFSSL_VERSION}")
|
25
|
+
unset(_version_regex)
|
26
|
+
endif()
|
27
|
+
|
28
|
+
include(FindPackageHandleStandardArgs)
|
29
|
+
# handle the QUIETLY and REQUIRED arguments and set WOLFSSL_FOUND
|
30
|
+
# to TRUE if all listed variables are TRUE and the requested version
|
31
|
+
# matches.
|
32
|
+
find_package_handle_standard_args(wolfssl REQUIRED_VARS
|
33
|
+
WOLFSSL_LIBRARY WOLFSSL_INCLUDE_DIR
|
34
|
+
VERSION_VAR WOLFSSL_VERSION)
|
35
|
+
|
36
|
+
if(WOLFSSL_FOUND)
|
37
|
+
set(WOLFSSL_LIBRARIES ${WOLFSSL_LIBRARY})
|
38
|
+
set(WOLFSSL_INCLUDE_DIRS ${WOLFSSL_INCLUDE_DIR})
|
39
|
+
endif()
|
40
|
+
|
41
|
+
mark_as_advanced(WOLFSSL_INCLUDE_DIR WOLFSSL_LIBRARY)
|
@@ -0,0 +1,11 @@
|
|
1
|
+
# Converts a version such as 1.2.255 to 0x0102ff
|
2
|
+
function(HexVersion version_hex_var major minor patch)
|
3
|
+
math(EXPR version_dec "${major} * 256 * 256 + ${minor} * 256 + ${patch}")
|
4
|
+
set(version_hex "0x")
|
5
|
+
foreach(i RANGE 5 0 -1)
|
6
|
+
math(EXPR num "(${version_dec} >> (4 * ${i})) & 15")
|
7
|
+
string(SUBSTRING "0123456789abcdef" ${num} 1 num_hex)
|
8
|
+
set(version_hex "${version_hex}${num_hex}")
|
9
|
+
endforeach()
|
10
|
+
set(${version_hex_var} "${version_hex}" PARENT_SCOPE)
|
11
|
+
endfunction()
|
@@ -0,0 +1,36 @@
|
|
1
|
+
|
2
|
+
/* Define to `int' if <sys/types.h> does not define. */
|
3
|
+
#cmakedefine ssize_t @ssize_t@
|
4
|
+
|
5
|
+
/* Define to 1 to enable debug output. */
|
6
|
+
#cmakedefine DEBUGBUILD 1
|
7
|
+
|
8
|
+
/* Define to 1 if you have the <arpa/inet.h> header file. */
|
9
|
+
#cmakedefine HAVE_ARPA_INET_H 1
|
10
|
+
|
11
|
+
/* Define to 1 if you have the <netinet/in.h> header file. */
|
12
|
+
#cmakedefine HAVE_NETINET_IN_H 1
|
13
|
+
|
14
|
+
/* Define to 1 if you have the <stddef.h> header file. */
|
15
|
+
#cmakedefine HAVE_STDDEF_H 1
|
16
|
+
|
17
|
+
/* Define to 1 if you have the <stdint.h> header file. */
|
18
|
+
#cmakedefine HAVE_STDINT_H 1
|
19
|
+
|
20
|
+
/* Define to 1 if you have the <stdlib.h> header file. */
|
21
|
+
#cmakedefine HAVE_STDLIB_H 1
|
22
|
+
|
23
|
+
/* Define to 1 if you have the <string.h> header file. */
|
24
|
+
#cmakedefine HAVE_STRING_H 1
|
25
|
+
|
26
|
+
/* Define to 1 if you have the <unistd.h> header file. */
|
27
|
+
#cmakedefine HAVE_UNISTD_H 1
|
28
|
+
|
29
|
+
/* Define to 1 if you have the <sys/endian.h> header file. */
|
30
|
+
#cmakedefine HAVE_SYS_ENDIAN_H 1
|
31
|
+
|
32
|
+
/* Define to 1 if you have the <endian.h> header file. */
|
33
|
+
#cmakedefine HAVE_ENDIAN_H 1
|
34
|
+
|
35
|
+
/* Define to 1 if you have the `be64toh' function. */
|
36
|
+
#cmakedefine HAVE_BE64TOH 1
|