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,426 @@
|
|
|
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
|
+
#include "ngtcp2_vec_test.h"
|
|
26
|
+
|
|
27
|
+
#include <CUnit/CUnit.h>
|
|
28
|
+
|
|
29
|
+
#include "ngtcp2_vec.h"
|
|
30
|
+
#include "ngtcp2_test_helper.h"
|
|
31
|
+
|
|
32
|
+
void test_ngtcp2_vec_split(void) {
|
|
33
|
+
uint8_t nulldata[1024];
|
|
34
|
+
ngtcp2_vec a[16], b[16];
|
|
35
|
+
size_t acnt, bcnt;
|
|
36
|
+
ngtcp2_ssize nsplit;
|
|
37
|
+
|
|
38
|
+
/* No split occurs */
|
|
39
|
+
acnt = 1;
|
|
40
|
+
a[0].len = 135;
|
|
41
|
+
a[0].base = nulldata;
|
|
42
|
+
|
|
43
|
+
bcnt = 0;
|
|
44
|
+
b[0].len = 0;
|
|
45
|
+
b[0].base = NULL;
|
|
46
|
+
|
|
47
|
+
nsplit = ngtcp2_vec_split(a, &acnt, b, &bcnt, 135, 16);
|
|
48
|
+
|
|
49
|
+
CU_ASSERT(0 == nsplit);
|
|
50
|
+
CU_ASSERT(1 == acnt);
|
|
51
|
+
CU_ASSERT(135 == a[0].len);
|
|
52
|
+
CU_ASSERT(nulldata == a[0].base);
|
|
53
|
+
CU_ASSERT(0 == bcnt);
|
|
54
|
+
CU_ASSERT(0 == b[0].len);
|
|
55
|
+
CU_ASSERT(NULL == b[0].base);
|
|
56
|
+
|
|
57
|
+
/* Split once */
|
|
58
|
+
acnt = 1;
|
|
59
|
+
a[0].len = 135;
|
|
60
|
+
a[0].base = nulldata;
|
|
61
|
+
|
|
62
|
+
bcnt = 0;
|
|
63
|
+
b[0].len = 0;
|
|
64
|
+
b[0].base = NULL;
|
|
65
|
+
|
|
66
|
+
nsplit = ngtcp2_vec_split(a, &acnt, b, &bcnt, 87, 16);
|
|
67
|
+
|
|
68
|
+
CU_ASSERT(48 == nsplit);
|
|
69
|
+
CU_ASSERT(1 == acnt);
|
|
70
|
+
CU_ASSERT(87 == a[0].len);
|
|
71
|
+
CU_ASSERT(nulldata == a[0].base);
|
|
72
|
+
CU_ASSERT(1 == bcnt);
|
|
73
|
+
CU_ASSERT(48 == b[0].len);
|
|
74
|
+
CU_ASSERT(nulldata + 87 == b[0].base);
|
|
75
|
+
|
|
76
|
+
/* Multiple a vector; split at ngtcp2_vec boundary */
|
|
77
|
+
acnt = 2;
|
|
78
|
+
a[0].len = 33;
|
|
79
|
+
a[0].base = nulldata;
|
|
80
|
+
a[1].len = 89;
|
|
81
|
+
a[1].base = nulldata + 33;
|
|
82
|
+
|
|
83
|
+
bcnt = 0;
|
|
84
|
+
b[0].len = 0;
|
|
85
|
+
b[0].base = NULL;
|
|
86
|
+
|
|
87
|
+
nsplit = ngtcp2_vec_split(a, &acnt, b, &bcnt, 33, 16);
|
|
88
|
+
|
|
89
|
+
CU_ASSERT(89 == nsplit);
|
|
90
|
+
CU_ASSERT(1 == acnt);
|
|
91
|
+
CU_ASSERT(33 == a[0].len);
|
|
92
|
+
CU_ASSERT(nulldata == a[0].base);
|
|
93
|
+
CU_ASSERT(1 == bcnt);
|
|
94
|
+
CU_ASSERT(89 == b[0].len);
|
|
95
|
+
CU_ASSERT(nulldata + 33 == b[0].base);
|
|
96
|
+
|
|
97
|
+
/* Multiple a vector; not split at ngtcp2_vec boundary */
|
|
98
|
+
acnt = 3;
|
|
99
|
+
a[0].len = 33;
|
|
100
|
+
a[0].base = nulldata;
|
|
101
|
+
a[1].len = 89;
|
|
102
|
+
a[1].base = nulldata + 33;
|
|
103
|
+
a[2].len = 211;
|
|
104
|
+
a[2].base = nulldata + 33 + 89;
|
|
105
|
+
|
|
106
|
+
bcnt = 0;
|
|
107
|
+
b[0].len = 0;
|
|
108
|
+
b[0].base = NULL;
|
|
109
|
+
|
|
110
|
+
nsplit = ngtcp2_vec_split(a, &acnt, b, &bcnt, 34, 16);
|
|
111
|
+
|
|
112
|
+
CU_ASSERT(88 + 211 == nsplit);
|
|
113
|
+
CU_ASSERT(2 == acnt);
|
|
114
|
+
CU_ASSERT(33 == a[0].len);
|
|
115
|
+
CU_ASSERT(nulldata == a[0].base);
|
|
116
|
+
CU_ASSERT(1 == a[1].len);
|
|
117
|
+
CU_ASSERT(nulldata + 33 == a[1].base);
|
|
118
|
+
CU_ASSERT(2 == bcnt);
|
|
119
|
+
CU_ASSERT(88 == b[0].len);
|
|
120
|
+
CU_ASSERT(nulldata + 34 == b[0].base);
|
|
121
|
+
CU_ASSERT(211 == b[1].len);
|
|
122
|
+
CU_ASSERT(nulldata + 34 + 88 == b[1].base);
|
|
123
|
+
|
|
124
|
+
/* Multiple a vector; split at ngtcp2_vec boundary; continuous
|
|
125
|
+
data */
|
|
126
|
+
acnt = 2;
|
|
127
|
+
a[0].len = 33;
|
|
128
|
+
a[0].base = nulldata;
|
|
129
|
+
a[1].len = 89;
|
|
130
|
+
a[1].base = nulldata + 33;
|
|
131
|
+
|
|
132
|
+
bcnt = 2;
|
|
133
|
+
b[0].len = 17;
|
|
134
|
+
b[0].base = nulldata + 33 + 89;
|
|
135
|
+
b[1].len = 3;
|
|
136
|
+
b[1].base = nulldata + 33 + 89 + 17;
|
|
137
|
+
|
|
138
|
+
nsplit = ngtcp2_vec_split(a, &acnt, b, &bcnt, 33, 16);
|
|
139
|
+
|
|
140
|
+
CU_ASSERT(89 == nsplit);
|
|
141
|
+
CU_ASSERT(1 == acnt);
|
|
142
|
+
CU_ASSERT(33 == a[0].len);
|
|
143
|
+
CU_ASSERT(nulldata == a[0].base);
|
|
144
|
+
CU_ASSERT(2 == bcnt);
|
|
145
|
+
CU_ASSERT(89 + 17 == b[0].len);
|
|
146
|
+
CU_ASSERT(nulldata + 33 == b[0].base);
|
|
147
|
+
CU_ASSERT(3 == b[1].len);
|
|
148
|
+
CU_ASSERT(nulldata + 33 + 89 + 17 == b[1].base);
|
|
149
|
+
|
|
150
|
+
/* Multiple a vector; not split at ngtcp2_vec boundary; continuous
|
|
151
|
+
data; nmove == 0 */
|
|
152
|
+
acnt = 2;
|
|
153
|
+
a[0].len = 33;
|
|
154
|
+
a[0].base = nulldata;
|
|
155
|
+
a[1].len = 89;
|
|
156
|
+
a[1].base = nulldata + 33;
|
|
157
|
+
|
|
158
|
+
bcnt = 2;
|
|
159
|
+
b[0].len = 17;
|
|
160
|
+
b[0].base = nulldata + 33 + 89;
|
|
161
|
+
b[1].len = 3;
|
|
162
|
+
b[1].base = nulldata + 33 + 89 + 17;
|
|
163
|
+
|
|
164
|
+
nsplit = ngtcp2_vec_split(a, &acnt, b, &bcnt, 34, 16);
|
|
165
|
+
|
|
166
|
+
CU_ASSERT(88 == nsplit);
|
|
167
|
+
CU_ASSERT(2 == acnt);
|
|
168
|
+
CU_ASSERT(33 == a[0].len);
|
|
169
|
+
CU_ASSERT(nulldata == a[0].base);
|
|
170
|
+
CU_ASSERT(1 == a[1].len);
|
|
171
|
+
CU_ASSERT(nulldata + 33 == a[1].base);
|
|
172
|
+
CU_ASSERT(2 == bcnt);
|
|
173
|
+
CU_ASSERT(88 + 17 == b[0].len);
|
|
174
|
+
CU_ASSERT(nulldata + 34 == b[0].base);
|
|
175
|
+
CU_ASSERT(3 == b[1].len);
|
|
176
|
+
CU_ASSERT(nulldata + 33 + 89 + 17 == b[1].base);
|
|
177
|
+
|
|
178
|
+
/* Multiple a vector; not split at ngtcp2_vec boundary; continuous
|
|
179
|
+
data */
|
|
180
|
+
acnt = 3;
|
|
181
|
+
a[0].len = 33;
|
|
182
|
+
a[0].base = nulldata;
|
|
183
|
+
a[1].len = 89;
|
|
184
|
+
a[1].base = nulldata + 33;
|
|
185
|
+
a[2].len = 211;
|
|
186
|
+
a[2].base = nulldata + 33 + 89;
|
|
187
|
+
|
|
188
|
+
bcnt = 2;
|
|
189
|
+
b[0].len = 17;
|
|
190
|
+
b[0].base = nulldata + 33 + 89 + 211;
|
|
191
|
+
b[1].len = 3;
|
|
192
|
+
b[1].base = nulldata + 33 + 89 + 211 + 17;
|
|
193
|
+
|
|
194
|
+
nsplit = ngtcp2_vec_split(a, &acnt, b, &bcnt, 34, 16);
|
|
195
|
+
|
|
196
|
+
CU_ASSERT(88 + 211 == nsplit);
|
|
197
|
+
CU_ASSERT(2 == acnt);
|
|
198
|
+
CU_ASSERT(33 == a[0].len);
|
|
199
|
+
CU_ASSERT(nulldata == a[0].base);
|
|
200
|
+
CU_ASSERT(1 == a[1].len);
|
|
201
|
+
CU_ASSERT(nulldata + 33 == a[1].base);
|
|
202
|
+
CU_ASSERT(3 == bcnt);
|
|
203
|
+
CU_ASSERT(88 == b[0].len);
|
|
204
|
+
CU_ASSERT(nulldata + 34 == b[0].base);
|
|
205
|
+
CU_ASSERT(211 + 17 == b[1].len);
|
|
206
|
+
CU_ASSERT(nulldata + 34 + 88 == b[1].base);
|
|
207
|
+
CU_ASSERT(3 == b[2].len);
|
|
208
|
+
CU_ASSERT(nulldata + 33 + 89 + 211 + 17 == b[2].base);
|
|
209
|
+
|
|
210
|
+
/* Multiple a vector; split at ngtcp2_vec boundary; not continuous
|
|
211
|
+
data */
|
|
212
|
+
acnt = 2;
|
|
213
|
+
a[0].len = 33;
|
|
214
|
+
a[0].base = nulldata;
|
|
215
|
+
a[1].len = 89;
|
|
216
|
+
a[1].base = nulldata + 33;
|
|
217
|
+
|
|
218
|
+
bcnt = 2;
|
|
219
|
+
b[0].len = 17;
|
|
220
|
+
b[0].base = nulldata + 256;
|
|
221
|
+
b[1].len = 3;
|
|
222
|
+
b[1].base = nulldata + 256 + 17;
|
|
223
|
+
|
|
224
|
+
nsplit = ngtcp2_vec_split(a, &acnt, b, &bcnt, 33, 16);
|
|
225
|
+
|
|
226
|
+
CU_ASSERT(89 == nsplit);
|
|
227
|
+
CU_ASSERT(1 == acnt);
|
|
228
|
+
CU_ASSERT(33 == a[0].len);
|
|
229
|
+
CU_ASSERT(nulldata == a[0].base);
|
|
230
|
+
CU_ASSERT(3 == bcnt);
|
|
231
|
+
CU_ASSERT(89 == b[0].len);
|
|
232
|
+
CU_ASSERT(nulldata + 33 == b[0].base);
|
|
233
|
+
CU_ASSERT(17 == b[1].len);
|
|
234
|
+
CU_ASSERT(nulldata + 256 == b[1].base);
|
|
235
|
+
CU_ASSERT(3 == b[2].len);
|
|
236
|
+
CU_ASSERT(nulldata + 256 + 17 == b[2].base);
|
|
237
|
+
|
|
238
|
+
/* maxcnt exceeded; continuous */
|
|
239
|
+
acnt = 2;
|
|
240
|
+
a[0].len = 33;
|
|
241
|
+
a[0].base = nulldata;
|
|
242
|
+
a[1].len = 89;
|
|
243
|
+
a[1].base = nulldata + 33;
|
|
244
|
+
|
|
245
|
+
bcnt = 1;
|
|
246
|
+
b[0].len = 17;
|
|
247
|
+
b[0].base = nulldata + 33 + 89;
|
|
248
|
+
|
|
249
|
+
nsplit = ngtcp2_vec_split(a, &acnt, b, &bcnt, 32, 1);
|
|
250
|
+
|
|
251
|
+
CU_ASSERT(-1 == nsplit);
|
|
252
|
+
|
|
253
|
+
/* maxcnt exceeded; not continuous */
|
|
254
|
+
acnt = 2;
|
|
255
|
+
a[0].len = 33;
|
|
256
|
+
a[0].base = nulldata;
|
|
257
|
+
a[1].len = 89;
|
|
258
|
+
a[1].base = nulldata + 33;
|
|
259
|
+
|
|
260
|
+
bcnt = 1;
|
|
261
|
+
b[0].len = 17;
|
|
262
|
+
b[0].base = nulldata + 256;
|
|
263
|
+
|
|
264
|
+
nsplit = ngtcp2_vec_split(a, &acnt, b, &bcnt, 33, 1);
|
|
265
|
+
|
|
266
|
+
CU_ASSERT(-1 == nsplit);
|
|
267
|
+
}
|
|
268
|
+
|
|
269
|
+
void test_ngtcp2_vec_merge(void) {
|
|
270
|
+
uint8_t nulldata[1024];
|
|
271
|
+
ngtcp2_vec a[16], b[16];
|
|
272
|
+
size_t acnt, bcnt;
|
|
273
|
+
size_t nmerged;
|
|
274
|
+
|
|
275
|
+
/* Merge one ngtcp2_vec completely */
|
|
276
|
+
acnt = 1;
|
|
277
|
+
a[0].len = 33;
|
|
278
|
+
a[0].base = nulldata;
|
|
279
|
+
|
|
280
|
+
bcnt = 1;
|
|
281
|
+
b[0].len = 11;
|
|
282
|
+
b[0].base = nulldata + 33;
|
|
283
|
+
|
|
284
|
+
nmerged = ngtcp2_vec_merge(a, &acnt, b, &bcnt, 11, 16);
|
|
285
|
+
|
|
286
|
+
CU_ASSERT(11 == nmerged);
|
|
287
|
+
CU_ASSERT(1 == acnt);
|
|
288
|
+
CU_ASSERT(44 == a[0].len);
|
|
289
|
+
CU_ASSERT(nulldata == a[0].base);
|
|
290
|
+
CU_ASSERT(0 == bcnt);
|
|
291
|
+
|
|
292
|
+
/* Merge ngtcp2_vec partially */
|
|
293
|
+
acnt = 1;
|
|
294
|
+
a[0].len = 33;
|
|
295
|
+
a[0].base = nulldata;
|
|
296
|
+
|
|
297
|
+
bcnt = 1;
|
|
298
|
+
b[0].len = 11;
|
|
299
|
+
b[0].base = nulldata + 33;
|
|
300
|
+
|
|
301
|
+
nmerged = ngtcp2_vec_merge(a, &acnt, b, &bcnt, 10, 16);
|
|
302
|
+
|
|
303
|
+
CU_ASSERT(10 == nmerged);
|
|
304
|
+
CU_ASSERT(1 == acnt);
|
|
305
|
+
CU_ASSERT(43 == a[0].len);
|
|
306
|
+
CU_ASSERT(nulldata == a[0].base);
|
|
307
|
+
CU_ASSERT(1 == bcnt);
|
|
308
|
+
CU_ASSERT(1 == b[0].len);
|
|
309
|
+
CU_ASSERT(nulldata + 33 + 10 == b[0].base);
|
|
310
|
+
|
|
311
|
+
/* Merge one ngtcp2_vec completely; data is not continuous */
|
|
312
|
+
acnt = 1;
|
|
313
|
+
a[0].len = 33;
|
|
314
|
+
a[0].base = nulldata;
|
|
315
|
+
|
|
316
|
+
bcnt = 1;
|
|
317
|
+
b[0].len = 11;
|
|
318
|
+
b[0].base = nulldata + 256;
|
|
319
|
+
|
|
320
|
+
nmerged = ngtcp2_vec_merge(a, &acnt, b, &bcnt, 11, 16);
|
|
321
|
+
|
|
322
|
+
CU_ASSERT(11 == nmerged);
|
|
323
|
+
CU_ASSERT(2 == acnt);
|
|
324
|
+
CU_ASSERT(33 == a[0].len);
|
|
325
|
+
CU_ASSERT(nulldata == a[0].base);
|
|
326
|
+
CU_ASSERT(11 == a[1].len);
|
|
327
|
+
CU_ASSERT(nulldata + 256 == a[1].base);
|
|
328
|
+
CU_ASSERT(0 == bcnt);
|
|
329
|
+
|
|
330
|
+
/* Merge ngtcp2_vec partially; data is not continuous */
|
|
331
|
+
acnt = 1;
|
|
332
|
+
a[0].len = 33;
|
|
333
|
+
a[0].base = nulldata;
|
|
334
|
+
|
|
335
|
+
bcnt = 1;
|
|
336
|
+
b[0].len = 11;
|
|
337
|
+
b[0].base = nulldata + 256;
|
|
338
|
+
|
|
339
|
+
nmerged = ngtcp2_vec_merge(a, &acnt, b, &bcnt, 10, 16);
|
|
340
|
+
|
|
341
|
+
CU_ASSERT(10 == nmerged);
|
|
342
|
+
CU_ASSERT(2 == acnt);
|
|
343
|
+
CU_ASSERT(33 == a[0].len);
|
|
344
|
+
CU_ASSERT(nulldata == a[0].base);
|
|
345
|
+
CU_ASSERT(10 == a[1].len);
|
|
346
|
+
CU_ASSERT(nulldata + 256 == a[1].base);
|
|
347
|
+
CU_ASSERT(1 == bcnt);
|
|
348
|
+
CU_ASSERT(1 == b[0].len);
|
|
349
|
+
CU_ASSERT(nulldata + 256 + 10 == b[0].base);
|
|
350
|
+
|
|
351
|
+
/* Merge ends at the ngtcp2_vec boundary */
|
|
352
|
+
acnt = 1;
|
|
353
|
+
a[0].len = 33;
|
|
354
|
+
a[0].base = nulldata;
|
|
355
|
+
|
|
356
|
+
bcnt = 2;
|
|
357
|
+
b[0].len = 11;
|
|
358
|
+
b[0].base = nulldata + 256;
|
|
359
|
+
b[1].len = 19;
|
|
360
|
+
b[1].base = nulldata + 256 + 11;
|
|
361
|
+
|
|
362
|
+
nmerged = ngtcp2_vec_merge(a, &acnt, b, &bcnt, 11, 16);
|
|
363
|
+
|
|
364
|
+
CU_ASSERT(11 == nmerged);
|
|
365
|
+
CU_ASSERT(2 == acnt);
|
|
366
|
+
CU_ASSERT(33 == a[0].len);
|
|
367
|
+
CU_ASSERT(nulldata == a[0].base);
|
|
368
|
+
CU_ASSERT(11 == a[1].len);
|
|
369
|
+
CU_ASSERT(nulldata + 256 == a[1].base);
|
|
370
|
+
CU_ASSERT(1 == bcnt);
|
|
371
|
+
CU_ASSERT(19 == b[0].len);
|
|
372
|
+
CU_ASSERT(nulldata + 256 + 11 == b[0].base);
|
|
373
|
+
|
|
374
|
+
/* Merge occurs at the last object */
|
|
375
|
+
acnt = 1;
|
|
376
|
+
a[0].len = 33;
|
|
377
|
+
a[0].base = nulldata;
|
|
378
|
+
|
|
379
|
+
bcnt = 2;
|
|
380
|
+
b[0].len = 11;
|
|
381
|
+
b[0].base = nulldata + 33;
|
|
382
|
+
b[1].len = 99;
|
|
383
|
+
b[1].base = nulldata + 33 + 11;
|
|
384
|
+
|
|
385
|
+
nmerged = ngtcp2_vec_merge(a, &acnt, b, &bcnt, 100, 1);
|
|
386
|
+
|
|
387
|
+
CU_ASSERT(100 == nmerged);
|
|
388
|
+
CU_ASSERT(1 == acnt);
|
|
389
|
+
CU_ASSERT(133 == a[0].len);
|
|
390
|
+
CU_ASSERT(nulldata == a[0].base);
|
|
391
|
+
CU_ASSERT(1 == bcnt);
|
|
392
|
+
CU_ASSERT(10 == b[0].len);
|
|
393
|
+
CU_ASSERT(nulldata + 33 + 11 + 89 == b[0].base);
|
|
394
|
+
|
|
395
|
+
/* No merge occurs if object is full */
|
|
396
|
+
acnt = 1;
|
|
397
|
+
a[0].len = 33;
|
|
398
|
+
a[0].base = nulldata;
|
|
399
|
+
|
|
400
|
+
bcnt = 1;
|
|
401
|
+
b[0].len = 3;
|
|
402
|
+
b[0].base = nulldata + 100;
|
|
403
|
+
|
|
404
|
+
nmerged = ngtcp2_vec_merge(a, &acnt, b, &bcnt, 3, 1);
|
|
405
|
+
|
|
406
|
+
CU_ASSERT(0 == nmerged);
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
void test_ngtcp2_vec_len_varint(void) {
|
|
410
|
+
CU_ASSERT(0 == ngtcp2_vec_len_varint(NULL, 0));
|
|
411
|
+
|
|
412
|
+
#if SIZE_MAX == UINT64_MAX
|
|
413
|
+
{
|
|
414
|
+
ngtcp2_vec v[] = {{NULL, NGTCP2_MAX_VARINT}, {NULL, 1}};
|
|
415
|
+
|
|
416
|
+
CU_ASSERT(-1 == ngtcp2_vec_len_varint(v, ngtcp2_arraylen(v)));
|
|
417
|
+
}
|
|
418
|
+
|
|
419
|
+
{
|
|
420
|
+
ngtcp2_vec v[] = {{NULL, NGTCP2_MAX_VARINT - 1}, {NULL, 1}};
|
|
421
|
+
|
|
422
|
+
CU_ASSERT(NGTCP2_MAX_VARINT ==
|
|
423
|
+
ngtcp2_vec_len_varint(v, ngtcp2_arraylen(v)));
|
|
424
|
+
}
|
|
425
|
+
#endif /* SIZE_MAX == UINT64_MAX */
|
|
426
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
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_TEST_H
|
|
26
|
+
#define NGTCP2_VEC_TEST_H
|
|
27
|
+
|
|
28
|
+
#ifdef HAVE_CONFIG_H
|
|
29
|
+
# include <config.h>
|
|
30
|
+
#endif /* HAVE_CONFIG_H */
|
|
31
|
+
|
|
32
|
+
void test_ngtcp2_vec_split(void);
|
|
33
|
+
void test_ngtcp2_vec_merge(void);
|
|
34
|
+
void test_ngtcp2_vec_len_varint(void);
|
|
35
|
+
|
|
36
|
+
#endif /* NGTCP2_VEC_TEST_H */
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# ngtcp2
|
|
2
|
+
|
|
3
|
+
# Copyright (c) 2017 ngtcp2 contributors
|
|
4
|
+
# Copyright (c) 2014 nghttp2 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
|
+
if(LIBEV_FOUND AND LIBNGHTTP3_FOUND)
|
|
26
|
+
|
|
27
|
+
set(LIBHTTP_PARSER_SOURCES
|
|
28
|
+
http-parser/http_parser.c
|
|
29
|
+
)
|
|
30
|
+
add_library(http-parser OBJECT ${LIBHTTP_PARSER_SOURCES})
|
|
31
|
+
set_target_properties(http-parser PROPERTIES
|
|
32
|
+
POSITION_INDEPENDENT_CODE ON)
|
|
33
|
+
|
|
34
|
+
endif()
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
# ngtcp2
|
|
2
|
+
|
|
3
|
+
# Copyright (c) 2017 ngtcp2 contributors
|
|
4
|
+
# Copyright (c) 2014 nghttp2 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
|
+
EXTRA_DIST = CMakeLists.txt
|
|
25
|
+
|
|
26
|
+
AM_CPPFLAGS = @DEFS@
|
|
27
|
+
|
|
28
|
+
noinst_LTLIBRARIES = libhttp-parser.la
|
|
29
|
+
libhttp_parser_la_SOURCES = \
|
|
30
|
+
http-parser/http_parser.c \
|
|
31
|
+
http-parser/http_parser.h
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Authors ordered by first contribution.
|
|
2
|
+
Ryan Dahl <ry@tinyclouds.org>
|
|
3
|
+
Jeremy Hinegardner <jeremy@hinegardner.org>
|
|
4
|
+
Sergey Shepelev <temotor@gmail.com>
|
|
5
|
+
Joe Damato <ice799@gmail.com>
|
|
6
|
+
tomika <tomika_nospam@freemail.hu>
|
|
7
|
+
Phoenix Sol <phoenix@burninglabs.com>
|
|
8
|
+
Cliff Frey <cliff@meraki.com>
|
|
9
|
+
Ewen Cheslack-Postava <ewencp@cs.stanford.edu>
|
|
10
|
+
Santiago Gala <sgala@apache.org>
|
|
11
|
+
Tim Becker <tim.becker@syngenio.de>
|
|
12
|
+
Jeff Terrace <jterrace@gmail.com>
|
|
13
|
+
Ben Noordhuis <info@bnoordhuis.nl>
|
|
14
|
+
Nathan Rajlich <nathan@tootallnate.net>
|
|
15
|
+
Mark Nottingham <mnot@mnot.net>
|
|
16
|
+
Aman Gupta <aman@tmm1.net>
|
|
17
|
+
Tim Becker <tim.becker@kuriositaet.de>
|
|
18
|
+
Sean Cunningham <sean.cunningham@mandiant.com>
|
|
19
|
+
Peter Griess <pg@std.in>
|
|
20
|
+
Salman Haq <salman.haq@asti-usa.com>
|
|
21
|
+
Cliff Frey <clifffrey@gmail.com>
|
|
22
|
+
Jon Kolb <jon@b0g.us>
|
|
23
|
+
Fouad Mardini <f.mardini@gmail.com>
|
|
24
|
+
Paul Querna <pquerna@apache.org>
|
|
25
|
+
Felix Geisendörfer <felix@debuggable.com>
|
|
26
|
+
koichik <koichik@improvement.jp>
|
|
27
|
+
Andre Caron <andre.l.caron@gmail.com>
|
|
28
|
+
Ivo Raisr <ivosh@ivosh.net>
|
|
29
|
+
James McLaughlin <jamie@lacewing-project.org>
|
|
30
|
+
David Gwynne <loki@animata.net>
|
|
31
|
+
Thomas LE ROUX <thomas@november-eleven.fr>
|
|
32
|
+
Randy Rizun <rrizun@ortivawireless.com>
|
|
33
|
+
Andre Louis Caron <andre.louis.caron@usherbrooke.ca>
|
|
34
|
+
Simon Zimmermann <simonz05@gmail.com>
|
|
35
|
+
Erik Dubbelboer <erik@dubbelboer.com>
|
|
36
|
+
Martell Malone <martellmalone@gmail.com>
|
|
37
|
+
Bertrand Paquet <bpaquet@octo.com>
|
|
38
|
+
BogDan Vatra <bogdan@kde.org>
|
|
39
|
+
Peter Faiman <peter@thepicard.org>
|
|
40
|
+
Corey Richardson <corey@octayn.net>
|
|
41
|
+
Tóth Tamás <tomika_nospam@freemail.hu>
|
|
42
|
+
Cam Swords <cam.swords@gmail.com>
|
|
43
|
+
Chris Dickinson <christopher.s.dickinson@gmail.com>
|
|
44
|
+
Uli Köhler <ukoehler@btronik.de>
|
|
45
|
+
Charlie Somerville <charlie@charliesomerville.com>
|
|
46
|
+
Patrik Stutz <patrik.stutz@gmail.com>
|
|
47
|
+
Fedor Indutny <fedor.indutny@gmail.com>
|
|
48
|
+
runner <runner.mei@gmail.com>
|
|
49
|
+
Alexis Campailla <alexis@janeasystems.com>
|
|
50
|
+
David Wragg <david@wragg.org>
|
|
51
|
+
Vinnie Falco <vinnie.falco@gmail.com>
|
|
52
|
+
Alex Butum <alexbutum@linux.com>
|
|
53
|
+
Rex Feng <rexfeng@gmail.com>
|
|
54
|
+
Alex Kocharin <alex@kocharin.ru>
|
|
55
|
+
Mark Koopman <markmontymark@yahoo.com>
|
|
56
|
+
Helge Heß <me@helgehess.eu>
|
|
57
|
+
Alexis La Goutte <alexis.lagoutte@gmail.com>
|
|
58
|
+
George Miroshnykov <george.miroshnykov@gmail.com>
|
|
59
|
+
Maciej Małecki <me@mmalecki.com>
|
|
60
|
+
Marc O'Morain <github.com@marcomorain.com>
|
|
61
|
+
Jeff Pinner <jpinner@twitter.com>
|
|
62
|
+
Timothy J Fontaine <tjfontaine@gmail.com>
|
|
63
|
+
Akagi201 <akagi201@gmail.com>
|
|
64
|
+
Romain Giraud <giraud.romain@gmail.com>
|
|
65
|
+
Jay Satiro <raysatiro@yahoo.com>
|
|
66
|
+
Arne Steen <Arne.Steen@gmx.de>
|
|
67
|
+
Kjell Schubert <kjell.schubert@gmail.com>
|
|
68
|
+
Olivier Mengué <dolmen@cpan.org>
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
http_parser.c is based on src/http/ngx_http_parse.c from NGINX copyright
|
|
2
|
+
Igor Sysoev.
|
|
3
|
+
|
|
4
|
+
Additional changes are licensed under the same terms as NGINX and
|
|
5
|
+
copyright Joyent, Inc. and other Node contributors. All rights reserved.
|
|
6
|
+
|
|
7
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
8
|
+
of this software and associated documentation files (the "Software"), to
|
|
9
|
+
deal in the Software without restriction, including without limitation the
|
|
10
|
+
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or
|
|
11
|
+
sell copies of the Software, and to permit persons to whom the Software is
|
|
12
|
+
furnished to do so, subject to the following conditions:
|
|
13
|
+
|
|
14
|
+
The above copyright notice and this permission notice shall be included in
|
|
15
|
+
all copies or substantial portions of the Software.
|
|
16
|
+
|
|
17
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
18
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
19
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
20
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
21
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
|
22
|
+
FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS
|
|
23
|
+
IN THE SOFTWARE.
|