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,104 @@
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_CONN_TEST_H
26
+ #define NGTCP2_CONN_TEST_H
27
+
28
+ #ifdef HAVE_CONFIG_H
29
+ # include <config.h>
30
+ #endif /* HAVE_CONFIG_H */
31
+
32
+ void init_static_path(void);
33
+
34
+ void test_ngtcp2_conn_stream_open_close(void);
35
+ void test_ngtcp2_conn_stream_rx_flow_control(void);
36
+ void test_ngtcp2_conn_stream_rx_flow_control_error(void);
37
+ void test_ngtcp2_conn_stream_tx_flow_control(void);
38
+ void test_ngtcp2_conn_rx_flow_control(void);
39
+ void test_ngtcp2_conn_rx_flow_control_error(void);
40
+ void test_ngtcp2_conn_tx_flow_control(void);
41
+ void test_ngtcp2_conn_shutdown_stream_write(void);
42
+ void test_ngtcp2_conn_recv_reset_stream(void);
43
+ void test_ngtcp2_conn_recv_stop_sending(void);
44
+ void test_ngtcp2_conn_recv_conn_id_omitted(void);
45
+ void test_ngtcp2_conn_short_pkt_type(void);
46
+ void test_ngtcp2_conn_recv_stateless_reset(void);
47
+ void test_ngtcp2_conn_recv_retry(void);
48
+ void test_ngtcp2_conn_recv_delayed_handshake_pkt(void);
49
+ void test_ngtcp2_conn_recv_max_streams(void);
50
+ void test_ngtcp2_conn_handshake(void);
51
+ void test_ngtcp2_conn_handshake_error(void);
52
+ void test_ngtcp2_conn_retransmit_protected(void);
53
+ void test_ngtcp2_conn_send_max_stream_data(void);
54
+ void test_ngtcp2_conn_recv_stream_data(void);
55
+ void test_ngtcp2_conn_recv_ping(void);
56
+ void test_ngtcp2_conn_recv_max_stream_data(void);
57
+ void test_ngtcp2_conn_send_early_data(void);
58
+ void test_ngtcp2_conn_recv_early_data(void);
59
+ void test_ngtcp2_conn_recv_compound_pkt(void);
60
+ void test_ngtcp2_conn_pkt_payloadlen(void);
61
+ void test_ngtcp2_conn_writev_stream(void);
62
+ void test_ngtcp2_conn_writev_datagram(void);
63
+ void test_ngtcp2_conn_recv_datagram(void);
64
+ void test_ngtcp2_conn_recv_new_connection_id(void);
65
+ void test_ngtcp2_conn_recv_retire_connection_id(void);
66
+ void test_ngtcp2_conn_server_path_validation(void);
67
+ void test_ngtcp2_conn_client_connection_migration(void);
68
+ void test_ngtcp2_conn_recv_path_challenge(void);
69
+ void test_ngtcp2_conn_key_update(void);
70
+ void test_ngtcp2_conn_crypto_buffer_exceeded(void);
71
+ void test_ngtcp2_conn_handshake_probe(void);
72
+ void test_ngtcp2_conn_handshake_loss(void);
73
+ void test_ngtcp2_conn_probe(void);
74
+ void test_ngtcp2_conn_recv_client_initial_retry(void);
75
+ void test_ngtcp2_conn_recv_client_initial_token(void);
76
+ void test_ngtcp2_conn_get_active_dcid(void);
77
+ void test_ngtcp2_conn_recv_version_negotiation(void);
78
+ void test_ngtcp2_conn_send_initial_token(void);
79
+ void test_ngtcp2_conn_set_remote_transport_params(void);
80
+ void test_ngtcp2_conn_write_connection_close(void);
81
+ void test_ngtcp2_conn_write_application_close(void);
82
+ void test_ngtcp2_conn_rtb_reclaim_on_pto(void);
83
+ void test_ngtcp2_conn_rtb_reclaim_on_pto_datagram(void);
84
+ void test_ngtcp2_conn_validate_ecn(void);
85
+ void test_ngtcp2_conn_path_validation(void);
86
+ void test_ngtcp2_conn_early_data_sync_stream_data_limit(void);
87
+ void test_ngtcp2_conn_early_data_rejected(void);
88
+ void test_ngtcp2_conn_keep_alive(void);
89
+ void test_ngtcp2_conn_retire_stale_bound_dcid(void);
90
+ void test_ngtcp2_conn_get_scid(void);
91
+ void test_ngtcp2_conn_stream_close(void);
92
+ void test_ngtcp2_conn_buffer_pkt(void);
93
+ void test_ngtcp2_conn_handshake_timeout(void);
94
+ void test_ngtcp2_conn_get_connection_close_error(void);
95
+ void test_ngtcp2_conn_version_negotiation(void);
96
+ void test_ngtcp2_conn_server_negotiate_version(void);
97
+ void test_ngtcp2_conn_pmtud_loss(void);
98
+ void test_ngtcp2_conn_amplification(void);
99
+ void test_ngtcp2_conn_new_failmalloc(void);
100
+ void test_ngtcp2_accept(void);
101
+ void test_ngtcp2_select_version(void);
102
+ void test_ngtcp2_pkt_write_connection_close(void);
103
+
104
+ #endif /* NGTCP2_CONN_TEST_H */
@@ -0,0 +1,430 @@
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_conv_test.h"
26
+
27
+ #include <CUnit/CUnit.h>
28
+
29
+ #include "ngtcp2_conv.h"
30
+ #include "ngtcp2_net.h"
31
+ #include "ngtcp2_test_helper.h"
32
+
33
+ void test_ngtcp2_get_varint(void) {
34
+ uint8_t buf[256];
35
+ const uint8_t *p;
36
+ uint64_t n;
37
+ int64_t s;
38
+
39
+ /* 0 */
40
+ n = 1;
41
+ p = ngtcp2_put_uvarint(buf, 0);
42
+
43
+ CU_ASSERT(1 == p - buf);
44
+
45
+ p = ngtcp2_get_uvarint(&n, buf);
46
+
47
+ CU_ASSERT(1 == p - buf);
48
+ CU_ASSERT(0 == n);
49
+
50
+ /* 63 */
51
+ n = 0;
52
+ p = ngtcp2_put_uvarint(buf, 63);
53
+
54
+ CU_ASSERT(1 == p - buf);
55
+
56
+ p = ngtcp2_get_uvarint(&n, buf);
57
+
58
+ CU_ASSERT(1 == p - buf);
59
+ CU_ASSERT(63 == n);
60
+
61
+ /* 64 */
62
+ n = 0;
63
+ p = ngtcp2_put_uvarint(buf, 64);
64
+
65
+ CU_ASSERT(2 == p - buf);
66
+
67
+ p = ngtcp2_get_uvarint(&n, buf);
68
+
69
+ CU_ASSERT(2 == p - buf);
70
+ CU_ASSERT(64 == n);
71
+
72
+ /* 16383 */
73
+ n = 0;
74
+ p = ngtcp2_put_uvarint(buf, 16383);
75
+
76
+ CU_ASSERT(2 == p - buf);
77
+
78
+ p = ngtcp2_get_uvarint(&n, buf);
79
+
80
+ CU_ASSERT(2 == p - buf);
81
+ CU_ASSERT(16383 == n);
82
+
83
+ /* 16384 */
84
+ n = 0;
85
+ p = ngtcp2_put_uvarint(buf, 16384);
86
+
87
+ CU_ASSERT(4 == p - buf);
88
+
89
+ p = ngtcp2_get_uvarint(&n, buf);
90
+
91
+ CU_ASSERT(4 == p - buf);
92
+ CU_ASSERT(16384 == n);
93
+
94
+ /* 1073741823 */
95
+ n = 0;
96
+ p = ngtcp2_put_uvarint(buf, 1073741823);
97
+
98
+ CU_ASSERT(4 == p - buf);
99
+
100
+ p = ngtcp2_get_uvarint(&n, buf);
101
+
102
+ CU_ASSERT(4 == p - buf);
103
+ CU_ASSERT(1073741823 == n);
104
+
105
+ /* 1073741824 */
106
+ n = 0;
107
+ p = ngtcp2_put_uvarint(buf, 1073741824);
108
+
109
+ CU_ASSERT(8 == p - buf);
110
+
111
+ p = ngtcp2_get_uvarint(&n, buf);
112
+
113
+ CU_ASSERT(8 == p - buf);
114
+ CU_ASSERT(1073741824 == n);
115
+
116
+ /* 4611686018427387903 */
117
+ n = 0;
118
+ p = ngtcp2_put_uvarint(buf, 4611686018427387903ULL);
119
+
120
+ CU_ASSERT(8 == p - buf);
121
+
122
+ p = ngtcp2_get_uvarint(&n, buf);
123
+
124
+ CU_ASSERT(8 == p - buf);
125
+ CU_ASSERT(4611686018427387903ULL == n);
126
+
127
+ /* Check signed version */
128
+ s = 0;
129
+ p = ngtcp2_put_uvarint(buf, 4611686018427387903ULL);
130
+
131
+ CU_ASSERT(8 == p - buf);
132
+
133
+ p = ngtcp2_get_varint(&s, buf);
134
+
135
+ CU_ASSERT(8 == p - buf);
136
+ CU_ASSERT(4611686018427387903LL == s);
137
+ }
138
+
139
+ void test_ngtcp2_get_uvarintlen(void) {
140
+ uint8_t c;
141
+
142
+ c = 0x00;
143
+
144
+ CU_ASSERT(1 == ngtcp2_get_uvarintlen(&c));
145
+
146
+ c = 0x40;
147
+
148
+ CU_ASSERT(2 == ngtcp2_get_uvarintlen(&c));
149
+
150
+ c = 0x80;
151
+
152
+ CU_ASSERT(4 == ngtcp2_get_uvarintlen(&c));
153
+
154
+ c = 0xc0;
155
+
156
+ CU_ASSERT(8 == ngtcp2_get_uvarintlen(&c));
157
+ }
158
+
159
+ void test_ngtcp2_get_uint64(void) {
160
+ uint8_t buf[256];
161
+ const uint8_t *p;
162
+ uint64_t n;
163
+
164
+ /* 0 */
165
+ n = 1;
166
+ p = ngtcp2_put_uint64be(buf, 0);
167
+
168
+ CU_ASSERT(sizeof(n) == p - buf);
169
+
170
+ p = ngtcp2_get_uint64(&n, buf);
171
+
172
+ CU_ASSERT(sizeof(n) == p - buf);
173
+ CU_ASSERT(0 == n);
174
+
175
+ /* 12345678900 */
176
+ n = 0;
177
+ p = ngtcp2_put_uint64be(buf, 12345678900ULL);
178
+
179
+ CU_ASSERT(sizeof(n) == p - buf);
180
+
181
+ p = ngtcp2_get_uint64(&n, buf);
182
+
183
+ CU_ASSERT(sizeof(n) == p - buf);
184
+ CU_ASSERT(12345678900ULL == n);
185
+
186
+ /* 18446744073709551615 */
187
+ n = 0;
188
+ p = ngtcp2_put_uint64be(buf, 18446744073709551615ULL);
189
+
190
+ CU_ASSERT(sizeof(n) == p - buf);
191
+
192
+ p = ngtcp2_get_uint64(&n, buf);
193
+
194
+ CU_ASSERT(sizeof(n) == p - buf);
195
+ CU_ASSERT(18446744073709551615ULL == n);
196
+ }
197
+
198
+ void test_ngtcp2_get_uint48(void) {
199
+ uint8_t buf[256];
200
+ const uint8_t *p;
201
+ uint64_t n;
202
+
203
+ /* 0 */
204
+ n = 1;
205
+ p = ngtcp2_put_uint48be(buf, 0);
206
+
207
+ CU_ASSERT(6 == p - buf);
208
+
209
+ p = ngtcp2_get_uint48(&n, buf);
210
+
211
+ CU_ASSERT(6 == p - buf);
212
+ CU_ASSERT(0 == n);
213
+
214
+ /* 123456789 */
215
+ n = 0;
216
+ p = ngtcp2_put_uint48be(buf, 123456789);
217
+
218
+ CU_ASSERT(6 == p - buf);
219
+
220
+ p = ngtcp2_get_uint48(&n, buf);
221
+
222
+ CU_ASSERT(6 == p - buf);
223
+ CU_ASSERT(123456789 == n);
224
+
225
+ /* 281474976710655 */
226
+ n = 0;
227
+ p = ngtcp2_put_uint48be(buf, 281474976710655ULL);
228
+
229
+ CU_ASSERT(6 == p - buf);
230
+
231
+ p = ngtcp2_get_uint48(&n, buf);
232
+
233
+ CU_ASSERT(6 == p - buf);
234
+ CU_ASSERT(281474976710655ULL == n);
235
+ }
236
+
237
+ void test_ngtcp2_get_uint32(void) {
238
+ uint8_t buf[256];
239
+ const uint8_t *p;
240
+ uint32_t n;
241
+
242
+ /* 0 */
243
+ n = 1;
244
+ p = ngtcp2_put_uint32be(buf, 0);
245
+
246
+ CU_ASSERT(sizeof(n) == p - buf);
247
+
248
+ p = ngtcp2_get_uint32(&n, buf);
249
+
250
+ CU_ASSERT(sizeof(n) == p - buf);
251
+ CU_ASSERT(0 == n);
252
+
253
+ /* 123456 */
254
+ n = 0;
255
+ p = ngtcp2_put_uint32be(buf, 123456);
256
+
257
+ CU_ASSERT(sizeof(n) == p - buf);
258
+
259
+ p = ngtcp2_get_uint32(&n, buf);
260
+
261
+ CU_ASSERT(sizeof(n) == p - buf);
262
+ CU_ASSERT(123456 == n);
263
+
264
+ /* 4294967295 */
265
+ n = 0;
266
+ p = ngtcp2_put_uint32be(buf, 4294967295UL);
267
+
268
+ CU_ASSERT(sizeof(n) == p - buf);
269
+
270
+ p = ngtcp2_get_uint32(&n, buf);
271
+
272
+ CU_ASSERT(sizeof(n) == p - buf);
273
+ CU_ASSERT(4294967295UL == n);
274
+ }
275
+
276
+ void test_ngtcp2_get_uint24(void) {
277
+ uint8_t buf[256];
278
+ const uint8_t *p;
279
+ uint32_t n;
280
+
281
+ /* 0 */
282
+ n = 1;
283
+ p = ngtcp2_put_uint24be(buf, 0);
284
+
285
+ CU_ASSERT(3 == p - buf);
286
+
287
+ p = ngtcp2_get_uint24(&n, buf);
288
+
289
+ CU_ASSERT(3 == p - buf);
290
+ CU_ASSERT(0 == n);
291
+
292
+ /* 12345 */
293
+ n = 0;
294
+ p = ngtcp2_put_uint24be(buf, 12345);
295
+
296
+ CU_ASSERT(3 == p - buf);
297
+
298
+ p = ngtcp2_get_uint24(&n, buf);
299
+
300
+ CU_ASSERT(3 == p - buf);
301
+ CU_ASSERT(12345 == n);
302
+
303
+ /* 16777215 */
304
+ n = 0;
305
+ p = ngtcp2_put_uint24be(buf, 16777215);
306
+
307
+ CU_ASSERT(3 == p - buf);
308
+
309
+ p = ngtcp2_get_uint24(&n, buf);
310
+
311
+ CU_ASSERT(3 == p - buf);
312
+ CU_ASSERT(16777215 == n);
313
+ }
314
+
315
+ void test_ngtcp2_get_uint16(void) {
316
+ uint8_t buf[256];
317
+ const uint8_t *p;
318
+ uint16_t n;
319
+
320
+ /* 0 */
321
+ n = 1;
322
+ p = ngtcp2_put_uint16be(buf, 0);
323
+
324
+ CU_ASSERT(sizeof(n) == p - buf);
325
+
326
+ p = ngtcp2_get_uint16(&n, buf);
327
+
328
+ CU_ASSERT(sizeof(n) == p - buf);
329
+ CU_ASSERT(0 == n);
330
+
331
+ /* 1234 */
332
+ n = 0;
333
+ p = ngtcp2_put_uint16be(buf, 1234);
334
+
335
+ CU_ASSERT(sizeof(n) == p - buf);
336
+
337
+ p = ngtcp2_get_uint16(&n, buf);
338
+
339
+ CU_ASSERT(sizeof(n) == p - buf);
340
+ CU_ASSERT(1234 == n);
341
+
342
+ /* 65535 */
343
+ n = 0;
344
+ p = ngtcp2_put_uint16be(buf, 65535);
345
+
346
+ CU_ASSERT(sizeof(n) == p - buf);
347
+
348
+ p = ngtcp2_get_uint16(&n, buf);
349
+
350
+ CU_ASSERT(sizeof(n) == p - buf);
351
+ CU_ASSERT(65535 == n);
352
+ }
353
+
354
+ void test_ngtcp2_get_uint16be(void) {
355
+ uint8_t buf[256];
356
+ const uint8_t *p;
357
+ uint16_t n;
358
+
359
+ /* 0 */
360
+ n = 1;
361
+ p = ngtcp2_put_uint16(buf, 0);
362
+
363
+ CU_ASSERT(sizeof(n) == p - buf);
364
+
365
+ p = ngtcp2_get_uint16be(&n, buf);
366
+
367
+ CU_ASSERT(sizeof(n) == p - buf);
368
+ CU_ASSERT(0 == n);
369
+
370
+ /* 1234 */
371
+ n = 0;
372
+ p = ngtcp2_put_uint16(buf, ngtcp2_htons(1234));
373
+
374
+ CU_ASSERT(sizeof(n) == p - buf);
375
+
376
+ p = ngtcp2_get_uint16be(&n, buf);
377
+
378
+ CU_ASSERT(sizeof(n) == p - buf);
379
+ CU_ASSERT(1234 == ngtcp2_ntohs(n));
380
+
381
+ /* 65535 */
382
+ n = 0;
383
+ p = ngtcp2_put_uint16(buf, 65535);
384
+
385
+ CU_ASSERT(sizeof(n) == p - buf);
386
+
387
+ p = ngtcp2_get_uint16be(&n, buf);
388
+
389
+ CU_ASSERT(sizeof(n) == p - buf);
390
+ CU_ASSERT(65535 == n);
391
+ }
392
+
393
+ void test_ngtcp2_put_uvarintlen(void) {
394
+ CU_ASSERT(1 == ngtcp2_put_uvarintlen(0));
395
+ CU_ASSERT(1 == ngtcp2_put_uvarintlen(63));
396
+ CU_ASSERT(2 == ngtcp2_put_uvarintlen(64));
397
+ CU_ASSERT(2 == ngtcp2_put_uvarintlen(16383));
398
+ CU_ASSERT(4 == ngtcp2_put_uvarintlen(16384));
399
+ CU_ASSERT(4 == ngtcp2_put_uvarintlen(1073741823));
400
+ CU_ASSERT(8 == ngtcp2_put_uvarintlen(1073741824));
401
+ CU_ASSERT(8 == ngtcp2_put_uvarintlen(4611686018427387903ULL));
402
+ }
403
+
404
+ void test_ngtcp2_nth_server_bidi_id(void) {
405
+ CU_ASSERT(0 == ngtcp2_nth_server_bidi_id(0));
406
+ CU_ASSERT(1 == ngtcp2_nth_server_bidi_id(1));
407
+ CU_ASSERT(5 == ngtcp2_nth_server_bidi_id(2));
408
+ CU_ASSERT(9 == ngtcp2_nth_server_bidi_id(3));
409
+ }
410
+
411
+ void test_ngtcp2_nth_server_uni_id(void) {
412
+ CU_ASSERT(0 == ngtcp2_nth_server_uni_id(0));
413
+ CU_ASSERT(3 == ngtcp2_nth_server_uni_id(1));
414
+ CU_ASSERT(7 == ngtcp2_nth_server_uni_id(2));
415
+ CU_ASSERT(11 == ngtcp2_nth_server_uni_id(3));
416
+ }
417
+
418
+ void test_ngtcp2_nth_client_bidi_id(void) {
419
+ CU_ASSERT(0 == ngtcp2_nth_client_bidi_id(0));
420
+ CU_ASSERT(0 == ngtcp2_nth_client_bidi_id(1));
421
+ CU_ASSERT(4 == ngtcp2_nth_client_bidi_id(2));
422
+ CU_ASSERT(8 == ngtcp2_nth_client_bidi_id(3));
423
+ }
424
+
425
+ void test_ngtcp2_nth_client_uni_id(void) {
426
+ CU_ASSERT(0 == ngtcp2_nth_client_uni_id(0));
427
+ CU_ASSERT(2 == ngtcp2_nth_client_uni_id(1));
428
+ CU_ASSERT(6 == ngtcp2_nth_client_uni_id(2));
429
+ CU_ASSERT(10 == ngtcp2_nth_client_uni_id(3));
430
+ }
@@ -0,0 +1,46 @@
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_CONV_TEST_H
26
+ #define NGTCP2_CONV_TEST_H
27
+
28
+ #ifdef HAVE_CONFIG_H
29
+ # include <config.h>
30
+ #endif /* HAVE_CONFIG_H */
31
+
32
+ void test_ngtcp2_get_varint(void);
33
+ void test_ngtcp2_get_uvarintlen(void);
34
+ void test_ngtcp2_put_uvarintlen(void);
35
+ void test_ngtcp2_get_uint64(void);
36
+ void test_ngtcp2_get_uint48(void);
37
+ void test_ngtcp2_get_uint32(void);
38
+ void test_ngtcp2_get_uint24(void);
39
+ void test_ngtcp2_get_uint16(void);
40
+ void test_ngtcp2_get_uint16be(void);
41
+ void test_ngtcp2_nth_server_bidi_id(void);
42
+ void test_ngtcp2_nth_server_uni_id(void);
43
+ void test_ngtcp2_nth_client_bidi_id(void);
44
+ void test_ngtcp2_nth_client_uni_id(void);
45
+
46
+ #endif /* NGTCP2_CONV_TEST_H */