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,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.