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.
Files changed (343) hide show
  1. checksums.yaml +7 -0
  2. checksums.yaml.gz.sig +0 -0
  3. data/ext/ngtcp2/AUTHORS +44 -0
  4. data/ext/ngtcp2/CMakeLists.txt +431 -0
  5. data/ext/ngtcp2/CMakeOptions.txt +17 -0
  6. data/ext/ngtcp2/COPYING +22 -0
  7. data/ext/ngtcp2/ChangeLog +0 -0
  8. data/ext/ngtcp2/Makefile.am +60 -0
  9. data/ext/ngtcp2/NEWS +0 -0
  10. data/ext/ngtcp2/README +1 -0
  11. data/ext/ngtcp2/README.rst +258 -0
  12. data/ext/ngtcp2/ci/build_boringssl.sh +10 -0
  13. data/ext/ngtcp2/ci/build_nghttp3.sh +9 -0
  14. data/ext/ngtcp2/ci/build_openssl1.sh +8 -0
  15. data/ext/ngtcp2/ci/build_openssl1_cross.sh +9 -0
  16. data/ext/ngtcp2/ci/build_openssl3.sh +8 -0
  17. data/ext/ngtcp2/ci/build_picotls.sh +26 -0
  18. data/ext/ngtcp2/ci/build_wolfssl.sh +9 -0
  19. data/ext/ngtcp2/ci/gen-certificate.sh +8 -0
  20. data/ext/ngtcp2/cmake/ExtractValidFlags.cmake +31 -0
  21. data/ext/ngtcp2/cmake/FindCUnit.cmake +40 -0
  22. data/ext/ngtcp2/cmake/FindJemalloc.cmake +40 -0
  23. data/ext/ngtcp2/cmake/FindLibev.cmake +38 -0
  24. data/ext/ngtcp2/cmake/FindLibnghttp3.cmake +41 -0
  25. data/ext/ngtcp2/cmake/Findwolfssl.cmake +41 -0
  26. data/ext/ngtcp2/cmake/Version.cmake +11 -0
  27. data/ext/ngtcp2/cmakeconfig.h.in +36 -0
  28. data/ext/ngtcp2/configure.ac +755 -0
  29. data/ext/ngtcp2/crypto/CMakeLists.txt +56 -0
  30. data/ext/ngtcp2/crypto/Makefile.am +49 -0
  31. data/ext/ngtcp2/crypto/boringssl/CMakeLists.txt +64 -0
  32. data/ext/ngtcp2/crypto/boringssl/Makefile.am +39 -0
  33. data/ext/ngtcp2/crypto/boringssl/boringssl.c +630 -0
  34. data/ext/ngtcp2/crypto/boringssl/libngtcp2_crypto_boringssl.pc.in +33 -0
  35. data/ext/ngtcp2/crypto/gnutls/CMakeLists.txt +86 -0
  36. data/ext/ngtcp2/crypto/gnutls/Makefile.am +43 -0
  37. data/ext/ngtcp2/crypto/gnutls/gnutls.c +644 -0
  38. data/ext/ngtcp2/crypto/gnutls/libngtcp2_crypto_gnutls.pc.in +33 -0
  39. data/ext/ngtcp2/crypto/includes/CMakeLists.txt +56 -0
  40. data/ext/ngtcp2/crypto/includes/Makefile.am +45 -0
  41. data/ext/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto.h +893 -0
  42. data/ext/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto_boringssl.h +104 -0
  43. data/ext/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto_gnutls.h +107 -0
  44. data/ext/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto_openssl.h +132 -0
  45. data/ext/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto_picotls.h +246 -0
  46. data/ext/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto_wolfssl.h +106 -0
  47. data/ext/ngtcp2/crypto/openssl/CMakeLists.txt +86 -0
  48. data/ext/ngtcp2/crypto/openssl/Makefile.am +43 -0
  49. data/ext/ngtcp2/crypto/openssl/libngtcp2_crypto_openssl.pc.in +33 -0
  50. data/ext/ngtcp2/crypto/openssl/openssl.c +807 -0
  51. data/ext/ngtcp2/crypto/picotls/CMakeLists.txt +65 -0
  52. data/ext/ngtcp2/crypto/picotls/Makefile.am +39 -0
  53. data/ext/ngtcp2/crypto/picotls/libngtcp2_crypto_picotls.pc.in +33 -0
  54. data/ext/ngtcp2/crypto/picotls/picotls.c +707 -0
  55. data/ext/ngtcp2/crypto/shared.c +1431 -0
  56. data/ext/ngtcp2/crypto/shared.h +350 -0
  57. data/ext/ngtcp2/crypto/wolfssl/CMakeLists.txt +84 -0
  58. data/ext/ngtcp2/crypto/wolfssl/Makefile.am +43 -0
  59. data/ext/ngtcp2/crypto/wolfssl/libngtcp2_crypto_wolfssl.pc.in +33 -0
  60. data/ext/ngtcp2/crypto/wolfssl/wolfssl.c +534 -0
  61. data/ext/ngtcp2/doc/Makefile.am +65 -0
  62. data/ext/ngtcp2/doc/make.bat +35 -0
  63. data/ext/ngtcp2/doc/mkapiref.py +356 -0
  64. data/ext/ngtcp2/doc/source/conf.py.in +94 -0
  65. data/ext/ngtcp2/doc/source/index.rst +22 -0
  66. data/ext/ngtcp2/doc/source/programmers-guide.rst +476 -0
  67. data/ext/ngtcp2/docker/Dockerfile +39 -0
  68. data/ext/ngtcp2/examples/CMakeLists.txt +361 -0
  69. data/ext/ngtcp2/examples/Makefile.am +228 -0
  70. data/ext/ngtcp2/examples/client.cc +3049 -0
  71. data/ext/ngtcp2/examples/client.h +192 -0
  72. data/ext/ngtcp2/examples/client_base.cc +202 -0
  73. data/ext/ngtcp2/examples/client_base.h +213 -0
  74. data/ext/ngtcp2/examples/debug.cc +298 -0
  75. data/ext/ngtcp2/examples/debug.h +124 -0
  76. data/ext/ngtcp2/examples/examplestest.cc +84 -0
  77. data/ext/ngtcp2/examples/gtlssimpleclient.c +720 -0
  78. data/ext/ngtcp2/examples/h09client.cc +2601 -0
  79. data/ext/ngtcp2/examples/h09client.h +196 -0
  80. data/ext/ngtcp2/examples/h09server.cc +3024 -0
  81. data/ext/ngtcp2/examples/h09server.h +237 -0
  82. data/ext/ngtcp2/examples/http.cc +138 -0
  83. data/ext/ngtcp2/examples/http.h +44 -0
  84. data/ext/ngtcp2/examples/network.h +80 -0
  85. data/ext/ngtcp2/examples/server.cc +3731 -0
  86. data/ext/ngtcp2/examples/server.h +256 -0
  87. data/ext/ngtcp2/examples/server_base.cc +58 -0
  88. data/ext/ngtcp2/examples/server_base.h +195 -0
  89. data/ext/ngtcp2/examples/shared.cc +385 -0
  90. data/ext/ngtcp2/examples/shared.h +96 -0
  91. data/ext/ngtcp2/examples/simpleclient.c +683 -0
  92. data/ext/ngtcp2/examples/template.h +71 -0
  93. data/ext/ngtcp2/examples/tests/README.rst +60 -0
  94. data/ext/ngtcp2/examples/tests/__init__.py +0 -0
  95. data/ext/ngtcp2/examples/tests/config.ini.in +32 -0
  96. data/ext/ngtcp2/examples/tests/conftest.py +28 -0
  97. data/ext/ngtcp2/examples/tests/ngtcp2test/__init__.py +6 -0
  98. data/ext/ngtcp2/examples/tests/ngtcp2test/certs.py +476 -0
  99. data/ext/ngtcp2/examples/tests/ngtcp2test/client.py +187 -0
  100. data/ext/ngtcp2/examples/tests/ngtcp2test/env.py +191 -0
  101. data/ext/ngtcp2/examples/tests/ngtcp2test/log.py +101 -0
  102. data/ext/ngtcp2/examples/tests/ngtcp2test/server.py +137 -0
  103. data/ext/ngtcp2/examples/tests/ngtcp2test/tls.py +983 -0
  104. data/ext/ngtcp2/examples/tests/test_01_handshake.py +30 -0
  105. data/ext/ngtcp2/examples/tests/test_02_resume.py +46 -0
  106. data/ext/ngtcp2/examples/tests/test_03_earlydata.py +56 -0
  107. data/ext/ngtcp2/examples/tests/test_04_clientcert.py +57 -0
  108. data/ext/ngtcp2/examples/tests/test_05_ciphers.py +46 -0
  109. data/ext/ngtcp2/examples/tls_client_context.h +52 -0
  110. data/ext/ngtcp2/examples/tls_client_context_boringssl.cc +126 -0
  111. data/ext/ngtcp2/examples/tls_client_context_boringssl.h +49 -0
  112. data/ext/ngtcp2/examples/tls_client_context_gnutls.cc +74 -0
  113. data/ext/ngtcp2/examples/tls_client_context_gnutls.h +50 -0
  114. data/ext/ngtcp2/examples/tls_client_context_openssl.cc +137 -0
  115. data/ext/ngtcp2/examples/tls_client_context_openssl.h +49 -0
  116. data/ext/ngtcp2/examples/tls_client_context_picotls.cc +158 -0
  117. data/ext/ngtcp2/examples/tls_client_context_picotls.h +53 -0
  118. data/ext/ngtcp2/examples/tls_client_context_wolfssl.cc +177 -0
  119. data/ext/ngtcp2/examples/tls_client_context_wolfssl.h +51 -0
  120. data/ext/ngtcp2/examples/tls_client_session.h +52 -0
  121. data/ext/ngtcp2/examples/tls_client_session_boringssl.cc +110 -0
  122. data/ext/ngtcp2/examples/tls_client_session_boringssl.h +52 -0
  123. data/ext/ngtcp2/examples/tls_client_session_gnutls.cc +190 -0
  124. data/ext/ngtcp2/examples/tls_client_session_gnutls.h +52 -0
  125. data/ext/ngtcp2/examples/tls_client_session_openssl.cc +113 -0
  126. data/ext/ngtcp2/examples/tls_client_session_openssl.h +52 -0
  127. data/ext/ngtcp2/examples/tls_client_session_picotls.cc +147 -0
  128. data/ext/ngtcp2/examples/tls_client_session_picotls.h +52 -0
  129. data/ext/ngtcp2/examples/tls_client_session_wolfssl.cc +160 -0
  130. data/ext/ngtcp2/examples/tls_client_session_wolfssl.h +52 -0
  131. data/ext/ngtcp2/examples/tls_server_context.h +52 -0
  132. data/ext/ngtcp2/examples/tls_server_context_boringssl.cc +257 -0
  133. data/ext/ngtcp2/examples/tls_server_context_boringssl.h +54 -0
  134. data/ext/ngtcp2/examples/tls_server_context_gnutls.cc +99 -0
  135. data/ext/ngtcp2/examples/tls_server_context_gnutls.h +59 -0
  136. data/ext/ngtcp2/examples/tls_server_context_openssl.cc +338 -0
  137. data/ext/ngtcp2/examples/tls_server_context_openssl.h +54 -0
  138. data/ext/ngtcp2/examples/tls_server_context_picotls.cc +321 -0
  139. data/ext/ngtcp2/examples/tls_server_context_picotls.h +58 -0
  140. data/ext/ngtcp2/examples/tls_server_context_wolfssl.cc +284 -0
  141. data/ext/ngtcp2/examples/tls_server_context_wolfssl.h +55 -0
  142. data/ext/ngtcp2/examples/tls_server_session.h +52 -0
  143. data/ext/ngtcp2/examples/tls_server_session_boringssl.cc +84 -0
  144. data/ext/ngtcp2/examples/tls_server_session_boringssl.h +47 -0
  145. data/ext/ngtcp2/examples/tls_server_session_gnutls.cc +155 -0
  146. data/ext/ngtcp2/examples/tls_server_session_gnutls.h +46 -0
  147. data/ext/ngtcp2/examples/tls_server_session_openssl.cc +54 -0
  148. data/ext/ngtcp2/examples/tls_server_session_openssl.h +47 -0
  149. data/ext/ngtcp2/examples/tls_server_session_picotls.cc +70 -0
  150. data/ext/ngtcp2/examples/tls_server_session_picotls.h +47 -0
  151. data/ext/ngtcp2/examples/tls_server_session_wolfssl.cc +55 -0
  152. data/ext/ngtcp2/examples/tls_server_session_wolfssl.h +47 -0
  153. data/ext/ngtcp2/examples/tls_session_base_gnutls.cc +87 -0
  154. data/ext/ngtcp2/examples/tls_session_base_gnutls.h +51 -0
  155. data/ext/ngtcp2/examples/tls_session_base_openssl.cc +54 -0
  156. data/ext/ngtcp2/examples/tls_session_base_openssl.h +52 -0
  157. data/ext/ngtcp2/examples/tls_session_base_picotls.cc +56 -0
  158. data/ext/ngtcp2/examples/tls_session_base_picotls.h +54 -0
  159. data/ext/ngtcp2/examples/tls_session_base_wolfssl.cc +54 -0
  160. data/ext/ngtcp2/examples/tls_session_base_wolfssl.h +54 -0
  161. data/ext/ngtcp2/examples/tls_shared_picotls.cc +59 -0
  162. data/ext/ngtcp2/examples/tls_shared_picotls.h +36 -0
  163. data/ext/ngtcp2/examples/util.cc +646 -0
  164. data/ext/ngtcp2/examples/util.h +361 -0
  165. data/ext/ngtcp2/examples/util_gnutls.cc +136 -0
  166. data/ext/ngtcp2/examples/util_openssl.cc +131 -0
  167. data/ext/ngtcp2/examples/util_test.cc +237 -0
  168. data/ext/ngtcp2/examples/util_test.h +45 -0
  169. data/ext/ngtcp2/examples/util_wolfssl.cc +130 -0
  170. data/ext/ngtcp2/fuzz/corpus/decode_frame/ack +0 -0
  171. data/ext/ngtcp2/fuzz/corpus/decode_frame/ack_ecn +0 -0
  172. data/ext/ngtcp2/fuzz/corpus/decode_frame/connection_close +0 -0
  173. data/ext/ngtcp2/fuzz/corpus/decode_frame/crypto +1 -0
  174. data/ext/ngtcp2/fuzz/corpus/decode_frame/data_blocked +1 -0
  175. data/ext/ngtcp2/fuzz/corpus/decode_frame/datagram +1 -0
  176. data/ext/ngtcp2/fuzz/corpus/decode_frame/datagram_len +1 -0
  177. data/ext/ngtcp2/fuzz/corpus/decode_frame/max_data +1 -0
  178. data/ext/ngtcp2/fuzz/corpus/decode_frame/max_stream_data +0 -0
  179. data/ext/ngtcp2/fuzz/corpus/decode_frame/max_streams +0 -0
  180. data/ext/ngtcp2/fuzz/corpus/decode_frame/new_connection_id +1 -0
  181. data/ext/ngtcp2/fuzz/corpus/decode_frame/new_token +1 -0
  182. data/ext/ngtcp2/fuzz/corpus/decode_frame/path_challenge +1 -0
  183. data/ext/ngtcp2/fuzz/corpus/decode_frame/path_response +1 -0
  184. data/ext/ngtcp2/fuzz/corpus/decode_frame/reset_stream +0 -0
  185. data/ext/ngtcp2/fuzz/corpus/decode_frame/retire_connection_id +1 -0
  186. data/ext/ngtcp2/fuzz/corpus/decode_frame/stop_sending +0 -0
  187. data/ext/ngtcp2/fuzz/corpus/decode_frame/stream +0 -0
  188. data/ext/ngtcp2/fuzz/corpus/decode_frame/stream_data_blocked +0 -0
  189. data/ext/ngtcp2/fuzz/corpus/decode_frame/stream_len +0 -0
  190. data/ext/ngtcp2/fuzz/corpus/decode_frame/streams_blocked +0 -0
  191. data/ext/ngtcp2/fuzz/corpus/ksl/random +0 -0
  192. data/ext/ngtcp2/fuzz/decode_frame.cc +25 -0
  193. data/ext/ngtcp2/fuzz/ksl.cc +77 -0
  194. data/ext/ngtcp2/interop/Dockerfile +39 -0
  195. data/ext/ngtcp2/interop/run_endpoint.sh +93 -0
  196. data/ext/ngtcp2/lib/CMakeLists.txt +110 -0
  197. data/ext/ngtcp2/lib/Makefile.am +122 -0
  198. data/ext/ngtcp2/lib/includes/CMakeLists.txt +4 -0
  199. data/ext/ngtcp2/lib/includes/Makefile.am +25 -0
  200. data/ext/ngtcp2/lib/includes/ngtcp2/ngtcp2.h +5843 -0
  201. data/ext/ngtcp2/lib/includes/ngtcp2/version.h.in +51 -0
  202. data/ext/ngtcp2/lib/libngtcp2.pc.in +33 -0
  203. data/ext/ngtcp2/lib/ngtcp2_acktr.c +335 -0
  204. data/ext/ngtcp2/lib/ngtcp2_acktr.h +221 -0
  205. data/ext/ngtcp2/lib/ngtcp2_addr.c +117 -0
  206. data/ext/ngtcp2/lib/ngtcp2_addr.h +69 -0
  207. data/ext/ngtcp2/lib/ngtcp2_balloc.c +90 -0
  208. data/ext/ngtcp2/lib/ngtcp2_balloc.h +91 -0
  209. data/ext/ngtcp2/lib/ngtcp2_bbr.c +693 -0
  210. data/ext/ngtcp2/lib/ngtcp2_bbr.h +157 -0
  211. data/ext/ngtcp2/lib/ngtcp2_bbr2.c +1490 -0
  212. data/ext/ngtcp2/lib/ngtcp2_bbr2.h +149 -0
  213. data/ext/ngtcp2/lib/ngtcp2_buf.c +56 -0
  214. data/ext/ngtcp2/lib/ngtcp2_buf.h +108 -0
  215. data/ext/ngtcp2/lib/ngtcp2_cc.c +616 -0
  216. data/ext/ngtcp2/lib/ngtcp2_cc.h +422 -0
  217. data/ext/ngtcp2/lib/ngtcp2_cid.c +147 -0
  218. data/ext/ngtcp2/lib/ngtcp2_cid.h +175 -0
  219. data/ext/ngtcp2/lib/ngtcp2_conn.c +13731 -0
  220. data/ext/ngtcp2/lib/ngtcp2_conn.h +1119 -0
  221. data/ext/ngtcp2/lib/ngtcp2_conn_stat.h +131 -0
  222. data/ext/ngtcp2/lib/ngtcp2_conv.c +291 -0
  223. data/ext/ngtcp2/lib/ngtcp2_conv.h +208 -0
  224. data/ext/ngtcp2/lib/ngtcp2_crypto.c +895 -0
  225. data/ext/ngtcp2/lib/ngtcp2_crypto.h +148 -0
  226. data/ext/ngtcp2/lib/ngtcp2_err.c +154 -0
  227. data/ext/ngtcp2/lib/ngtcp2_err.h +34 -0
  228. data/ext/ngtcp2/lib/ngtcp2_gaptr.c +167 -0
  229. data/ext/ngtcp2/lib/ngtcp2_gaptr.h +98 -0
  230. data/ext/ngtcp2/lib/ngtcp2_idtr.c +79 -0
  231. data/ext/ngtcp2/lib/ngtcp2_idtr.h +89 -0
  232. data/ext/ngtcp2/lib/ngtcp2_ksl.c +819 -0
  233. data/ext/ngtcp2/lib/ngtcp2_ksl.h +345 -0
  234. data/ext/ngtcp2/lib/ngtcp2_log.c +822 -0
  235. data/ext/ngtcp2/lib/ngtcp2_log.h +123 -0
  236. data/ext/ngtcp2/lib/ngtcp2_macro.h +58 -0
  237. data/ext/ngtcp2/lib/ngtcp2_map.c +336 -0
  238. data/ext/ngtcp2/lib/ngtcp2_map.h +136 -0
  239. data/ext/ngtcp2/lib/ngtcp2_mem.c +113 -0
  240. data/ext/ngtcp2/lib/ngtcp2_mem.h +72 -0
  241. data/ext/ngtcp2/lib/ngtcp2_net.h +136 -0
  242. data/ext/ngtcp2/lib/ngtcp2_objalloc.c +40 -0
  243. data/ext/ngtcp2/lib/ngtcp2_objalloc.h +140 -0
  244. data/ext/ngtcp2/lib/ngtcp2_opl.c +46 -0
  245. data/ext/ngtcp2/lib/ngtcp2_opl.h +65 -0
  246. data/ext/ngtcp2/lib/ngtcp2_path.c +77 -0
  247. data/ext/ngtcp2/lib/ngtcp2_path.h +49 -0
  248. data/ext/ngtcp2/lib/ngtcp2_pkt.c +2527 -0
  249. data/ext/ngtcp2/lib/ngtcp2_pkt.h +1235 -0
  250. data/ext/ngtcp2/lib/ngtcp2_pmtud.c +160 -0
  251. data/ext/ngtcp2/lib/ngtcp2_pmtud.h +123 -0
  252. data/ext/ngtcp2/lib/ngtcp2_ppe.c +230 -0
  253. data/ext/ngtcp2/lib/ngtcp2_ppe.h +153 -0
  254. data/ext/ngtcp2/lib/ngtcp2_pq.c +164 -0
  255. data/ext/ngtcp2/lib/ngtcp2_pq.h +126 -0
  256. data/ext/ngtcp2/lib/ngtcp2_pv.c +172 -0
  257. data/ext/ngtcp2/lib/ngtcp2_pv.h +194 -0
  258. data/ext/ngtcp2/lib/ngtcp2_qlog.c +1219 -0
  259. data/ext/ngtcp2/lib/ngtcp2_qlog.h +161 -0
  260. data/ext/ngtcp2/lib/ngtcp2_range.c +61 -0
  261. data/ext/ngtcp2/lib/ngtcp2_range.h +80 -0
  262. data/ext/ngtcp2/lib/ngtcp2_rcvry.h +40 -0
  263. data/ext/ngtcp2/lib/ngtcp2_ringbuf.c +121 -0
  264. data/ext/ngtcp2/lib/ngtcp2_ringbuf.h +132 -0
  265. data/ext/ngtcp2/lib/ngtcp2_rob.c +319 -0
  266. data/ext/ngtcp2/lib/ngtcp2_rob.h +197 -0
  267. data/ext/ngtcp2/lib/ngtcp2_rst.c +138 -0
  268. data/ext/ngtcp2/lib/ngtcp2_rst.h +86 -0
  269. data/ext/ngtcp2/lib/ngtcp2_rtb.c +1676 -0
  270. data/ext/ngtcp2/lib/ngtcp2_rtb.h +468 -0
  271. data/ext/ngtcp2/lib/ngtcp2_str.c +233 -0
  272. data/ext/ngtcp2/lib/ngtcp2_str.h +94 -0
  273. data/ext/ngtcp2/lib/ngtcp2_strm.c +698 -0
  274. data/ext/ngtcp2/lib/ngtcp2_strm.h +310 -0
  275. data/ext/ngtcp2/lib/ngtcp2_unreachable.c +71 -0
  276. data/ext/ngtcp2/lib/ngtcp2_unreachable.h +46 -0
  277. data/ext/ngtcp2/lib/ngtcp2_vec.c +243 -0
  278. data/ext/ngtcp2/lib/ngtcp2_vec.h +120 -0
  279. data/ext/ngtcp2/lib/ngtcp2_version.c +39 -0
  280. data/ext/ngtcp2/lib/ngtcp2_window_filter.c +99 -0
  281. data/ext/ngtcp2/lib/ngtcp2_window_filter.h +65 -0
  282. data/ext/ngtcp2/m4/ax_check_compile_flag.m4 +74 -0
  283. data/ext/ngtcp2/m4/ax_cxx_compile_stdcxx.m4 +1009 -0
  284. data/ext/ngtcp2/tests/CMakeLists.txt +68 -0
  285. data/ext/ngtcp2/tests/Makefile.am +94 -0
  286. data/ext/ngtcp2/tests/main.c +358 -0
  287. data/ext/ngtcp2/tests/ngtcp2_acktr_test.c +367 -0
  288. data/ext/ngtcp2/tests/ngtcp2_acktr_test.h +37 -0
  289. data/ext/ngtcp2/tests/ngtcp2_conn_test.c +9821 -0
  290. data/ext/ngtcp2/tests/ngtcp2_conn_test.h +104 -0
  291. data/ext/ngtcp2/tests/ngtcp2_conv_test.c +430 -0
  292. data/ext/ngtcp2/tests/ngtcp2_conv_test.h +46 -0
  293. data/ext/ngtcp2/tests/ngtcp2_crypto_test.c +667 -0
  294. data/ext/ngtcp2/tests/ngtcp2_crypto_test.h +35 -0
  295. data/ext/ngtcp2/tests/ngtcp2_gaptr_test.c +127 -0
  296. data/ext/ngtcp2/tests/ngtcp2_gaptr_test.h +36 -0
  297. data/ext/ngtcp2/tests/ngtcp2_idtr_test.c +79 -0
  298. data/ext/ngtcp2/tests/ngtcp2_idtr_test.h +34 -0
  299. data/ext/ngtcp2/tests/ngtcp2_ksl_test.c +502 -0
  300. data/ext/ngtcp2/tests/ngtcp2_ksl_test.h +39 -0
  301. data/ext/ngtcp2/tests/ngtcp2_map_test.c +206 -0
  302. data/ext/ngtcp2/tests/ngtcp2_map_test.h +38 -0
  303. data/ext/ngtcp2/tests/ngtcp2_pkt_test.c +1645 -0
  304. data/ext/ngtcp2/tests/ngtcp2_pkt_test.h +68 -0
  305. data/ext/ngtcp2/tests/ngtcp2_pmtud_test.c +153 -0
  306. data/ext/ngtcp2/tests/ngtcp2_pmtud_test.h +34 -0
  307. data/ext/ngtcp2/tests/ngtcp2_pv_test.c +129 -0
  308. data/ext/ngtcp2/tests/ngtcp2_pv_test.h +35 -0
  309. data/ext/ngtcp2/tests/ngtcp2_range_test.c +105 -0
  310. data/ext/ngtcp2/tests/ngtcp2_range_test.h +36 -0
  311. data/ext/ngtcp2/tests/ngtcp2_ringbuf_test.c +91 -0
  312. data/ext/ngtcp2/tests/ngtcp2_ringbuf_test.h +35 -0
  313. data/ext/ngtcp2/tests/ngtcp2_rob_test.c +552 -0
  314. data/ext/ngtcp2/tests/ngtcp2_rob_test.h +37 -0
  315. data/ext/ngtcp2/tests/ngtcp2_rtb_test.c +470 -0
  316. data/ext/ngtcp2/tests/ngtcp2_rtb_test.h +38 -0
  317. data/ext/ngtcp2/tests/ngtcp2_str_test.c +96 -0
  318. data/ext/ngtcp2/tests/ngtcp2_str_test.h +36 -0
  319. data/ext/ngtcp2/tests/ngtcp2_strm_test.c +575 -0
  320. data/ext/ngtcp2/tests/ngtcp2_strm_test.h +36 -0
  321. data/ext/ngtcp2/tests/ngtcp2_test_helper.c +404 -0
  322. data/ext/ngtcp2/tests/ngtcp2_test_helper.h +191 -0
  323. data/ext/ngtcp2/tests/ngtcp2_vec_test.c +426 -0
  324. data/ext/ngtcp2/tests/ngtcp2_vec_test.h +36 -0
  325. data/ext/ngtcp2/third-party/CMakeLists.txt +34 -0
  326. data/ext/ngtcp2/third-party/Makefile.am +31 -0
  327. data/ext/ngtcp2/third-party/http-parser/AUTHORS +68 -0
  328. data/ext/ngtcp2/third-party/http-parser/LICENSE-MIT +23 -0
  329. data/ext/ngtcp2/third-party/http-parser/Makefile +157 -0
  330. data/ext/ngtcp2/third-party/http-parser/README.md +246 -0
  331. data/ext/ngtcp2/third-party/http-parser/bench.c +111 -0
  332. data/ext/ngtcp2/third-party/http-parser/contrib/parsertrace.c +160 -0
  333. data/ext/ngtcp2/third-party/http-parser/contrib/url_parser.c +47 -0
  334. data/ext/ngtcp2/third-party/http-parser/http_parser.c +2419 -0
  335. data/ext/ngtcp2/third-party/http-parser/http_parser.gyp +111 -0
  336. data/ext/ngtcp2/third-party/http-parser/http_parser.h +431 -0
  337. data/ext/ngtcp2/third-party/http-parser/test.c +4411 -0
  338. data/lib/protocol/quic/version.rb +10 -0
  339. data/lib/protocol/quic.rb +9 -0
  340. data/license.md +21 -0
  341. data.tar.gz.sig +1 -0
  342. metadata +424 -0
  343. metadata.gz.sig +1 -0
@@ -0,0 +1,367 @@
1
+ /*
2
+ * ngtcp2
3
+ *
4
+ * Copyright (c) 2017 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_acktr_test.h"
26
+
27
+ #include <CUnit/CUnit.h>
28
+
29
+ #include "ngtcp2_acktr.h"
30
+ #include "ngtcp2_test_helper.h"
31
+
32
+ void test_ngtcp2_acktr_add(void) {
33
+ const int64_t pkt_nums[] = {1, 5, 7, 6, 2, 3};
34
+ ngtcp2_acktr acktr;
35
+ ngtcp2_acktr_entry *ent;
36
+ ngtcp2_ksl_it it;
37
+ size_t i;
38
+ int rv;
39
+ const ngtcp2_mem *mem = ngtcp2_mem_default();
40
+ ngtcp2_log log;
41
+
42
+ ngtcp2_log_init(&log, NULL, NULL, 0, NULL);
43
+ ngtcp2_acktr_init(&acktr, &log, mem);
44
+
45
+ for (i = 0; i < ngtcp2_arraylen(pkt_nums); ++i) {
46
+ rv = ngtcp2_acktr_add(&acktr, pkt_nums[i], 1, 999);
47
+
48
+ CU_ASSERT(0 == rv);
49
+ }
50
+
51
+ it = ngtcp2_acktr_get(&acktr);
52
+ ent = ngtcp2_ksl_it_get(&it);
53
+
54
+ CU_ASSERT(7 == ent->pkt_num);
55
+ CU_ASSERT(3 == ent->len);
56
+
57
+ ngtcp2_ksl_it_next(&it);
58
+ ent = ngtcp2_ksl_it_get(&it);
59
+
60
+ CU_ASSERT(3 == ent->pkt_num);
61
+ CU_ASSERT(3 == ent->len);
62
+
63
+ ngtcp2_ksl_it_next(&it);
64
+
65
+ CU_ASSERT(ngtcp2_ksl_it_end(&it));
66
+
67
+ ngtcp2_acktr_free(&acktr);
68
+
69
+ /* Check all conditions */
70
+
71
+ /* The lower bound returns the one beyond of the last entry. The
72
+ added packet number extends the first entry. */
73
+ ngtcp2_acktr_init(&acktr, &log, mem);
74
+
75
+ ngtcp2_acktr_add(&acktr, 1, 1, 100);
76
+ ngtcp2_acktr_add(&acktr, 0, 1, 101);
77
+
78
+ CU_ASSERT(1 == ngtcp2_ksl_len(&acktr.ents));
79
+
80
+ it = ngtcp2_acktr_get(&acktr);
81
+ ent = ngtcp2_ksl_it_get(&it);
82
+
83
+ CU_ASSERT(1 == ent->pkt_num);
84
+ CU_ASSERT(2 == ent->len);
85
+ CU_ASSERT(100 == ent->tstamp);
86
+
87
+ ngtcp2_acktr_free(&acktr);
88
+
89
+ /* The entry is the first one and adding a packet number extends it
90
+ to the forward. */
91
+ ngtcp2_acktr_init(&acktr, &log, mem);
92
+
93
+ ngtcp2_acktr_add(&acktr, 0, 1, 100);
94
+ ngtcp2_acktr_add(&acktr, 1, 1, 101);
95
+
96
+ CU_ASSERT(1 == ngtcp2_ksl_len(&acktr.ents));
97
+
98
+ it = ngtcp2_acktr_get(&acktr);
99
+ ent = ngtcp2_ksl_it_get(&it);
100
+
101
+ CU_ASSERT(1 == ent->pkt_num);
102
+ CU_ASSERT(2 == ent->len);
103
+ CU_ASSERT(101 == ent->tstamp);
104
+
105
+ ngtcp2_acktr_free(&acktr);
106
+
107
+ /* The adding entry merges the existing 2 entries. */
108
+ ngtcp2_acktr_init(&acktr, &log, mem);
109
+
110
+ ngtcp2_acktr_add(&acktr, 0, 1, 100);
111
+ ngtcp2_acktr_add(&acktr, 2, 1, 101);
112
+ ngtcp2_acktr_add(&acktr, 3, 1, 102);
113
+
114
+ CU_ASSERT(2 == ngtcp2_ksl_len(&acktr.ents));
115
+
116
+ ngtcp2_acktr_add(&acktr, 1, 1, 103);
117
+
118
+ CU_ASSERT(1 == ngtcp2_ksl_len(&acktr.ents));
119
+
120
+ it = ngtcp2_acktr_get(&acktr);
121
+ ent = ngtcp2_ksl_it_get(&it);
122
+
123
+ CU_ASSERT(3 == ent->pkt_num);
124
+ CU_ASSERT(4 == ent->len);
125
+ CU_ASSERT(102 == ent->tstamp);
126
+
127
+ ngtcp2_acktr_free(&acktr);
128
+
129
+ /* Adding entry does not merge the existing 2 entries. It extends
130
+ the last entry. */
131
+ ngtcp2_acktr_init(&acktr, &log, mem);
132
+
133
+ ngtcp2_acktr_add(&acktr, 0, 1, 100);
134
+ ngtcp2_acktr_add(&acktr, 3, 1, 101);
135
+ ngtcp2_acktr_add(&acktr, 4, 1, 102);
136
+
137
+ CU_ASSERT(2 == ngtcp2_ksl_len(&acktr.ents));
138
+
139
+ ngtcp2_acktr_add(&acktr, 1, 1, 103);
140
+
141
+ CU_ASSERT(2 == ngtcp2_ksl_len(&acktr.ents));
142
+
143
+ it = ngtcp2_acktr_get(&acktr);
144
+ ent = ngtcp2_ksl_it_get(&it);
145
+
146
+ CU_ASSERT(4 == ent->pkt_num);
147
+ CU_ASSERT(2 == ent->len);
148
+ CU_ASSERT(102 == ent->tstamp);
149
+
150
+ ngtcp2_ksl_it_next(&it);
151
+ ent = ngtcp2_ksl_it_get(&it);
152
+
153
+ CU_ASSERT(1 == ent->pkt_num);
154
+ CU_ASSERT(2 == ent->len);
155
+ CU_ASSERT(103 == ent->tstamp);
156
+
157
+ ngtcp2_acktr_free(&acktr);
158
+
159
+ /* Adding entry does not merge the existing 2 entries. It extends
160
+ the first entry. */
161
+ ngtcp2_acktr_init(&acktr, &log, mem);
162
+
163
+ ngtcp2_acktr_add(&acktr, 0, 1, 100);
164
+ ngtcp2_acktr_add(&acktr, 3, 1, 101);
165
+ ngtcp2_acktr_add(&acktr, 4, 1, 102);
166
+
167
+ CU_ASSERT(2 == ngtcp2_ksl_len(&acktr.ents));
168
+
169
+ ngtcp2_acktr_add(&acktr, 2, 1, 103);
170
+
171
+ CU_ASSERT(2 == ngtcp2_ksl_len(&acktr.ents));
172
+
173
+ it = ngtcp2_acktr_get(&acktr);
174
+ ent = ngtcp2_ksl_it_get(&it);
175
+
176
+ CU_ASSERT(4 == ent->pkt_num);
177
+ CU_ASSERT(3 == ent->len);
178
+ CU_ASSERT(102 == ent->tstamp);
179
+
180
+ ngtcp2_ksl_it_next(&it);
181
+ ent = ngtcp2_ksl_it_get(&it);
182
+
183
+ CU_ASSERT(0 == ent->pkt_num);
184
+ CU_ASSERT(1 == ent->len);
185
+ CU_ASSERT(100 == ent->tstamp);
186
+
187
+ ngtcp2_acktr_free(&acktr);
188
+
189
+ /* The added packet number does not extend any entries. */
190
+ ngtcp2_acktr_init(&acktr, &log, mem);
191
+
192
+ ngtcp2_acktr_add(&acktr, 0, 1, 0);
193
+ ngtcp2_acktr_add(&acktr, 4, 1, 0);
194
+ ngtcp2_acktr_add(&acktr, 2, 1, 0);
195
+
196
+ CU_ASSERT(3 == ngtcp2_ksl_len(&acktr.ents));
197
+
198
+ ngtcp2_acktr_free(&acktr);
199
+ }
200
+
201
+ void test_ngtcp2_acktr_eviction(void) {
202
+ ngtcp2_acktr acktr;
203
+ const ngtcp2_mem *mem = ngtcp2_mem_default();
204
+ size_t i;
205
+ ngtcp2_acktr_entry *ent;
206
+ const size_t extra = 17;
207
+ ngtcp2_log log;
208
+ ngtcp2_ksl_it it;
209
+
210
+ ngtcp2_log_init(&log, NULL, NULL, 0, NULL);
211
+ ngtcp2_acktr_init(&acktr, &log, mem);
212
+
213
+ for (i = 0; i < NGTCP2_ACKTR_MAX_ENT + extra; ++i) {
214
+ ngtcp2_acktr_add(&acktr, (int64_t)(i * 2), 1, 999 + i);
215
+ }
216
+
217
+ CU_ASSERT(NGTCP2_ACKTR_MAX_ENT == ngtcp2_ksl_len(&acktr.ents));
218
+
219
+ for (i = 0, it = ngtcp2_acktr_get(&acktr); !ngtcp2_ksl_it_end(&it);
220
+ ++i, ngtcp2_ksl_it_next(&it)) {
221
+ ent = ngtcp2_ksl_it_get(&it);
222
+
223
+ CU_ASSERT((int64_t)((NGTCP2_ACKTR_MAX_ENT + extra - 1) * 2 - i * 2) ==
224
+ ent->pkt_num);
225
+ }
226
+
227
+ ngtcp2_acktr_free(&acktr);
228
+
229
+ /* Invert insertion order */
230
+ ngtcp2_acktr_init(&acktr, &log, mem);
231
+
232
+ for (i = NGTCP2_ACKTR_MAX_ENT + extra; i > 0; --i) {
233
+ ngtcp2_acktr_add(&acktr, (int64_t)((i - 1) * 2), 1, 999 + i);
234
+ }
235
+
236
+ CU_ASSERT(NGTCP2_ACKTR_MAX_ENT == ngtcp2_ksl_len(&acktr.ents));
237
+
238
+ for (i = 0, it = ngtcp2_acktr_get(&acktr); !ngtcp2_ksl_it_end(&it);
239
+ ++i, ngtcp2_ksl_it_next(&it)) {
240
+ ent = ngtcp2_ksl_it_get(&it);
241
+
242
+ CU_ASSERT((int64_t)((NGTCP2_ACKTR_MAX_ENT + extra - 1) * 2 - i * 2) ==
243
+ ent->pkt_num);
244
+ }
245
+
246
+ ngtcp2_acktr_free(&acktr);
247
+ }
248
+
249
+ void test_ngtcp2_acktr_forget(void) {
250
+ ngtcp2_acktr acktr;
251
+ const ngtcp2_mem *mem = ngtcp2_mem_default();
252
+ size_t i;
253
+ ngtcp2_acktr_entry *ent;
254
+ ngtcp2_log log;
255
+ ngtcp2_ksl_it it;
256
+
257
+ ngtcp2_log_init(&log, NULL, NULL, 0, NULL);
258
+ ngtcp2_acktr_init(&acktr, &log, mem);
259
+
260
+ for (i = 0; i < 7; ++i) {
261
+ ngtcp2_acktr_add(&acktr, (int64_t)(i * 2), 1, 999 + i);
262
+ }
263
+
264
+ CU_ASSERT(7 == ngtcp2_ksl_len(&acktr.ents));
265
+
266
+ it = ngtcp2_acktr_get(&acktr);
267
+ ngtcp2_ksl_it_next(&it);
268
+ ngtcp2_ksl_it_next(&it);
269
+ ngtcp2_ksl_it_next(&it);
270
+ ent = ngtcp2_ksl_it_get(&it);
271
+ ngtcp2_acktr_forget(&acktr, ent);
272
+
273
+ CU_ASSERT(3 == ngtcp2_ksl_len(&acktr.ents));
274
+
275
+ it = ngtcp2_acktr_get(&acktr);
276
+ ent = ngtcp2_ksl_it_get(&it);
277
+
278
+ CU_ASSERT(12 == ent->pkt_num);
279
+
280
+ ngtcp2_ksl_it_next(&it);
281
+ ent = ngtcp2_ksl_it_get(&it);
282
+
283
+ CU_ASSERT(10 == ent->pkt_num);
284
+
285
+ ngtcp2_ksl_it_next(&it);
286
+ ent = ngtcp2_ksl_it_get(&it);
287
+
288
+ CU_ASSERT(8 == ent->pkt_num);
289
+
290
+ it = ngtcp2_acktr_get(&acktr);
291
+ ent = ngtcp2_ksl_it_get(&it);
292
+
293
+ ngtcp2_acktr_forget(&acktr, ent);
294
+
295
+ CU_ASSERT(0 == ngtcp2_ksl_len(&acktr.ents));
296
+
297
+ ngtcp2_acktr_free(&acktr);
298
+ }
299
+
300
+ void test_ngtcp2_acktr_recv_ack(void) {
301
+ ngtcp2_acktr acktr;
302
+ const ngtcp2_mem *mem = ngtcp2_mem_default();
303
+ size_t i;
304
+ ngtcp2_ack ackfr;
305
+ int64_t rpkt_nums[] = {
306
+ 4500, 4499, 4497, 4496, 4494, 4493, 4491, 4490, 4488, 4487, 4483,
307
+ };
308
+ /*
309
+ 4500 4499
310
+ 4497 4496
311
+ 4494 4493
312
+ 4491 4490
313
+ 4488 4487
314
+ 4483
315
+ */
316
+ ngtcp2_acktr_entry *ent;
317
+ ngtcp2_log log;
318
+ ngtcp2_ksl_it it;
319
+
320
+ ngtcp2_log_init(&log, NULL, NULL, 0, NULL);
321
+ ngtcp2_acktr_init(&acktr, &log, mem);
322
+
323
+ for (i = 0; i < ngtcp2_arraylen(rpkt_nums); ++i) {
324
+ ngtcp2_acktr_add(&acktr, rpkt_nums[i], 1, 999 + i);
325
+ }
326
+
327
+ CU_ASSERT(6 == ngtcp2_ksl_len(&acktr.ents));
328
+
329
+ ngtcp2_acktr_add_ack(&acktr, 998, 4497);
330
+ ngtcp2_acktr_add_ack(&acktr, 999, 4499);
331
+
332
+ ackfr.type = NGTCP2_FRAME_ACK;
333
+ ackfr.largest_ack = 998;
334
+ ackfr.ack_delay = 0;
335
+ ackfr.first_ack_range = 0;
336
+ ackfr.rangecnt = 0;
337
+
338
+ ngtcp2_acktr_recv_ack(&acktr, &ackfr);
339
+
340
+ CU_ASSERT(1 == ngtcp2_ringbuf_len(&acktr.acks));
341
+ CU_ASSERT(1 == ngtcp2_ksl_len(&acktr.ents));
342
+
343
+ it = ngtcp2_ksl_begin(&acktr.ents);
344
+ ent = ngtcp2_ksl_it_get(&it);
345
+
346
+ CU_ASSERT(4500 == ent->pkt_num);
347
+ CU_ASSERT(2 == ent->len);
348
+
349
+ ackfr.type = NGTCP2_FRAME_ACK;
350
+ ackfr.largest_ack = 999;
351
+ ackfr.ack_delay = 0;
352
+ ackfr.first_ack_range = 0;
353
+ ackfr.rangecnt = 0;
354
+
355
+ ngtcp2_acktr_recv_ack(&acktr, &ackfr);
356
+
357
+ CU_ASSERT(0 == ngtcp2_ringbuf_len(&acktr.acks));
358
+ CU_ASSERT(1 == ngtcp2_ksl_len(&acktr.ents));
359
+
360
+ it = ngtcp2_ksl_begin(&acktr.ents);
361
+ ent = ngtcp2_ksl_it_get(&it);
362
+
363
+ CU_ASSERT(4500 == ent->pkt_num);
364
+ CU_ASSERT(1 == ent->len);
365
+
366
+ ngtcp2_acktr_free(&acktr);
367
+ }
@@ -0,0 +1,37 @@
1
+ /*
2
+ * ngtcp2
3
+ *
4
+ * Copyright (c) 2017 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_ACKTR_TEST_H
26
+ #define NGTCP2_ACKTR_TEST_H
27
+
28
+ #ifdef HAVE_CONFIG_H
29
+ # include <config.h>
30
+ #endif /* HAVE_CONFIG_H */
31
+
32
+ void test_ngtcp2_acktr_add(void);
33
+ void test_ngtcp2_acktr_eviction(void);
34
+ void test_ngtcp2_acktr_forget(void);
35
+ void test_ngtcp2_acktr_recv_ack(void);
36
+
37
+ #endif /* NGTCP2_ACKTR_TEST_H */