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
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 37eb98bd4ac433c78a3f53cfba7dfc29ee1da28e49557bba52d9f568254ee0d4
4
+ data.tar.gz: fa2894b34f6682b2b961574b0bf1a4b3867ce1cb0ade491d9fb47531ec91d571
5
+ SHA512:
6
+ metadata.gz: a068f6cc8773139eac21ac2e91115f925fbe68500605b42a13fcb4c61cd57d3fd48b28f1b21a9532f326908f6af7fb58e8d95cefd0f87ae1b7625e67d0d3bc25
7
+ data.tar.gz: 90b32525a7dfa4f584b2ca42e8e5835ea342f7027754d6d46e97a0039f3ec41d930ddf8cc46e31e4f7ff3e32bac02672a8bce4d21b63048e3ce30f8fef865347
checksums.yaml.gz.sig ADDED
Binary file
@@ -0,0 +1,44 @@
1
+ Alexis La Goutte
2
+ Amir Livneh
3
+ Anna Henningsen
4
+ Bryan Call
5
+ Daan De Meyer
6
+ Daiki Ueno
7
+ Daniel Bevenius
8
+ Daniel Stenberg
9
+ Dave Reisner
10
+ Don
11
+ Frédéric Lécaille
12
+ Félix Dagenais
13
+ James M Snell
14
+ Javier Blazquez
15
+ Jay Satiro
16
+ Jean-Philippe Boivin
17
+ Jiawen Geng
18
+ Junqi Wang
19
+ Ken-ichi ICHINO
20
+ Liang Ma
21
+ Martin Thomson
22
+ NKTelnet
23
+ Natris
24
+ Patrick Griffis
25
+ Peter Wu
26
+ Samuel Henrique
27
+ Stefan Eissing
28
+ Stefan Eissing
29
+ Tatsuhiro Tsujikawa
30
+ Tim Gates
31
+ Tomas Mraz
32
+ Toni Uhlig
33
+ Valère Plantevin
34
+ Victor Loh
35
+ Viktor Szakats
36
+ Zizhong Zhang
37
+ flx413
38
+ hondaxiao
39
+ junqiw
40
+ msoxzw
41
+ nickfajones
42
+ rhoxn
43
+ scw00
44
+ shibin k v
@@ -0,0 +1,431 @@
1
+ # ngtcp2
2
+ #
3
+ # Copyright (c) 2016 ngtcp2 contributors
4
+ # Copyright (c) 2012 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
+ cmake_minimum_required(VERSION 3.1)
26
+
27
+ # Allow setting VISIBILITY_PRESET on static library targets without warning.
28
+ cmake_policy(SET CMP0063 NEW)
29
+
30
+ # XXX using 0.1.90 instead of 0.2.0-DEV
31
+ project(ngtcp2 VERSION 0.13.90)
32
+
33
+ # See versioning rule:
34
+ # https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html
35
+ set(LT_CURRENT 10)
36
+ set(LT_REVISION 1)
37
+ set(LT_AGE 0)
38
+
39
+ set(CRYPTO_OPENSSL_LT_CURRENT 4)
40
+ set(CRYPTO_OPENSSL_LT_REVISION 0)
41
+ set(CRYPTO_OPENSSL_LT_AGE 0)
42
+
43
+ set(CRYPTO_GNUTLS_LT_CURRENT 4)
44
+ set(CRYPTO_GNUTLS_LT_REVISION 0)
45
+ set(CRYPTO_GNUTLS_LT_AGE 0)
46
+
47
+ set(CRYPTO_WOLFSSL_LT_CURRENT 1)
48
+ set(CRYPTO_WOLFSSL_LT_REVISION 0)
49
+ set(CRYPTO_WOLFSSL_LT_AGE 0)
50
+
51
+ set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake" "${CMAKE_MODULE_PATH}")
52
+ include(Version)
53
+
54
+ math(EXPR LT_SOVERSION "${LT_CURRENT} - ${LT_AGE}")
55
+ set(LT_VERSION "${LT_SOVERSION}.${LT_AGE}.${LT_REVISION}")
56
+
57
+ math(EXPR CRYPTO_OPENSSL_LT_SOVERSION
58
+ "${CRYPTO_OPENSSL_LT_CURRENT} - ${CRYPTO_OPENSSL_LT_AGE}")
59
+ set(CRYPTO_OPENSSL_LT_VERSION
60
+ "${CRYPTO_OPENSSL_LT_SOVERSION}.${CRYPTO_OPENSSL_LT_AGE}.${CRYPTO_OPENSSL_LT_REVISION}")
61
+
62
+ math(EXPR CRYPTO_GNUTLS_LT_SOVERSION
63
+ "${CRYPTO_GNUTLS_LT_CURRENT} - ${CRYPTO_GNUTLS_LT_AGE}")
64
+ set(CRYPTO_GNUTLS_LT_VERSION
65
+ "${CRYPTO_GNUTLS_LT_SOVERSION}.${CRYPTO_GNUTLS_LT_AGE}.${CRYPTO_GNUTLS_LT_REVISION}")
66
+
67
+ math(EXPR CRYPTO_WOLFSSL_LT_SOVERSION
68
+ "${CRYPTO_WOLFSSL_LT_CURRENT} - ${CRYPTO_WOLFSSL_LT_AGE}")
69
+ set(CRYPTO_WOLFSSL_LT_VERSION
70
+ "${CRYPTO_WOLFSSL_LT_SOVERSION}.${CRYPTO_WOLFSSL_LT_AGE}.${CRYPTO_WOLFSSL_LT_REVISION}")
71
+
72
+ set(PACKAGE_VERSION "${PROJECT_VERSION}")
73
+ HexVersion(PACKAGE_VERSION_NUM ${PROJECT_VERSION_MAJOR} ${PROJECT_VERSION_MINOR} ${PROJECT_VERSION_PATCH})
74
+
75
+ if(NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES)
76
+ set(CMAKE_BUILD_TYPE RelWithDebInfo CACHE STRING "Choose the build type" FORCE)
77
+
78
+ # Include "None" as option to disable any additional (optimization) flags,
79
+ # relying on just CMAKE_C_FLAGS and CMAKE_CXX_FLAGS (which are empty by
80
+ # default). These strings are presented in cmake-gui.
81
+ set_property(CACHE CMAKE_BUILD_TYPE PROPERTY STRINGS
82
+ "None" "Debug" "Release" "MinSizeRel" "RelWithDebInfo")
83
+ endif()
84
+
85
+ include(GNUInstallDirs)
86
+
87
+ include(CMakeOptions.txt)
88
+
89
+ # Do not disable assertions based on CMAKE_BUILD_TYPE.
90
+ foreach(_build_type "Release" "MinSizeRel" "RelWithDebInfo")
91
+ foreach(_lang C CXX)
92
+ string(TOUPPER "CMAKE_${_lang}_FLAGS_${_build_type}" _var)
93
+ string(REGEX REPLACE "(^| )[/-]D *NDEBUG($| )" " " ${_var} "${${_var}}")
94
+ endforeach()
95
+ endforeach()
96
+
97
+ include(CMakePushCheckState)
98
+ include(ExtractValidFlags)
99
+
100
+ if(NOT CMAKE_C_COMPILER_ID MATCHES "MSVC")
101
+ if(ENABLE_ASAN)
102
+ cmake_push_check_state()
103
+ set(CMAKE_REQUIRED_LIBRARIES "-fsanitize=address")
104
+ check_c_compiler_flag(-fsanitize=address C__fsanitize_address_VALID)
105
+ check_cxx_compiler_flag(-fsanitize=address CXX__fsanitize_address_VALID)
106
+ cmake_pop_check_state()
107
+ if(NOT C__fsanitize_address_VALID OR NOT CXX__fsanitize_address_VALID)
108
+ message(WARNING "ENABLE_ASAN was requested, but not supported!")
109
+ else()
110
+ set(CMAKE_C_FLAGS "-fsanitize=address ${CMAKE_C_FLAGS}")
111
+ set(CMAKE_CXX_FLAGS "-fsanitize=address ${CMAKE_CXX_FLAGS}")
112
+ endif()
113
+ endif()
114
+ endif()
115
+
116
+ if(ENABLE_GNUTLS)
117
+ find_package(GnuTLS 3.7.2)
118
+ endif()
119
+ if(ENABLE_OPENSSL)
120
+ find_package(OpenSSL 1.1.1)
121
+ endif()
122
+ if(ENABLE_WOLFSSL)
123
+ find_package(wolfssl 5.5.0)
124
+ endif()
125
+ if(ENABLE_JEMALLOC)
126
+ find_package(Jemalloc)
127
+ endif()
128
+ find_package(Libev 4.11)
129
+ find_package(Libnghttp3 0.0.0)
130
+ find_package(CUnit 2.1)
131
+ enable_testing()
132
+ set(HAVE_CUNIT ${CUNIT_FOUND})
133
+ if(HAVE_CUNIT)
134
+ add_custom_target(check COMMAND ${CMAKE_CTEST_COMMAND})
135
+ endif()
136
+
137
+ # OpenSSL (required for libngtcp2_crypto_openssl,
138
+ # libngtcp2_crypto_picotls and examples)
139
+ include(CheckSymbolExists)
140
+ if(ENABLE_OPENSSL AND OPENSSL_FOUND)
141
+ set(VANILLA_OPENSSL_INCLUDE_DIRS ${OPENSSL_INCLUDE_DIR})
142
+ set(VANILLA_OPENSSL_LIBRARIES ${OPENSSL_LIBRARIES})
143
+ set(HAVE_VANILLA_OPENSSL TRUE)
144
+
145
+ # Until OpenSSL gains mainline support for QUIC, check for a patched version.
146
+ cmake_push_check_state()
147
+ set(CMAKE_REQUIRED_INCLUDES "${OPENSSL_INCLUDE_DIR}")
148
+ set(CMAKE_REQUIRED_LIBRARIES "${OPENSSL_LIBRARIES}")
149
+ if(WIN32)
150
+ set(CMAKE_REQUIRED_LIBRARIES "${CMAKE_REQUIRED_LIBRARIES}" "ws2_32" "bcrypt")
151
+ endif()
152
+ check_symbol_exists(SSL_is_quic "openssl/ssl.h" HAVE_SSL_IS_QUIC)
153
+ if(NOT HAVE_SSL_IS_QUIC)
154
+ message(WARNING "Disabling OpenSSL due to lack of QUIC support in ${OPENSSL_LIBRARIES}")
155
+ endif()
156
+ cmake_pop_check_state()
157
+ endif()
158
+ if(ENABLE_OPENSSL AND HAVE_SSL_IS_QUIC)
159
+ set(OPENSSL_INCLUDE_DIRS ${OPENSSL_INCLUDE_DIR})
160
+ set(HAVE_OPENSSL TRUE)
161
+ set(HAVE_CRYPTO TRUE)
162
+ else()
163
+ set(HAVE_OPENSSL FALSE)
164
+ set(OPENSSL_INCLUDE_DIRS "")
165
+ set(OPENSSL_LIBRARIES "")
166
+ endif()
167
+
168
+ # BoringSSL (required for libngtcp2_crypto_boringssl)
169
+ if(ENABLE_BORINGSSL)
170
+ cmake_push_check_state()
171
+ set(CMAKE_REQUIRED_INCLUDES "${BORINGSSL_INCLUDE_DIR}")
172
+ set(CMAKE_REQUIRED_LIBRARIES "${BORINGSSL_LIBRARIES}")
173
+ check_symbol_exists(SSL_set_quic_early_data_context "openssl/ssl.h" HAVE_SSL_SET_QUIC_EARLY_DATA_CONTEXT)
174
+ if(NOT HAVE_SSL_SET_QUIC_EARLY_DATA_CONTEXT)
175
+ message(WARNING "Disabling BoringSSL due to lack of QUIC support in ${BORINGSSL_LIBRARIES}")
176
+ endif()
177
+ cmake_pop_check_state()
178
+ endif()
179
+ if(ENABLE_BORINGSSL AND HAVE_SSL_SET_QUIC_EARLY_DATA_CONTEXT)
180
+ set(BORINGSSL_INCLUDE_DIRS ${BORINGSSL_INCLUDE_DIR})
181
+ set(HAVE_BORINGSSL TRUE)
182
+ set(HAVE_CRYPTO TRUE)
183
+ else()
184
+ set(HAVE_BORINGSSL FALSE)
185
+ set(BORINGSSL_INCLUDE_DIRS "")
186
+ set(BORINGSSL_LIBRARIES "")
187
+ endif()
188
+
189
+ # jemalloc
190
+ set(HAVE_JEMALLOC ${JEMALLOC_FOUND})
191
+ # libev (required for examples)
192
+ set(HAVE_LIBEV ${LIBEV_FOUND})
193
+ # libnghttp3 (required for examples)
194
+ set(HAVE_LIBNGHTTP3 ${LIBNGHTTP3_FOUND})
195
+
196
+ # GnuTLS (required for libngtcp2_crypto_gnutls)
197
+ if(ENABLE_GNUTLS AND GNUTLS_FOUND)
198
+ set(GNUTLS_INCLUDE_DIRS ${GNUTLS_INCLUDE_DIR})
199
+ set(HAVE_GNUTLS TRUE)
200
+ set(HAVE_CRYPTO TRUE)
201
+ else()
202
+ set(HAVE_GNUTLS FALSE)
203
+ set(GNUTLS_INCLUDE_DIRS "")
204
+ set(GNUTLS_LIBRARIES "")
205
+ endif()
206
+
207
+ # Picotls (required for libngtcp2_crypto_picotls)
208
+ if(ENABLE_PICOTLS)
209
+ cmake_push_check_state()
210
+ set(CMAKE_REQUIRED_INCLUDES "${PICOTLS_INCLUDE_DIR}" "${VANILLA_OPENSSL_INCLUDE_DIRS}")
211
+ set(CMAKE_REQUIRED_LIBRARIES "${PICOTLS_LIBRARIES}" "${VANILLA_OPENSSL_LIBRARIES}")
212
+ check_symbol_exists(ptls_openssl_random_bytes "picotls.h;picotls/openssl.h"
213
+ HAVE_PTLS_OPENSSL_RANDOM_BYTES)
214
+ if(NOT HAVE_PTLS_OPENSSL_RANDOM_BYTES)
215
+ message(WARNING "Disabling Picotls because ptls_openssl_random_bytes not found in ${CMAKE_REQUIRED_LIBRARIES}")
216
+ endif()
217
+ cmake_pop_check_state()
218
+ endif()
219
+ if(ENABLE_PICOTLS AND HAVE_PTLS_OPENSSL_RANDOM_BYTES)
220
+ set(PICOTLS_INCLUDE_DIRS ${PICOTLS_INCLUDE_DIR})
221
+ set(HAVE_PICOTLS TRUE)
222
+ set(HAVE_CRYPTO TRUE)
223
+ else()
224
+ set(HAVE_PICOTLS FALSE)
225
+ set(PICOTLS_INCLUDE_DIRS "")
226
+ set(PICOTLS_LIBRARIES "")
227
+ endif()
228
+
229
+ # wolfSSL (required for libngtcp2_crypto_wolfssl)
230
+ if(ENABLE_WOLFSSL AND WOLFSSL_FOUND)
231
+ set(WOLFSSL_INCLUDE_DIRS ${WOLFSSL_INCLUDE_DIR})
232
+ set(HAVE_WOLFSSL TRUE)
233
+ set(HAVE_CRYPTO TRUE)
234
+ else()
235
+ set(HAVE_WOLFSSL FALSE)
236
+ set(WOLFSSL_INCLUDE_DIRS "")
237
+ set(WOLFSSL_LIBRARIES "")
238
+ endif()
239
+
240
+ # Checks for header files.
241
+ include(CheckIncludeFile)
242
+ check_include_file("arpa/inet.h" HAVE_ARPA_INET_H)
243
+ check_include_file("netinet/in.h" HAVE_NETINET_IN_H)
244
+ check_include_file("stddef.h" HAVE_STDDEF_H)
245
+ check_include_file("stdint.h" HAVE_STDINT_H)
246
+ check_include_file("stdlib.h" HAVE_STDLIB_H)
247
+ check_include_file("string.h" HAVE_STRING_H)
248
+ check_include_file("unistd.h" HAVE_UNISTD_H)
249
+ check_include_file("sys/endian.h" HAVE_SYS_ENDIAN_H)
250
+ check_include_file("endian.h" HAVE_ENDIAN_H)
251
+ check_include_file("byteswap.h" HAVE_BYTESWAP_H)
252
+ check_include_file("asm/types.h" HAVE_ASM_TYPES_H)
253
+ check_include_file("linux/netlink.h" HAVE_LINUX_NETLINK_H)
254
+ check_include_file("linux/rtnetlink.h" HAVE_LINUX_RTNETLINK_H)
255
+
256
+ include(CheckTypeSize)
257
+ # Checks for typedefs, structures, and compiler characteristics.
258
+ # AC_TYPE_SIZE_T
259
+ check_type_size("ssize_t" SIZEOF_SSIZE_T)
260
+ if(SIZEOF_SSIZE_T STREQUAL "")
261
+ # ssize_t is a signed type in POSIX storing at least -1.
262
+ # Set it to a pointer-size int.
263
+ set(ssize_t ptrdiff_t)
264
+ endif()
265
+
266
+ # Checks for symbols.
267
+ if(HAVE_ENDIAN_H)
268
+ check_symbol_exists(be64toh "endian.h" HAVE_BE64TOH)
269
+ endif()
270
+ if(HAVE_SYS_ENDIAN_H)
271
+ check_symbol_exists(be64toh "sys/endian.h" HAVE_BE64TOH)
272
+ endif()
273
+
274
+ check_symbol_exists(bswap_64 "byteswap.h" HAVE_BSWAP_64)
275
+
276
+ set(WARNCFLAGS)
277
+ set(WARNCXXFLAGS)
278
+ if(CMAKE_C_COMPILER_ID MATCHES "MSVC")
279
+ if(ENABLE_WERROR)
280
+ set(WARNCFLAGS /WX)
281
+ set(WARNCXXFLAGS /WX)
282
+ endif()
283
+ else()
284
+ if(ENABLE_WERROR)
285
+ extract_valid_c_flags(WARNCFLAGS -Werror)
286
+ extract_valid_c_flags(WARNCXXFLAGS -Werror)
287
+ endif()
288
+
289
+ # For C compiler
290
+ extract_valid_c_flags(WARNCFLAGS
291
+ -Wall
292
+ -Wextra
293
+ -Wmissing-prototypes
294
+ -Wstrict-prototypes
295
+ -Wmissing-declarations
296
+ -Wpointer-arith
297
+ -Wdeclaration-after-statement
298
+ -Wformat-security
299
+ -Wwrite-strings
300
+ -Wshadow
301
+ -Winline
302
+ -Wnested-externs
303
+ -Wfloat-equal
304
+ -Wundef
305
+ -Wendif-labels
306
+ -Wempty-body
307
+ -Wcast-align
308
+ -Wclobbered
309
+ -Wvla
310
+ -Wpragmas
311
+ -Wunreachable-code
312
+ -Waddress
313
+ -Wattributes
314
+ -Wdiv-by-zero
315
+ -Wshorten-64-to-32
316
+
317
+ -Wconversion
318
+ -Wextended-offsetof
319
+ -Wformat-nonliteral
320
+ -Wlanguage-extension-token
321
+ -Wmissing-field-initializers
322
+ -Wmissing-noreturn
323
+ -Wmissing-variable-declarations
324
+ # Not used because we cannot change public structs
325
+ # -Wpadded
326
+ -Wsign-conversion
327
+ # Not used because this basically disallows default case
328
+ # -Wswitch-enum
329
+ -Wunreachable-code-break
330
+ -Wunused-macros
331
+ -Wunused-parameter
332
+ -Wredundant-decls
333
+ # Only work with Clang for the moment
334
+ -Wheader-guard
335
+ -Wsometimes-uninitialized
336
+
337
+ # Only work with gcc7 for the moment
338
+ -Wduplicated-branches
339
+ # This is required because we pass format string as "const char*.
340
+ -Wno-format-nonliteral
341
+ )
342
+
343
+ extract_valid_cxx_flags(WARNCXXFLAGS
344
+ # For C++ compiler
345
+ -Wall
346
+ -Wformat-security
347
+ -Wsometimes-uninitialized
348
+ # Disable noexcept-type warning of g++-7. This is not harmful as
349
+ # long as all source files are compiled with the same compiler.
350
+ -Wno-noexcept-type
351
+ )
352
+ endif()
353
+
354
+ if(ENABLE_DEBUG)
355
+ set(DEBUGBUILD 1)
356
+ endif()
357
+
358
+ add_definitions(-DHAVE_CONFIG_H)
359
+ configure_file(cmakeconfig.h.in config.h)
360
+ # autotools-compatible names
361
+ # Sphinx expects relative paths in the .rst files. Use the fact that the files
362
+ # below are all one directory level deep.
363
+ file(RELATIVE_PATH top_srcdir "${CMAKE_CURRENT_BINARY_DIR}/dir" "${CMAKE_CURRENT_SOURCE_DIR}")
364
+ file(RELATIVE_PATH top_builddir "${CMAKE_CURRENT_BINARY_DIR}/dir" "${CMAKE_CURRENT_BINARY_DIR}")
365
+ set(abs_top_srcdir "${CMAKE_CURRENT_SOURCE_DIR}")
366
+ set(abs_top_builddir "${CMAKE_CURRENT_BINARY_DIR}")
367
+ # libngtcp2.pc (pkg-config file)
368
+ set(prefix "${CMAKE_INSTALL_PREFIX}")
369
+ set(exec_prefix "${CMAKE_INSTALL_PREFIX}")
370
+ set(libdir "${CMAKE_INSTALL_FULL_LIBDIR}")
371
+ set(includedir "${CMAKE_INSTALL_FULL_INCLUDEDIR}")
372
+ set(VERSION "${PACKAGE_VERSION}")
373
+ # For init scripts and systemd service file (in contrib/)
374
+ set(bindir "${CMAKE_INSTALL_FULL_BINDIR}")
375
+ set(sbindir "${CMAKE_INSTALL_FULL_SBINDIR}")
376
+ foreach(name
377
+ lib/libngtcp2.pc
378
+ lib/includes/ngtcp2/version.h
379
+ )
380
+ configure_file("${name}.in" "${name}" @ONLY)
381
+ endforeach()
382
+
383
+ if(APPLE)
384
+ add_definitions(-D__APPLE_USE_RFC_3542)
385
+ endif()
386
+
387
+ include_directories(
388
+ "${CMAKE_CURRENT_BINARY_DIR}" # for config.h
389
+ )
390
+ # For use in src/CMakeLists.txt
391
+ set(PKGDATADIR "${CMAKE_INSTALL_FULL_DATADIR}/${CMAKE_PROJECT_NAME}")
392
+
393
+ install(FILES README.rst DESTINATION "${CMAKE_INSTALL_DOCDIR}")
394
+
395
+ add_subdirectory(lib)
396
+ add_subdirectory(tests)
397
+ add_subdirectory(crypto)
398
+ add_subdirectory(third-party)
399
+ add_subdirectory(examples)
400
+
401
+
402
+ string(TOUPPER "${CMAKE_BUILD_TYPE}" _build_type)
403
+ message(STATUS "summary of build options:
404
+
405
+ Package version: ${VERSION}
406
+ Library version: ${LT_CURRENT}:${LT_REVISION}:${LT_AGE}
407
+ Install prefix: ${CMAKE_INSTALL_PREFIX}
408
+ Target system: ${CMAKE_SYSTEM_NAME}
409
+ Compiler:
410
+ Build type: ${CMAKE_BUILD_TYPE}
411
+ C compiler: ${CMAKE_C_COMPILER}
412
+ CFLAGS: ${CMAKE_C_FLAGS_${_build_type}} ${CMAKE_C_FLAGS}
413
+ C++ compiler: ${CMAKE_CXX_COMPILER}
414
+ CXXFLAGS: ${CMAKE_CXX_FLAGS_${_build_type}} ${CMAKE_CXX_FLAGS}
415
+ WARNCFLAGS: ${WARNCFLAGS}
416
+ WARNCXXFLAGS: ${WARNCXXFLAGS}
417
+ Library:
418
+ Shared: ${ENABLE_SHARED_LIB}
419
+ Static: ${ENABLE_STATIC_LIB}
420
+ Test:
421
+ CUnit: ${HAVE_CUNIT} (LIBS='${CUNIT_LIBRARIES}')
422
+ Libs:
423
+ OpenSSL: ${HAVE_OPENSSL} (LIBS='${OPENSSL_LIBRARIES}')
424
+ Libev: ${HAVE_LIBEV} (LIBS='${LIBEV_LIBRARIES}')
425
+ Libnghttp3: ${HAVE_LIBNGHTTP3} (LIBS='${LIBNGHTTP3_LIBRARIES}')
426
+ GnuTLS: ${HAVE_GNUTLS} (LIBS='${GNUTLS_LIBRARIES}')
427
+ BoringSSL: ${HAVE_BORINGSSL} (LIBS='${BORINGSSL_LIBRARIES}')
428
+ Picotls: ${HAVE_PICOTLS} (LIBS='${PICOTLS_LIBRARIES}')
429
+ wolfSSL: ${HAVE_WOLFSSL} (LIBS='${WOLFSSL_LIBRARIES}')
430
+ Jemalloc: ${HAVE_JEMALLOC} (LIBS='${JEMALLOC_LIBRARIES}')
431
+ ")
@@ -0,0 +1,17 @@
1
+ # Features that can be enabled for cmake (see CMakeLists.txt)
2
+
3
+ option(ENABLE_STATIC_LIB "Build as static libraries" ON)
4
+ option(ENABLE_SHARED_LIB "Build as shared libraries" ON)
5
+
6
+ option(ENABLE_WERROR "Make compiler warnings fatal" OFF)
7
+ option(ENABLE_DEBUG "Turn on debug output" OFF)
8
+ option(ENABLE_ASAN "Enable AddressSanitizer (ASAN)" OFF)
9
+ option(ENABLE_JEMALLOC "Enable Jemalloc" OFF)
10
+
11
+ option(ENABLE_GNUTLS "Enable GnuTLS crypto backend" OFF)
12
+ option(ENABLE_OPENSSL "Enable OpenSSL crypto backend (required for examples)" ON)
13
+ option(ENABLE_BORINGSSL "Enable BoringSSL crypto backend" OFF)
14
+ option(ENABLE_PICOTLS "Enable Picotls crypto backend" OFF)
15
+ option(ENABLE_WOLFSSL "Enable wolfSSL crypto backend" OFF)
16
+
17
+ # vim: ft=cmake:
@@ -0,0 +1,22 @@
1
+ The MIT License
2
+
3
+ Copyright (c) 2016 ngtcp2 contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining
6
+ a copy of this software and associated documentation files (the
7
+ "Software"), to deal in the Software without restriction, including
8
+ without limitation the rights to use, copy, modify, merge, publish,
9
+ distribute, sublicense, and/or sell copies of the Software, and to
10
+ permit persons to whom the Software is furnished to do so, subject to
11
+ the following conditions:
12
+
13
+ The above copyright notice and this permission notice shall be
14
+ included in all copies or substantial portions of the Software.
15
+
16
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
File without changes
@@ -0,0 +1,60 @@
1
+ # ngtcp2
2
+
3
+ # Copyright (c) 2016 ngtcp2 contributors
4
+
5
+ # Permission is hereby granted, free of charge, to any person obtaining
6
+ # a copy of this software and associated documentation files (the
7
+ # "Software"), to deal in the Software without restriction, including
8
+ # without limitation the rights to use, copy, modify, merge, publish,
9
+ # distribute, sublicense, and/or sell copies of the Software, and to
10
+ # permit persons to whom the Software is furnished to do so, subject to
11
+ # the following conditions:
12
+
13
+ # The above copyright notice and this permission notice shall be
14
+ # included in all copies or substantial portions of the Software.
15
+
16
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
18
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
19
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
20
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
21
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
22
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
23
+ SUBDIRS = lib tests doc
24
+
25
+ if HAVE_CRYPTO
26
+ SUBDIRS += crypto
27
+ endif
28
+
29
+ if ENABLE_EXAMPLES
30
+ SUBDIRS += third-party examples
31
+ endif
32
+
33
+ dist_doc_DATA = README.rst
34
+
35
+ ACLOCAL_AMFLAGS = -I m4
36
+
37
+ EXTRA_DIST = \
38
+ cmakeconfig.h.in \
39
+ CMakeLists.txt \
40
+ CMakeOptions.txt \
41
+ cmake/ExtractValidFlags.cmake \
42
+ cmake/FindCUnit.cmake \
43
+ cmake/FindLibev.cmake \
44
+ cmake/FindLibnghttp3.cmake \
45
+ cmake/Findwolfssl.cmake \
46
+ cmake/Version.cmake
47
+
48
+ # Format source files using clang-format. Don't format source files
49
+ # under third-party directory since we are not responsible for thier
50
+ # coding style.
51
+ clang-format:
52
+ CLANGFORMAT=`git config --get clangformat.binary`; \
53
+ test -z $${CLANGFORMAT} && CLANGFORMAT="clang-format"; \
54
+ $${CLANGFORMAT} -i lib/*.{c,h} tests/*.{c,h} lib/includes/ngtcp2/*.h \
55
+ crypto/*.{c,h} \
56
+ crypto/openssl/*.c crypto/gnutls/*.c crypto/boringssl/*.c \
57
+ crypto/wolfssl/*.c \
58
+ crypto/includes/ngtcp2/*.h \
59
+ examples/*.{cc,c,h} \
60
+ fuzz/*.cc
data/ext/ngtcp2/NEWS ADDED
File without changes
data/ext/ngtcp2/README ADDED
@@ -0,0 +1 @@
1
+ See README.rst