protocol-quic 0.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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,120 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* ngtcp2
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2018 ngtcp2 contributors
|
|
5
|
+
*
|
|
6
|
+
* Permission is hereby granted, free of charge, to any person obtaining
|
|
7
|
+
* a copy of this software and associated documentation files (the
|
|
8
|
+
* "Software"), to deal in the Software without restriction, including
|
|
9
|
+
* without limitation the rights to use, copy, modify, merge, publish,
|
|
10
|
+
* distribute, sublicense, and/or sell copies of the Software, and to
|
|
11
|
+
* permit persons to whom the Software is furnished to do so, subject to
|
|
12
|
+
* the following conditions:
|
|
13
|
+
*
|
|
14
|
+
* The above copyright notice and this permission notice shall be
|
|
15
|
+
* included in all copies or substantial portions of the Software.
|
|
16
|
+
*
|
|
17
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
18
|
+
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
19
|
+
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
20
|
+
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
21
|
+
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
22
|
+
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
23
|
+
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
24
|
+
*/
|
|
25
|
+
#ifndef NGTCP2_VEC_H
|
|
26
|
+
#define NGTCP2_VEC_H
|
|
27
|
+
|
|
28
|
+
#ifdef HAVE_CONFIG_H
|
|
29
|
+
# include <config.h>
|
|
30
|
+
#endif /* HAVE_CONFIG_H */
|
|
31
|
+
|
|
32
|
+
#include <ngtcp2/ngtcp2.h>
|
|
33
|
+
|
|
34
|
+
#include "ngtcp2_mem.h"
|
|
35
|
+
|
|
36
|
+
/*
|
|
37
|
+
* ngtcp2_vec_lit is a convenient macro to fill the object pointed by
|
|
38
|
+
* |DEST| with the literal string |LIT|.
|
|
39
|
+
*/
|
|
40
|
+
#define ngtcp2_vec_lit(DEST, LIT) \
|
|
41
|
+
((DEST)->base = (uint8_t *)(LIT), (DEST)->len = sizeof(LIT) - 1, (DEST))
|
|
42
|
+
|
|
43
|
+
/*
|
|
44
|
+
* ngtcp2_vec_init initializes |vec| with the given parameters. It
|
|
45
|
+
* returns |vec|.
|
|
46
|
+
*/
|
|
47
|
+
ngtcp2_vec *ngtcp2_vec_init(ngtcp2_vec *vec, const uint8_t *base, size_t len);
|
|
48
|
+
|
|
49
|
+
/*
|
|
50
|
+
* ngtcp2_vec_new allocates and initializes |*pvec| with given |data|
|
|
51
|
+
* of length |datalen|. This function allocates memory for |*pvec|
|
|
52
|
+
* and the given data with a single allocation, and the contents
|
|
53
|
+
* pointed by |data| is copied into the allocated memory space. To
|
|
54
|
+
* free the allocated memory, call ngtcp2_vec_del.
|
|
55
|
+
*/
|
|
56
|
+
int ngtcp2_vec_new(ngtcp2_vec **pvec, const uint8_t *data, size_t datalen,
|
|
57
|
+
const ngtcp2_mem *mem);
|
|
58
|
+
|
|
59
|
+
/*
|
|
60
|
+
* ngtcp2_vec_del frees the memory allocated by |vec| which is
|
|
61
|
+
* allocated and initialized by ngtcp2_vec_new.
|
|
62
|
+
*/
|
|
63
|
+
void ngtcp2_vec_del(ngtcp2_vec *vec, const ngtcp2_mem *mem);
|
|
64
|
+
|
|
65
|
+
/*
|
|
66
|
+
* ngtcp2_vec_len returns the sum of length in |vec| of |n| elements.
|
|
67
|
+
*/
|
|
68
|
+
uint64_t ngtcp2_vec_len(const ngtcp2_vec *vec, size_t n);
|
|
69
|
+
|
|
70
|
+
/*
|
|
71
|
+
* ngtcp2_vec_len_varint is similar to ngtcp2_vec_len, but it returns
|
|
72
|
+
* -1 if the sum of the length exceeds NGTCP2_MAX_VARINT.
|
|
73
|
+
*/
|
|
74
|
+
int64_t ngtcp2_vec_len_varint(const ngtcp2_vec *vec, size_t n);
|
|
75
|
+
|
|
76
|
+
/*
|
|
77
|
+
* ngtcp2_vec_split splits |src| to |dst| so that the sum of the
|
|
78
|
+
* length in |src| does not exceed |left| bytes. The |maxcnt| is the
|
|
79
|
+
* maximum number of elements which |dst| array can contain. The
|
|
80
|
+
* caller must set |*psrccnt| to the number of elements of |src|.
|
|
81
|
+
* Similarly, the caller must set |*pdstcnt| to the number of elements
|
|
82
|
+
* of |dst|. The split does not necessarily occur at the boundary of
|
|
83
|
+
* ngtcp2_vec object. After split has done, this function updates
|
|
84
|
+
* |*psrccnt| and |*pdstcnt|. This function returns the number of
|
|
85
|
+
* bytes moved from |src| to |dst|. If split cannot be made because
|
|
86
|
+
* doing so exceeds |maxcnt|, this function returns -1.
|
|
87
|
+
*/
|
|
88
|
+
ngtcp2_ssize ngtcp2_vec_split(ngtcp2_vec *src, size_t *psrccnt, ngtcp2_vec *dst,
|
|
89
|
+
size_t *pdstcnt, size_t left, size_t maxcnt);
|
|
90
|
+
|
|
91
|
+
/*
|
|
92
|
+
* ngtcp2_vec_merge merges |src| into |dst| by moving at most |left|
|
|
93
|
+
* bytes from |src|. The |maxcnt| is the maximum number of elements
|
|
94
|
+
* which |dst| array can contain. The caller must set |*pdstcnt| to
|
|
95
|
+
* the number of elements of |dst|. Similarly, the caller must set
|
|
96
|
+
* |*psrccnt| to the number of elements of |src|. After merge has
|
|
97
|
+
* done, this function updates |*psrccnt| and |*pdstcnt|. This
|
|
98
|
+
* function returns the number of bytes moved from |src| to |dst|.
|
|
99
|
+
*/
|
|
100
|
+
size_t ngtcp2_vec_merge(ngtcp2_vec *dst, size_t *pdstcnt, ngtcp2_vec *src,
|
|
101
|
+
size_t *psrccnt, size_t left, size_t maxcnt);
|
|
102
|
+
|
|
103
|
+
/*
|
|
104
|
+
* ngtcp2_vec_copy_at_most copies |src| of length |srccnt| to |dst| of
|
|
105
|
+
* length |dstcnt|. The total number of bytes which the copied
|
|
106
|
+
* ngtcp2_vec refers to is at most |left|. The empty elements in
|
|
107
|
+
* |src| are ignored. This function returns the number of elements
|
|
108
|
+
* copied.
|
|
109
|
+
*/
|
|
110
|
+
size_t ngtcp2_vec_copy_at_most(ngtcp2_vec *dst, size_t dstcnt,
|
|
111
|
+
const ngtcp2_vec *src, size_t srccnt,
|
|
112
|
+
size_t left);
|
|
113
|
+
|
|
114
|
+
/*
|
|
115
|
+
* ngtcp2_vec_copy copies |src| of length |cnt| to |dst|. |dst| must
|
|
116
|
+
* have sufficient capacity.
|
|
117
|
+
*/
|
|
118
|
+
void ngtcp2_vec_copy(ngtcp2_vec *dst, const ngtcp2_vec *src, size_t cnt);
|
|
119
|
+
|
|
120
|
+
#endif /* NGTCP2_VEC_H */
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* ngtcp2
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2019 ngtcp2 contributors
|
|
5
|
+
*
|
|
6
|
+
* Permission is hereby granted, free of charge, to any person obtaining
|
|
7
|
+
* a copy of this software and associated documentation files (the
|
|
8
|
+
* "Software"), to deal in the Software without restriction, including
|
|
9
|
+
* without limitation the rights to use, copy, modify, merge, publish,
|
|
10
|
+
* distribute, sublicense, and/or sell copies of the Software, and to
|
|
11
|
+
* permit persons to whom the Software is furnished to do so, subject to
|
|
12
|
+
* the following conditions:
|
|
13
|
+
*
|
|
14
|
+
* The above copyright notice and this permission notice shall be
|
|
15
|
+
* included in all copies or substantial portions of the Software.
|
|
16
|
+
*
|
|
17
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
18
|
+
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
19
|
+
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
20
|
+
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
21
|
+
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
22
|
+
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
23
|
+
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
24
|
+
*/
|
|
25
|
+
#ifdef HAVE_CONFIG_H
|
|
26
|
+
# include <config.h>
|
|
27
|
+
#endif /* HAVE_CONFIG_H */
|
|
28
|
+
|
|
29
|
+
#include <ngtcp2/ngtcp2.h>
|
|
30
|
+
|
|
31
|
+
static ngtcp2_info version = {NGTCP2_VERSION_AGE, NGTCP2_VERSION_NUM,
|
|
32
|
+
NGTCP2_VERSION};
|
|
33
|
+
|
|
34
|
+
const ngtcp2_info *ngtcp2_version(int least_version) {
|
|
35
|
+
if (least_version > NGTCP2_VERSION_NUM) {
|
|
36
|
+
return NULL;
|
|
37
|
+
}
|
|
38
|
+
return &version;
|
|
39
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* ngtcp2
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2021 ngtcp2 contributors
|
|
5
|
+
*
|
|
6
|
+
* Permission is hereby granted, free of charge, to any person obtaining
|
|
7
|
+
* a copy of this software and associated documentation files (the
|
|
8
|
+
* "Software"), to deal in the Software without restriction, including
|
|
9
|
+
* without limitation the rights to use, copy, modify, merge, publish,
|
|
10
|
+
* distribute, sublicense, and/or sell copies of the Software, and to
|
|
11
|
+
* permit persons to whom the Software is furnished to do so, subject to
|
|
12
|
+
* the following conditions:
|
|
13
|
+
*
|
|
14
|
+
* The above copyright notice and this permission notice shall be
|
|
15
|
+
* included in all copies or substantial portions of the Software.
|
|
16
|
+
*
|
|
17
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
18
|
+
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
19
|
+
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
20
|
+
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
21
|
+
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
22
|
+
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
23
|
+
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
/*
|
|
27
|
+
* Translated to C from the original C++ code
|
|
28
|
+
* https://quiche.googlesource.com/quiche/+/5be974e29f7e71a196e726d6e2272676d33ab77d/quic/core/congestion_control/windowed_filter.h
|
|
29
|
+
* with the following license:
|
|
30
|
+
*
|
|
31
|
+
* // Copyright (c) 2016 The Chromium Authors. All rights reserved.
|
|
32
|
+
* // Use of this source code is governed by a BSD-style license that can be
|
|
33
|
+
* // found in the LICENSE file.
|
|
34
|
+
*/
|
|
35
|
+
#include "ngtcp2_window_filter.h"
|
|
36
|
+
|
|
37
|
+
#include <string.h>
|
|
38
|
+
|
|
39
|
+
void ngtcp2_window_filter_init(ngtcp2_window_filter *wf,
|
|
40
|
+
uint64_t window_length) {
|
|
41
|
+
wf->window_length = window_length;
|
|
42
|
+
memset(wf->estimates, 0, sizeof(wf->estimates));
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
void ngtcp2_window_filter_update(ngtcp2_window_filter *wf, uint64_t new_sample,
|
|
46
|
+
uint64_t new_time) {
|
|
47
|
+
if (wf->estimates[0].sample == 0 || new_sample > wf->estimates[0].sample ||
|
|
48
|
+
new_time - wf->estimates[2].time > wf->window_length) {
|
|
49
|
+
ngtcp2_window_filter_reset(wf, new_sample, new_time);
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if (new_sample > wf->estimates[1].sample) {
|
|
54
|
+
wf->estimates[1].sample = new_sample;
|
|
55
|
+
wf->estimates[1].time = new_time;
|
|
56
|
+
wf->estimates[2] = wf->estimates[1];
|
|
57
|
+
} else if (new_sample > wf->estimates[2].sample) {
|
|
58
|
+
wf->estimates[2].sample = new_sample;
|
|
59
|
+
wf->estimates[2].time = new_time;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
if (new_time - wf->estimates[0].time > wf->window_length) {
|
|
63
|
+
wf->estimates[0] = wf->estimates[1];
|
|
64
|
+
wf->estimates[1] = wf->estimates[2];
|
|
65
|
+
wf->estimates[2].sample = new_sample;
|
|
66
|
+
wf->estimates[2].time = new_time;
|
|
67
|
+
|
|
68
|
+
if (new_time - wf->estimates[0].time > wf->window_length) {
|
|
69
|
+
wf->estimates[0] = wf->estimates[1];
|
|
70
|
+
wf->estimates[1] = wf->estimates[2];
|
|
71
|
+
}
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
if (wf->estimates[1].sample == wf->estimates[0].sample &&
|
|
76
|
+
new_time - wf->estimates[1].time > wf->window_length >> 2) {
|
|
77
|
+
wf->estimates[2].sample = new_sample;
|
|
78
|
+
wf->estimates[2].time = new_time;
|
|
79
|
+
wf->estimates[1] = wf->estimates[2];
|
|
80
|
+
return;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
if (wf->estimates[2].sample == wf->estimates[1].sample &&
|
|
84
|
+
new_time - wf->estimates[2].time > wf->window_length >> 1) {
|
|
85
|
+
wf->estimates[2].sample = new_sample;
|
|
86
|
+
wf->estimates[2].time = new_time;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
void ngtcp2_window_filter_reset(ngtcp2_window_filter *wf, uint64_t new_sample,
|
|
91
|
+
uint64_t new_time) {
|
|
92
|
+
wf->estimates[0].sample = new_sample;
|
|
93
|
+
wf->estimates[0].time = new_time;
|
|
94
|
+
wf->estimates[1] = wf->estimates[2] = wf->estimates[0];
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
uint64_t ngtcp2_window_filter_get_best(ngtcp2_window_filter *wf) {
|
|
98
|
+
return wf->estimates[0].sample;
|
|
99
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* ngtcp2
|
|
3
|
+
*
|
|
4
|
+
* Copyright (c) 2021 ngtcp2 contributors
|
|
5
|
+
*
|
|
6
|
+
* Permission is hereby granted, free of charge, to any person obtaining
|
|
7
|
+
* a copy of this software and associated documentation files (the
|
|
8
|
+
* "Software"), to deal in the Software without restriction, including
|
|
9
|
+
* without limitation the rights to use, copy, modify, merge, publish,
|
|
10
|
+
* distribute, sublicense, and/or sell copies of the Software, and to
|
|
11
|
+
* permit persons to whom the Software is furnished to do so, subject to
|
|
12
|
+
* the following conditions:
|
|
13
|
+
*
|
|
14
|
+
* The above copyright notice and this permission notice shall be
|
|
15
|
+
* included in all copies or substantial portions of the Software.
|
|
16
|
+
*
|
|
17
|
+
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
18
|
+
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
19
|
+
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
20
|
+
* NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
21
|
+
* LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
22
|
+
* OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
23
|
+
* WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
24
|
+
*/
|
|
25
|
+
|
|
26
|
+
/*
|
|
27
|
+
* Translated to C from the original C++ code
|
|
28
|
+
* https://quiche.googlesource.com/quiche/+/5be974e29f7e71a196e726d6e2272676d33ab77d/quic/core/congestion_control/windowed_filter.h
|
|
29
|
+
* with the following license:
|
|
30
|
+
*
|
|
31
|
+
* // Copyright (c) 2016 The Chromium Authors. All rights reserved.
|
|
32
|
+
* // Use of this source code is governed by a BSD-style license that can be
|
|
33
|
+
* // found in the LICENSE file.
|
|
34
|
+
*/
|
|
35
|
+
#ifndef NGTCP2_WINDOW_FILTER_H
|
|
36
|
+
#define NGTCP2_WINDOW_FILTER_H
|
|
37
|
+
|
|
38
|
+
#ifdef HAVE_CONFIG_H
|
|
39
|
+
# include <config.h>
|
|
40
|
+
#endif /* HAVE_CONFIG_H */
|
|
41
|
+
|
|
42
|
+
#include <ngtcp2/ngtcp2.h>
|
|
43
|
+
|
|
44
|
+
typedef struct ngtcp2_window_filter_sample {
|
|
45
|
+
uint64_t sample;
|
|
46
|
+
uint64_t time;
|
|
47
|
+
} ngtcp2_window_filter_sample;
|
|
48
|
+
|
|
49
|
+
typedef struct ngtcp2_window_filter {
|
|
50
|
+
uint64_t window_length;
|
|
51
|
+
ngtcp2_window_filter_sample estimates[3];
|
|
52
|
+
} ngtcp2_window_filter;
|
|
53
|
+
|
|
54
|
+
void ngtcp2_window_filter_init(ngtcp2_window_filter *wf,
|
|
55
|
+
uint64_t window_length);
|
|
56
|
+
|
|
57
|
+
void ngtcp2_window_filter_update(ngtcp2_window_filter *wf, uint64_t new_sample,
|
|
58
|
+
uint64_t new_time);
|
|
59
|
+
|
|
60
|
+
void ngtcp2_window_filter_reset(ngtcp2_window_filter *wf, uint64_t new_sample,
|
|
61
|
+
uint64_t new_time);
|
|
62
|
+
|
|
63
|
+
uint64_t ngtcp2_window_filter_get_best(ngtcp2_window_filter *wf);
|
|
64
|
+
|
|
65
|
+
#endif /* NGTCP2_WINDOW_FILTER_H */
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
# ===========================================================================
|
|
2
|
+
# http://www.gnu.org/software/autoconf-archive/ax_check_compile_flag.html
|
|
3
|
+
# ===========================================================================
|
|
4
|
+
#
|
|
5
|
+
# SYNOPSIS
|
|
6
|
+
#
|
|
7
|
+
# AX_CHECK_COMPILE_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
|
|
8
|
+
#
|
|
9
|
+
# DESCRIPTION
|
|
10
|
+
#
|
|
11
|
+
# Check whether the given FLAG works with the current language's compiler
|
|
12
|
+
# or gives an error. (Warnings, however, are ignored)
|
|
13
|
+
#
|
|
14
|
+
# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
|
|
15
|
+
# success/failure.
|
|
16
|
+
#
|
|
17
|
+
# If EXTRA-FLAGS is defined, it is added to the current language's default
|
|
18
|
+
# flags (e.g. CFLAGS) when the check is done. The check is thus made with
|
|
19
|
+
# the flags: "CFLAGS EXTRA-FLAGS FLAG". This can for example be used to
|
|
20
|
+
# force the compiler to issue an error when a bad flag is given.
|
|
21
|
+
#
|
|
22
|
+
# INPUT gives an alternative input source to AC_COMPILE_IFELSE.
|
|
23
|
+
#
|
|
24
|
+
# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
|
|
25
|
+
# macro in sync with AX_CHECK_{PREPROC,LINK}_FLAG.
|
|
26
|
+
#
|
|
27
|
+
# LICENSE
|
|
28
|
+
#
|
|
29
|
+
# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
|
|
30
|
+
# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
|
|
31
|
+
#
|
|
32
|
+
# This program is free software: you can redistribute it and/or modify it
|
|
33
|
+
# under the terms of the GNU General Public License as published by the
|
|
34
|
+
# Free Software Foundation, either version 3 of the License, or (at your
|
|
35
|
+
# option) any later version.
|
|
36
|
+
#
|
|
37
|
+
# This program is distributed in the hope that it will be useful, but
|
|
38
|
+
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
39
|
+
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
|
|
40
|
+
# Public License for more details.
|
|
41
|
+
#
|
|
42
|
+
# You should have received a copy of the GNU General Public License along
|
|
43
|
+
# with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
44
|
+
#
|
|
45
|
+
# As a special exception, the respective Autoconf Macro's copyright owner
|
|
46
|
+
# gives unlimited permission to copy, distribute and modify the configure
|
|
47
|
+
# scripts that are the output of Autoconf when processing the Macro. You
|
|
48
|
+
# need not follow the terms of the GNU General Public License when using
|
|
49
|
+
# or distributing such scripts, even though portions of the text of the
|
|
50
|
+
# Macro appear in them. The GNU General Public License (GPL) does govern
|
|
51
|
+
# all other use of the material that constitutes the Autoconf Macro.
|
|
52
|
+
#
|
|
53
|
+
# This special exception to the GPL applies to versions of the Autoconf
|
|
54
|
+
# Macro released by the Autoconf Archive. When you make and distribute a
|
|
55
|
+
# modified version of the Autoconf Macro, you may extend this special
|
|
56
|
+
# exception to the GPL to apply to your modified version as well.
|
|
57
|
+
|
|
58
|
+
#serial 4
|
|
59
|
+
|
|
60
|
+
AC_DEFUN([AX_CHECK_COMPILE_FLAG],
|
|
61
|
+
[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
|
|
62
|
+
AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_[]_AC_LANG_ABBREV[]flags_$4_$1])dnl
|
|
63
|
+
AC_CACHE_CHECK([whether _AC_LANG compiler accepts $1], CACHEVAR, [
|
|
64
|
+
ax_check_save_flags=$[]_AC_LANG_PREFIX[]FLAGS
|
|
65
|
+
_AC_LANG_PREFIX[]FLAGS="$[]_AC_LANG_PREFIX[]FLAGS $4 $1"
|
|
66
|
+
AC_COMPILE_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
|
|
67
|
+
[AS_VAR_SET(CACHEVAR,[yes])],
|
|
68
|
+
[AS_VAR_SET(CACHEVAR,[no])])
|
|
69
|
+
_AC_LANG_PREFIX[]FLAGS=$ax_check_save_flags])
|
|
70
|
+
AS_VAR_IF(CACHEVAR,yes,
|
|
71
|
+
[m4_default([$2], :)],
|
|
72
|
+
[m4_default([$3], :)])
|
|
73
|
+
AS_VAR_POPDEF([CACHEVAR])dnl
|
|
74
|
+
])dnl AX_CHECK_COMPILE_FLAGS
|