protocol-quic 0.0.0 → 0.0.1

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 (348) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/ext/rakefile.rb +12 -0
  4. data/ext/ruby-protocol-quic-lock.yml +67 -0
  5. data/ext/teapot.rb +49 -0
  6. data/lib/protocol/quic/version.rb +4 -2
  7. data/lib/protocol/quic.rb +5 -5
  8. data/license.md +1 -1
  9. data/readme.md +55 -0
  10. data/releases.md +3 -0
  11. data.tar.gz.sig +0 -0
  12. metadata +32 -350
  13. metadata.gz.sig +0 -0
  14. data/ext/ngtcp2/AUTHORS +0 -44
  15. data/ext/ngtcp2/CMakeLists.txt +0 -431
  16. data/ext/ngtcp2/CMakeOptions.txt +0 -17
  17. data/ext/ngtcp2/COPYING +0 -22
  18. data/ext/ngtcp2/ChangeLog +0 -0
  19. data/ext/ngtcp2/Makefile.am +0 -60
  20. data/ext/ngtcp2/NEWS +0 -0
  21. data/ext/ngtcp2/README +0 -1
  22. data/ext/ngtcp2/README.rst +0 -258
  23. data/ext/ngtcp2/ci/build_boringssl.sh +0 -10
  24. data/ext/ngtcp2/ci/build_nghttp3.sh +0 -9
  25. data/ext/ngtcp2/ci/build_openssl1.sh +0 -8
  26. data/ext/ngtcp2/ci/build_openssl1_cross.sh +0 -9
  27. data/ext/ngtcp2/ci/build_openssl3.sh +0 -8
  28. data/ext/ngtcp2/ci/build_picotls.sh +0 -26
  29. data/ext/ngtcp2/ci/build_wolfssl.sh +0 -9
  30. data/ext/ngtcp2/ci/gen-certificate.sh +0 -8
  31. data/ext/ngtcp2/cmake/ExtractValidFlags.cmake +0 -31
  32. data/ext/ngtcp2/cmake/FindCUnit.cmake +0 -40
  33. data/ext/ngtcp2/cmake/FindJemalloc.cmake +0 -40
  34. data/ext/ngtcp2/cmake/FindLibev.cmake +0 -38
  35. data/ext/ngtcp2/cmake/FindLibnghttp3.cmake +0 -41
  36. data/ext/ngtcp2/cmake/Findwolfssl.cmake +0 -41
  37. data/ext/ngtcp2/cmake/Version.cmake +0 -11
  38. data/ext/ngtcp2/cmakeconfig.h.in +0 -36
  39. data/ext/ngtcp2/configure.ac +0 -755
  40. data/ext/ngtcp2/crypto/CMakeLists.txt +0 -56
  41. data/ext/ngtcp2/crypto/Makefile.am +0 -49
  42. data/ext/ngtcp2/crypto/boringssl/CMakeLists.txt +0 -64
  43. data/ext/ngtcp2/crypto/boringssl/Makefile.am +0 -39
  44. data/ext/ngtcp2/crypto/boringssl/boringssl.c +0 -630
  45. data/ext/ngtcp2/crypto/boringssl/libngtcp2_crypto_boringssl.pc.in +0 -33
  46. data/ext/ngtcp2/crypto/gnutls/CMakeLists.txt +0 -86
  47. data/ext/ngtcp2/crypto/gnutls/Makefile.am +0 -43
  48. data/ext/ngtcp2/crypto/gnutls/gnutls.c +0 -644
  49. data/ext/ngtcp2/crypto/gnutls/libngtcp2_crypto_gnutls.pc.in +0 -33
  50. data/ext/ngtcp2/crypto/includes/CMakeLists.txt +0 -56
  51. data/ext/ngtcp2/crypto/includes/Makefile.am +0 -45
  52. data/ext/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto.h +0 -893
  53. data/ext/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto_boringssl.h +0 -104
  54. data/ext/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto_gnutls.h +0 -107
  55. data/ext/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto_openssl.h +0 -132
  56. data/ext/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto_picotls.h +0 -246
  57. data/ext/ngtcp2/crypto/includes/ngtcp2/ngtcp2_crypto_wolfssl.h +0 -106
  58. data/ext/ngtcp2/crypto/openssl/CMakeLists.txt +0 -86
  59. data/ext/ngtcp2/crypto/openssl/Makefile.am +0 -43
  60. data/ext/ngtcp2/crypto/openssl/libngtcp2_crypto_openssl.pc.in +0 -33
  61. data/ext/ngtcp2/crypto/openssl/openssl.c +0 -807
  62. data/ext/ngtcp2/crypto/picotls/CMakeLists.txt +0 -65
  63. data/ext/ngtcp2/crypto/picotls/Makefile.am +0 -39
  64. data/ext/ngtcp2/crypto/picotls/libngtcp2_crypto_picotls.pc.in +0 -33
  65. data/ext/ngtcp2/crypto/picotls/picotls.c +0 -707
  66. data/ext/ngtcp2/crypto/shared.c +0 -1431
  67. data/ext/ngtcp2/crypto/shared.h +0 -350
  68. data/ext/ngtcp2/crypto/wolfssl/CMakeLists.txt +0 -84
  69. data/ext/ngtcp2/crypto/wolfssl/Makefile.am +0 -43
  70. data/ext/ngtcp2/crypto/wolfssl/libngtcp2_crypto_wolfssl.pc.in +0 -33
  71. data/ext/ngtcp2/crypto/wolfssl/wolfssl.c +0 -534
  72. data/ext/ngtcp2/doc/Makefile.am +0 -65
  73. data/ext/ngtcp2/doc/make.bat +0 -35
  74. data/ext/ngtcp2/doc/mkapiref.py +0 -356
  75. data/ext/ngtcp2/doc/source/conf.py.in +0 -94
  76. data/ext/ngtcp2/doc/source/index.rst +0 -22
  77. data/ext/ngtcp2/doc/source/programmers-guide.rst +0 -476
  78. data/ext/ngtcp2/docker/Dockerfile +0 -39
  79. data/ext/ngtcp2/examples/CMakeLists.txt +0 -361
  80. data/ext/ngtcp2/examples/Makefile.am +0 -228
  81. data/ext/ngtcp2/examples/client.cc +0 -3049
  82. data/ext/ngtcp2/examples/client.h +0 -192
  83. data/ext/ngtcp2/examples/client_base.cc +0 -202
  84. data/ext/ngtcp2/examples/client_base.h +0 -213
  85. data/ext/ngtcp2/examples/debug.cc +0 -298
  86. data/ext/ngtcp2/examples/debug.h +0 -124
  87. data/ext/ngtcp2/examples/examplestest.cc +0 -84
  88. data/ext/ngtcp2/examples/gtlssimpleclient.c +0 -720
  89. data/ext/ngtcp2/examples/h09client.cc +0 -2601
  90. data/ext/ngtcp2/examples/h09client.h +0 -196
  91. data/ext/ngtcp2/examples/h09server.cc +0 -3024
  92. data/ext/ngtcp2/examples/h09server.h +0 -237
  93. data/ext/ngtcp2/examples/http.cc +0 -138
  94. data/ext/ngtcp2/examples/http.h +0 -44
  95. data/ext/ngtcp2/examples/network.h +0 -80
  96. data/ext/ngtcp2/examples/server.cc +0 -3731
  97. data/ext/ngtcp2/examples/server.h +0 -256
  98. data/ext/ngtcp2/examples/server_base.cc +0 -58
  99. data/ext/ngtcp2/examples/server_base.h +0 -195
  100. data/ext/ngtcp2/examples/shared.cc +0 -385
  101. data/ext/ngtcp2/examples/shared.h +0 -96
  102. data/ext/ngtcp2/examples/simpleclient.c +0 -683
  103. data/ext/ngtcp2/examples/template.h +0 -71
  104. data/ext/ngtcp2/examples/tests/README.rst +0 -60
  105. data/ext/ngtcp2/examples/tests/__init__.py +0 -0
  106. data/ext/ngtcp2/examples/tests/config.ini.in +0 -32
  107. data/ext/ngtcp2/examples/tests/conftest.py +0 -28
  108. data/ext/ngtcp2/examples/tests/ngtcp2test/__init__.py +0 -6
  109. data/ext/ngtcp2/examples/tests/ngtcp2test/certs.py +0 -476
  110. data/ext/ngtcp2/examples/tests/ngtcp2test/client.py +0 -187
  111. data/ext/ngtcp2/examples/tests/ngtcp2test/env.py +0 -191
  112. data/ext/ngtcp2/examples/tests/ngtcp2test/log.py +0 -101
  113. data/ext/ngtcp2/examples/tests/ngtcp2test/server.py +0 -137
  114. data/ext/ngtcp2/examples/tests/ngtcp2test/tls.py +0 -983
  115. data/ext/ngtcp2/examples/tests/test_01_handshake.py +0 -30
  116. data/ext/ngtcp2/examples/tests/test_02_resume.py +0 -46
  117. data/ext/ngtcp2/examples/tests/test_03_earlydata.py +0 -56
  118. data/ext/ngtcp2/examples/tests/test_04_clientcert.py +0 -57
  119. data/ext/ngtcp2/examples/tests/test_05_ciphers.py +0 -46
  120. data/ext/ngtcp2/examples/tls_client_context.h +0 -52
  121. data/ext/ngtcp2/examples/tls_client_context_boringssl.cc +0 -126
  122. data/ext/ngtcp2/examples/tls_client_context_boringssl.h +0 -49
  123. data/ext/ngtcp2/examples/tls_client_context_gnutls.cc +0 -74
  124. data/ext/ngtcp2/examples/tls_client_context_gnutls.h +0 -50
  125. data/ext/ngtcp2/examples/tls_client_context_openssl.cc +0 -137
  126. data/ext/ngtcp2/examples/tls_client_context_openssl.h +0 -49
  127. data/ext/ngtcp2/examples/tls_client_context_picotls.cc +0 -158
  128. data/ext/ngtcp2/examples/tls_client_context_picotls.h +0 -53
  129. data/ext/ngtcp2/examples/tls_client_context_wolfssl.cc +0 -177
  130. data/ext/ngtcp2/examples/tls_client_context_wolfssl.h +0 -51
  131. data/ext/ngtcp2/examples/tls_client_session.h +0 -52
  132. data/ext/ngtcp2/examples/tls_client_session_boringssl.cc +0 -110
  133. data/ext/ngtcp2/examples/tls_client_session_boringssl.h +0 -52
  134. data/ext/ngtcp2/examples/tls_client_session_gnutls.cc +0 -190
  135. data/ext/ngtcp2/examples/tls_client_session_gnutls.h +0 -52
  136. data/ext/ngtcp2/examples/tls_client_session_openssl.cc +0 -113
  137. data/ext/ngtcp2/examples/tls_client_session_openssl.h +0 -52
  138. data/ext/ngtcp2/examples/tls_client_session_picotls.cc +0 -147
  139. data/ext/ngtcp2/examples/tls_client_session_picotls.h +0 -52
  140. data/ext/ngtcp2/examples/tls_client_session_wolfssl.cc +0 -160
  141. data/ext/ngtcp2/examples/tls_client_session_wolfssl.h +0 -52
  142. data/ext/ngtcp2/examples/tls_server_context.h +0 -52
  143. data/ext/ngtcp2/examples/tls_server_context_boringssl.cc +0 -257
  144. data/ext/ngtcp2/examples/tls_server_context_boringssl.h +0 -54
  145. data/ext/ngtcp2/examples/tls_server_context_gnutls.cc +0 -99
  146. data/ext/ngtcp2/examples/tls_server_context_gnutls.h +0 -59
  147. data/ext/ngtcp2/examples/tls_server_context_openssl.cc +0 -338
  148. data/ext/ngtcp2/examples/tls_server_context_openssl.h +0 -54
  149. data/ext/ngtcp2/examples/tls_server_context_picotls.cc +0 -321
  150. data/ext/ngtcp2/examples/tls_server_context_picotls.h +0 -58
  151. data/ext/ngtcp2/examples/tls_server_context_wolfssl.cc +0 -284
  152. data/ext/ngtcp2/examples/tls_server_context_wolfssl.h +0 -55
  153. data/ext/ngtcp2/examples/tls_server_session.h +0 -52
  154. data/ext/ngtcp2/examples/tls_server_session_boringssl.cc +0 -84
  155. data/ext/ngtcp2/examples/tls_server_session_boringssl.h +0 -47
  156. data/ext/ngtcp2/examples/tls_server_session_gnutls.cc +0 -155
  157. data/ext/ngtcp2/examples/tls_server_session_gnutls.h +0 -46
  158. data/ext/ngtcp2/examples/tls_server_session_openssl.cc +0 -54
  159. data/ext/ngtcp2/examples/tls_server_session_openssl.h +0 -47
  160. data/ext/ngtcp2/examples/tls_server_session_picotls.cc +0 -70
  161. data/ext/ngtcp2/examples/tls_server_session_picotls.h +0 -47
  162. data/ext/ngtcp2/examples/tls_server_session_wolfssl.cc +0 -55
  163. data/ext/ngtcp2/examples/tls_server_session_wolfssl.h +0 -47
  164. data/ext/ngtcp2/examples/tls_session_base_gnutls.cc +0 -87
  165. data/ext/ngtcp2/examples/tls_session_base_gnutls.h +0 -51
  166. data/ext/ngtcp2/examples/tls_session_base_openssl.cc +0 -54
  167. data/ext/ngtcp2/examples/tls_session_base_openssl.h +0 -52
  168. data/ext/ngtcp2/examples/tls_session_base_picotls.cc +0 -56
  169. data/ext/ngtcp2/examples/tls_session_base_picotls.h +0 -54
  170. data/ext/ngtcp2/examples/tls_session_base_wolfssl.cc +0 -54
  171. data/ext/ngtcp2/examples/tls_session_base_wolfssl.h +0 -54
  172. data/ext/ngtcp2/examples/tls_shared_picotls.cc +0 -59
  173. data/ext/ngtcp2/examples/tls_shared_picotls.h +0 -36
  174. data/ext/ngtcp2/examples/util.cc +0 -646
  175. data/ext/ngtcp2/examples/util.h +0 -361
  176. data/ext/ngtcp2/examples/util_gnutls.cc +0 -136
  177. data/ext/ngtcp2/examples/util_openssl.cc +0 -131
  178. data/ext/ngtcp2/examples/util_test.cc +0 -237
  179. data/ext/ngtcp2/examples/util_test.h +0 -45
  180. data/ext/ngtcp2/examples/util_wolfssl.cc +0 -130
  181. data/ext/ngtcp2/fuzz/corpus/decode_frame/ack +0 -0
  182. data/ext/ngtcp2/fuzz/corpus/decode_frame/ack_ecn +0 -0
  183. data/ext/ngtcp2/fuzz/corpus/decode_frame/connection_close +0 -0
  184. data/ext/ngtcp2/fuzz/corpus/decode_frame/crypto +0 -1
  185. data/ext/ngtcp2/fuzz/corpus/decode_frame/data_blocked +0 -1
  186. data/ext/ngtcp2/fuzz/corpus/decode_frame/datagram +0 -1
  187. data/ext/ngtcp2/fuzz/corpus/decode_frame/datagram_len +0 -1
  188. data/ext/ngtcp2/fuzz/corpus/decode_frame/max_data +0 -1
  189. data/ext/ngtcp2/fuzz/corpus/decode_frame/max_stream_data +0 -0
  190. data/ext/ngtcp2/fuzz/corpus/decode_frame/max_streams +0 -0
  191. data/ext/ngtcp2/fuzz/corpus/decode_frame/new_connection_id +0 -1
  192. data/ext/ngtcp2/fuzz/corpus/decode_frame/new_token +0 -1
  193. data/ext/ngtcp2/fuzz/corpus/decode_frame/path_challenge +0 -1
  194. data/ext/ngtcp2/fuzz/corpus/decode_frame/path_response +0 -1
  195. data/ext/ngtcp2/fuzz/corpus/decode_frame/reset_stream +0 -0
  196. data/ext/ngtcp2/fuzz/corpus/decode_frame/retire_connection_id +0 -1
  197. data/ext/ngtcp2/fuzz/corpus/decode_frame/stop_sending +0 -0
  198. data/ext/ngtcp2/fuzz/corpus/decode_frame/stream +0 -0
  199. data/ext/ngtcp2/fuzz/corpus/decode_frame/stream_data_blocked +0 -0
  200. data/ext/ngtcp2/fuzz/corpus/decode_frame/stream_len +0 -0
  201. data/ext/ngtcp2/fuzz/corpus/decode_frame/streams_blocked +0 -0
  202. data/ext/ngtcp2/fuzz/corpus/ksl/random +0 -0
  203. data/ext/ngtcp2/fuzz/decode_frame.cc +0 -25
  204. data/ext/ngtcp2/fuzz/ksl.cc +0 -77
  205. data/ext/ngtcp2/interop/Dockerfile +0 -39
  206. data/ext/ngtcp2/interop/run_endpoint.sh +0 -93
  207. data/ext/ngtcp2/lib/CMakeLists.txt +0 -110
  208. data/ext/ngtcp2/lib/Makefile.am +0 -122
  209. data/ext/ngtcp2/lib/includes/CMakeLists.txt +0 -4
  210. data/ext/ngtcp2/lib/includes/Makefile.am +0 -25
  211. data/ext/ngtcp2/lib/includes/ngtcp2/ngtcp2.h +0 -5843
  212. data/ext/ngtcp2/lib/includes/ngtcp2/version.h.in +0 -51
  213. data/ext/ngtcp2/lib/libngtcp2.pc.in +0 -33
  214. data/ext/ngtcp2/lib/ngtcp2_acktr.c +0 -335
  215. data/ext/ngtcp2/lib/ngtcp2_acktr.h +0 -221
  216. data/ext/ngtcp2/lib/ngtcp2_addr.c +0 -117
  217. data/ext/ngtcp2/lib/ngtcp2_addr.h +0 -69
  218. data/ext/ngtcp2/lib/ngtcp2_balloc.c +0 -90
  219. data/ext/ngtcp2/lib/ngtcp2_balloc.h +0 -91
  220. data/ext/ngtcp2/lib/ngtcp2_bbr.c +0 -693
  221. data/ext/ngtcp2/lib/ngtcp2_bbr.h +0 -157
  222. data/ext/ngtcp2/lib/ngtcp2_bbr2.c +0 -1490
  223. data/ext/ngtcp2/lib/ngtcp2_bbr2.h +0 -149
  224. data/ext/ngtcp2/lib/ngtcp2_buf.c +0 -56
  225. data/ext/ngtcp2/lib/ngtcp2_buf.h +0 -108
  226. data/ext/ngtcp2/lib/ngtcp2_cc.c +0 -616
  227. data/ext/ngtcp2/lib/ngtcp2_cc.h +0 -422
  228. data/ext/ngtcp2/lib/ngtcp2_cid.c +0 -147
  229. data/ext/ngtcp2/lib/ngtcp2_cid.h +0 -175
  230. data/ext/ngtcp2/lib/ngtcp2_conn.c +0 -13731
  231. data/ext/ngtcp2/lib/ngtcp2_conn.h +0 -1119
  232. data/ext/ngtcp2/lib/ngtcp2_conn_stat.h +0 -131
  233. data/ext/ngtcp2/lib/ngtcp2_conv.c +0 -291
  234. data/ext/ngtcp2/lib/ngtcp2_conv.h +0 -208
  235. data/ext/ngtcp2/lib/ngtcp2_crypto.c +0 -895
  236. data/ext/ngtcp2/lib/ngtcp2_crypto.h +0 -148
  237. data/ext/ngtcp2/lib/ngtcp2_err.c +0 -154
  238. data/ext/ngtcp2/lib/ngtcp2_err.h +0 -34
  239. data/ext/ngtcp2/lib/ngtcp2_gaptr.c +0 -167
  240. data/ext/ngtcp2/lib/ngtcp2_gaptr.h +0 -98
  241. data/ext/ngtcp2/lib/ngtcp2_idtr.c +0 -79
  242. data/ext/ngtcp2/lib/ngtcp2_idtr.h +0 -89
  243. data/ext/ngtcp2/lib/ngtcp2_ksl.c +0 -819
  244. data/ext/ngtcp2/lib/ngtcp2_ksl.h +0 -345
  245. data/ext/ngtcp2/lib/ngtcp2_log.c +0 -822
  246. data/ext/ngtcp2/lib/ngtcp2_log.h +0 -123
  247. data/ext/ngtcp2/lib/ngtcp2_macro.h +0 -58
  248. data/ext/ngtcp2/lib/ngtcp2_map.c +0 -336
  249. data/ext/ngtcp2/lib/ngtcp2_map.h +0 -136
  250. data/ext/ngtcp2/lib/ngtcp2_mem.c +0 -113
  251. data/ext/ngtcp2/lib/ngtcp2_mem.h +0 -72
  252. data/ext/ngtcp2/lib/ngtcp2_net.h +0 -136
  253. data/ext/ngtcp2/lib/ngtcp2_objalloc.c +0 -40
  254. data/ext/ngtcp2/lib/ngtcp2_objalloc.h +0 -140
  255. data/ext/ngtcp2/lib/ngtcp2_opl.c +0 -46
  256. data/ext/ngtcp2/lib/ngtcp2_opl.h +0 -65
  257. data/ext/ngtcp2/lib/ngtcp2_path.c +0 -77
  258. data/ext/ngtcp2/lib/ngtcp2_path.h +0 -49
  259. data/ext/ngtcp2/lib/ngtcp2_pkt.c +0 -2527
  260. data/ext/ngtcp2/lib/ngtcp2_pkt.h +0 -1235
  261. data/ext/ngtcp2/lib/ngtcp2_pmtud.c +0 -160
  262. data/ext/ngtcp2/lib/ngtcp2_pmtud.h +0 -123
  263. data/ext/ngtcp2/lib/ngtcp2_ppe.c +0 -230
  264. data/ext/ngtcp2/lib/ngtcp2_ppe.h +0 -153
  265. data/ext/ngtcp2/lib/ngtcp2_pq.c +0 -164
  266. data/ext/ngtcp2/lib/ngtcp2_pq.h +0 -126
  267. data/ext/ngtcp2/lib/ngtcp2_pv.c +0 -172
  268. data/ext/ngtcp2/lib/ngtcp2_pv.h +0 -194
  269. data/ext/ngtcp2/lib/ngtcp2_qlog.c +0 -1219
  270. data/ext/ngtcp2/lib/ngtcp2_qlog.h +0 -161
  271. data/ext/ngtcp2/lib/ngtcp2_range.c +0 -61
  272. data/ext/ngtcp2/lib/ngtcp2_range.h +0 -80
  273. data/ext/ngtcp2/lib/ngtcp2_rcvry.h +0 -40
  274. data/ext/ngtcp2/lib/ngtcp2_ringbuf.c +0 -121
  275. data/ext/ngtcp2/lib/ngtcp2_ringbuf.h +0 -132
  276. data/ext/ngtcp2/lib/ngtcp2_rob.c +0 -319
  277. data/ext/ngtcp2/lib/ngtcp2_rob.h +0 -197
  278. data/ext/ngtcp2/lib/ngtcp2_rst.c +0 -138
  279. data/ext/ngtcp2/lib/ngtcp2_rst.h +0 -86
  280. data/ext/ngtcp2/lib/ngtcp2_rtb.c +0 -1676
  281. data/ext/ngtcp2/lib/ngtcp2_rtb.h +0 -468
  282. data/ext/ngtcp2/lib/ngtcp2_str.c +0 -233
  283. data/ext/ngtcp2/lib/ngtcp2_str.h +0 -94
  284. data/ext/ngtcp2/lib/ngtcp2_strm.c +0 -698
  285. data/ext/ngtcp2/lib/ngtcp2_strm.h +0 -310
  286. data/ext/ngtcp2/lib/ngtcp2_unreachable.c +0 -71
  287. data/ext/ngtcp2/lib/ngtcp2_unreachable.h +0 -46
  288. data/ext/ngtcp2/lib/ngtcp2_vec.c +0 -243
  289. data/ext/ngtcp2/lib/ngtcp2_vec.h +0 -120
  290. data/ext/ngtcp2/lib/ngtcp2_version.c +0 -39
  291. data/ext/ngtcp2/lib/ngtcp2_window_filter.c +0 -99
  292. data/ext/ngtcp2/lib/ngtcp2_window_filter.h +0 -65
  293. data/ext/ngtcp2/m4/ax_check_compile_flag.m4 +0 -74
  294. data/ext/ngtcp2/m4/ax_cxx_compile_stdcxx.m4 +0 -1009
  295. data/ext/ngtcp2/tests/CMakeLists.txt +0 -68
  296. data/ext/ngtcp2/tests/Makefile.am +0 -94
  297. data/ext/ngtcp2/tests/main.c +0 -358
  298. data/ext/ngtcp2/tests/ngtcp2_acktr_test.c +0 -367
  299. data/ext/ngtcp2/tests/ngtcp2_acktr_test.h +0 -37
  300. data/ext/ngtcp2/tests/ngtcp2_conn_test.c +0 -9821
  301. data/ext/ngtcp2/tests/ngtcp2_conn_test.h +0 -104
  302. data/ext/ngtcp2/tests/ngtcp2_conv_test.c +0 -430
  303. data/ext/ngtcp2/tests/ngtcp2_conv_test.h +0 -46
  304. data/ext/ngtcp2/tests/ngtcp2_crypto_test.c +0 -667
  305. data/ext/ngtcp2/tests/ngtcp2_crypto_test.h +0 -35
  306. data/ext/ngtcp2/tests/ngtcp2_gaptr_test.c +0 -127
  307. data/ext/ngtcp2/tests/ngtcp2_gaptr_test.h +0 -36
  308. data/ext/ngtcp2/tests/ngtcp2_idtr_test.c +0 -79
  309. data/ext/ngtcp2/tests/ngtcp2_idtr_test.h +0 -34
  310. data/ext/ngtcp2/tests/ngtcp2_ksl_test.c +0 -502
  311. data/ext/ngtcp2/tests/ngtcp2_ksl_test.h +0 -39
  312. data/ext/ngtcp2/tests/ngtcp2_map_test.c +0 -206
  313. data/ext/ngtcp2/tests/ngtcp2_map_test.h +0 -38
  314. data/ext/ngtcp2/tests/ngtcp2_pkt_test.c +0 -1645
  315. data/ext/ngtcp2/tests/ngtcp2_pkt_test.h +0 -68
  316. data/ext/ngtcp2/tests/ngtcp2_pmtud_test.c +0 -153
  317. data/ext/ngtcp2/tests/ngtcp2_pmtud_test.h +0 -34
  318. data/ext/ngtcp2/tests/ngtcp2_pv_test.c +0 -129
  319. data/ext/ngtcp2/tests/ngtcp2_pv_test.h +0 -35
  320. data/ext/ngtcp2/tests/ngtcp2_range_test.c +0 -105
  321. data/ext/ngtcp2/tests/ngtcp2_range_test.h +0 -36
  322. data/ext/ngtcp2/tests/ngtcp2_ringbuf_test.c +0 -91
  323. data/ext/ngtcp2/tests/ngtcp2_ringbuf_test.h +0 -35
  324. data/ext/ngtcp2/tests/ngtcp2_rob_test.c +0 -552
  325. data/ext/ngtcp2/tests/ngtcp2_rob_test.h +0 -37
  326. data/ext/ngtcp2/tests/ngtcp2_rtb_test.c +0 -470
  327. data/ext/ngtcp2/tests/ngtcp2_rtb_test.h +0 -38
  328. data/ext/ngtcp2/tests/ngtcp2_str_test.c +0 -96
  329. data/ext/ngtcp2/tests/ngtcp2_str_test.h +0 -36
  330. data/ext/ngtcp2/tests/ngtcp2_strm_test.c +0 -575
  331. data/ext/ngtcp2/tests/ngtcp2_strm_test.h +0 -36
  332. data/ext/ngtcp2/tests/ngtcp2_test_helper.c +0 -404
  333. data/ext/ngtcp2/tests/ngtcp2_test_helper.h +0 -191
  334. data/ext/ngtcp2/tests/ngtcp2_vec_test.c +0 -426
  335. data/ext/ngtcp2/tests/ngtcp2_vec_test.h +0 -36
  336. data/ext/ngtcp2/third-party/CMakeLists.txt +0 -34
  337. data/ext/ngtcp2/third-party/Makefile.am +0 -31
  338. data/ext/ngtcp2/third-party/http-parser/AUTHORS +0 -68
  339. data/ext/ngtcp2/third-party/http-parser/LICENSE-MIT +0 -23
  340. data/ext/ngtcp2/third-party/http-parser/Makefile +0 -157
  341. data/ext/ngtcp2/third-party/http-parser/README.md +0 -246
  342. data/ext/ngtcp2/third-party/http-parser/bench.c +0 -111
  343. data/ext/ngtcp2/third-party/http-parser/contrib/parsertrace.c +0 -160
  344. data/ext/ngtcp2/third-party/http-parser/contrib/url_parser.c +0 -47
  345. data/ext/ngtcp2/third-party/http-parser/http_parser.c +0 -2419
  346. data/ext/ngtcp2/third-party/http-parser/http_parser.gyp +0 -111
  347. data/ext/ngtcp2/third-party/http-parser/http_parser.h +0 -431
  348. data/ext/ngtcp2/third-party/http-parser/test.c +0 -4411
@@ -1,51 +0,0 @@
1
- /*
2
- * ngtcp2
3
- *
4
- * Copyright (c) 2016 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 VERSION_H
26
- #define VERSION_H
27
-
28
- /**
29
- * @macrosection
30
- *
31
- * Library version macros
32
- */
33
-
34
- /**
35
- * @macro
36
- *
37
- * Version number of the ngtcp2 library release.
38
- */
39
- #define NGTCP2_VERSION "@PACKAGE_VERSION@"
40
-
41
- /**
42
- * @macro
43
- *
44
- * Numerical representation of the version number of the ngtcp2
45
- * library release. This is a 24 bit number with 8 bits for major
46
- * number, 8 bits for minor and 8 bits for patch. Version 1.2.3
47
- * becomes 0x010203.
48
- */
49
- #define NGTCP2_VERSION_NUM @PACKAGE_VERSION_NUM@
50
-
51
- #endif /* VERSION_H */
@@ -1,33 +0,0 @@
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
- prefix=@prefix@
24
- exec_prefix=@exec_prefix@
25
- libdir=@libdir@
26
- includedir=@includedir@
27
-
28
- Name: libngtcp2
29
- Description: ngtcp2 library
30
- URL: https://github.com/ngtcp2/ngtcp2
31
- Version: @VERSION@
32
- Libs: -L${libdir} -lngtcp2
33
- Cflags: -I${includedir}
@@ -1,335 +0,0 @@
1
- /*
2
- * ngtcp2
3
- *
4
- * Copyright (c) 2017 ngtcp2 contributors
5
- *
6
- * Permission is hereby granted, free of charge, to any person obtaining
7
- * a copy of this software and associated documentation files (the
8
- * "Software"), to deal in the Software without restriction, including
9
- * without limitation the rights to use, copy, modify, merge, publish,
10
- * distribute, sublicense, and/or sell copies of the Software, and to
11
- * permit persons to whom the Software is furnished to do so, subject to
12
- * the following conditions:
13
- *
14
- * The above copyright notice and this permission notice shall be
15
- * included in all copies or substantial portions of the Software.
16
- *
17
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
21
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
22
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
23
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24
- */
25
- #include "ngtcp2_acktr.h"
26
-
27
- #include <assert.h>
28
-
29
- #include "ngtcp2_macro.h"
30
-
31
- static void acktr_entry_init(ngtcp2_acktr_entry *ent, int64_t pkt_num,
32
- ngtcp2_tstamp tstamp) {
33
- ent->pkt_num = pkt_num;
34
- ent->len = 1;
35
- ent->tstamp = tstamp;
36
- }
37
-
38
- int ngtcp2_acktr_entry_objalloc_new(ngtcp2_acktr_entry **ent, int64_t pkt_num,
39
- ngtcp2_tstamp tstamp,
40
- ngtcp2_objalloc *objalloc) {
41
- *ent = ngtcp2_objalloc_acktr_entry_get(objalloc);
42
- if (*ent == NULL) {
43
- return NGTCP2_ERR_NOMEM;
44
- }
45
-
46
- acktr_entry_init(*ent, pkt_num, tstamp);
47
-
48
- return 0;
49
- }
50
-
51
- void ngtcp2_acktr_entry_objalloc_del(ngtcp2_acktr_entry *ent,
52
- ngtcp2_objalloc *objalloc) {
53
- ngtcp2_objalloc_acktr_entry_release(objalloc, ent);
54
- }
55
-
56
- static int greater(const ngtcp2_ksl_key *lhs, const ngtcp2_ksl_key *rhs) {
57
- return *(int64_t *)lhs > *(int64_t *)rhs;
58
- }
59
-
60
- int ngtcp2_acktr_init(ngtcp2_acktr *acktr, ngtcp2_log *log,
61
- const ngtcp2_mem *mem) {
62
- int rv;
63
-
64
- ngtcp2_objalloc_acktr_entry_init(&acktr->objalloc, 32, mem);
65
-
66
- rv = ngtcp2_ringbuf_init(&acktr->acks, 32, sizeof(ngtcp2_acktr_ack_entry),
67
- mem);
68
- if (rv != 0) {
69
- return rv;
70
- }
71
-
72
- ngtcp2_ksl_init(&acktr->ents, greater, sizeof(int64_t), mem);
73
-
74
- acktr->log = log;
75
- acktr->mem = mem;
76
- acktr->flags = NGTCP2_ACKTR_FLAG_NONE;
77
- acktr->first_unacked_ts = UINT64_MAX;
78
- acktr->rx_npkt = 0;
79
-
80
- return 0;
81
- }
82
-
83
- void ngtcp2_acktr_free(ngtcp2_acktr *acktr) {
84
- #ifdef NOMEMPOOL
85
- ngtcp2_ksl_it it;
86
- #endif /* NOMEMPOOL */
87
-
88
- if (acktr == NULL) {
89
- return;
90
- }
91
-
92
- #ifdef NOMEMPOOL
93
- for (it = ngtcp2_ksl_begin(&acktr->ents); !ngtcp2_ksl_it_end(&it);
94
- ngtcp2_ksl_it_next(&it)) {
95
- ngtcp2_acktr_entry_objalloc_del(ngtcp2_ksl_it_get(&it), &acktr->objalloc);
96
- }
97
- #endif /* NOMEMPOOL */
98
-
99
- ngtcp2_ksl_free(&acktr->ents);
100
-
101
- ngtcp2_ringbuf_free(&acktr->acks);
102
-
103
- ngtcp2_objalloc_free(&acktr->objalloc);
104
- }
105
-
106
- int ngtcp2_acktr_add(ngtcp2_acktr *acktr, int64_t pkt_num, int active_ack,
107
- ngtcp2_tstamp ts) {
108
- ngtcp2_ksl_it it, prev_it;
109
- ngtcp2_acktr_entry *ent, *prev_ent, *delent;
110
- int rv;
111
- int added = 0;
112
-
113
- if (ngtcp2_ksl_len(&acktr->ents)) {
114
- it = ngtcp2_ksl_lower_bound(&acktr->ents, &pkt_num);
115
- if (ngtcp2_ksl_it_end(&it)) {
116
- ngtcp2_ksl_it_prev(&it);
117
- ent = ngtcp2_ksl_it_get(&it);
118
-
119
- assert(ent->pkt_num >= pkt_num + (int64_t)ent->len);
120
-
121
- if (ent->pkt_num == pkt_num + (int64_t)ent->len) {
122
- ++ent->len;
123
- added = 1;
124
- }
125
- } else {
126
- ent = ngtcp2_ksl_it_get(&it);
127
-
128
- assert(ent->pkt_num != pkt_num);
129
-
130
- if (ngtcp2_ksl_it_begin(&it)) {
131
- if (ent->pkt_num + 1 == pkt_num) {
132
- ngtcp2_ksl_update_key(&acktr->ents, &ent->pkt_num, &pkt_num);
133
- ent->pkt_num = pkt_num;
134
- ent->tstamp = ts;
135
- ++ent->len;
136
- added = 1;
137
- }
138
- } else {
139
- prev_it = it;
140
- ngtcp2_ksl_it_prev(&prev_it);
141
- prev_ent = ngtcp2_ksl_it_get(&prev_it);
142
-
143
- assert(prev_ent->pkt_num >= pkt_num + (int64_t)prev_ent->len);
144
-
145
- if (ent->pkt_num + 1 == pkt_num) {
146
- if (prev_ent->pkt_num == pkt_num + (int64_t)prev_ent->len) {
147
- prev_ent->len += ent->len + 1;
148
- ngtcp2_ksl_remove_hint(&acktr->ents, NULL, &it, &ent->pkt_num);
149
- ngtcp2_acktr_entry_objalloc_del(ent, &acktr->objalloc);
150
- added = 1;
151
- } else {
152
- ngtcp2_ksl_update_key(&acktr->ents, &ent->pkt_num, &pkt_num);
153
- ent->pkt_num = pkt_num;
154
- ent->tstamp = ts;
155
- ++ent->len;
156
- added = 1;
157
- }
158
- } else if (prev_ent->pkt_num == pkt_num + (int64_t)prev_ent->len) {
159
- ++prev_ent->len;
160
- added = 1;
161
- }
162
- }
163
- }
164
- }
165
-
166
- if (!added) {
167
- rv = ngtcp2_acktr_entry_objalloc_new(&ent, pkt_num, ts, &acktr->objalloc);
168
- if (rv != 0) {
169
- return rv;
170
- }
171
- rv = ngtcp2_ksl_insert(&acktr->ents, NULL, &ent->pkt_num, ent);
172
- if (rv != 0) {
173
- ngtcp2_acktr_entry_objalloc_del(ent, &acktr->objalloc);
174
- return rv;
175
- }
176
- }
177
-
178
- if (active_ack) {
179
- acktr->flags |= NGTCP2_ACKTR_FLAG_ACTIVE_ACK;
180
- if (acktr->first_unacked_ts == UINT64_MAX) {
181
- acktr->first_unacked_ts = ts;
182
- }
183
- }
184
-
185
- if (ngtcp2_ksl_len(&acktr->ents) > NGTCP2_ACKTR_MAX_ENT) {
186
- it = ngtcp2_ksl_end(&acktr->ents);
187
- ngtcp2_ksl_it_prev(&it);
188
- delent = ngtcp2_ksl_it_get(&it);
189
- ngtcp2_ksl_remove_hint(&acktr->ents, NULL, &it, &delent->pkt_num);
190
- ngtcp2_acktr_entry_objalloc_del(delent, &acktr->objalloc);
191
- }
192
-
193
- return 0;
194
- }
195
-
196
- void ngtcp2_acktr_forget(ngtcp2_acktr *acktr, ngtcp2_acktr_entry *ent) {
197
- ngtcp2_ksl_it it;
198
-
199
- it = ngtcp2_ksl_lower_bound(&acktr->ents, &ent->pkt_num);
200
- assert(*(int64_t *)ngtcp2_ksl_it_key(&it) == (int64_t)ent->pkt_num);
201
-
202
- for (; !ngtcp2_ksl_it_end(&it);) {
203
- ent = ngtcp2_ksl_it_get(&it);
204
- ngtcp2_ksl_remove_hint(&acktr->ents, &it, &it, &ent->pkt_num);
205
- ngtcp2_acktr_entry_objalloc_del(ent, &acktr->objalloc);
206
- }
207
- }
208
-
209
- ngtcp2_ksl_it ngtcp2_acktr_get(ngtcp2_acktr *acktr) {
210
- return ngtcp2_ksl_begin(&acktr->ents);
211
- }
212
-
213
- int ngtcp2_acktr_empty(ngtcp2_acktr *acktr) {
214
- ngtcp2_ksl_it it = ngtcp2_ksl_begin(&acktr->ents);
215
- return ngtcp2_ksl_it_end(&it);
216
- }
217
-
218
- ngtcp2_acktr_ack_entry *ngtcp2_acktr_add_ack(ngtcp2_acktr *acktr,
219
- int64_t pkt_num,
220
- int64_t largest_ack) {
221
- ngtcp2_acktr_ack_entry *ent = ngtcp2_ringbuf_push_front(&acktr->acks);
222
-
223
- ent->largest_ack = largest_ack;
224
- ent->pkt_num = pkt_num;
225
-
226
- return ent;
227
- }
228
-
229
- /*
230
- * acktr_remove removes |ent| from |acktr|. |it| must point to the
231
- * node whose key identifies |ent|. The iterator which points to the
232
- * entry next to |ent| is assigned to |it|.
233
- */
234
- static void acktr_remove(ngtcp2_acktr *acktr, ngtcp2_ksl_it *it,
235
- ngtcp2_acktr_entry *ent) {
236
- ngtcp2_ksl_remove_hint(&acktr->ents, it, it, &ent->pkt_num);
237
- ngtcp2_acktr_entry_objalloc_del(ent, &acktr->objalloc);
238
- }
239
-
240
- static void acktr_on_ack(ngtcp2_acktr *acktr, ngtcp2_ringbuf *rb,
241
- size_t ack_ent_offset) {
242
- ngtcp2_acktr_ack_entry *ack_ent;
243
- ngtcp2_acktr_entry *ent;
244
- ngtcp2_ksl_it it;
245
-
246
- assert(ngtcp2_ringbuf_len(rb));
247
-
248
- ack_ent = ngtcp2_ringbuf_get(rb, ack_ent_offset);
249
-
250
- /* Assume that ngtcp2_pkt_validate_ack(fr) returns 0 */
251
- it = ngtcp2_ksl_lower_bound(&acktr->ents, &ack_ent->largest_ack);
252
- for (; !ngtcp2_ksl_it_end(&it);) {
253
- ent = ngtcp2_ksl_it_get(&it);
254
- acktr_remove(acktr, &it, ent);
255
- }
256
-
257
- if (ngtcp2_ksl_len(&acktr->ents)) {
258
- assert(ngtcp2_ksl_it_end(&it));
259
-
260
- ngtcp2_ksl_it_prev(&it);
261
- ent = ngtcp2_ksl_it_get(&it);
262
- if (ent->pkt_num > ack_ent->largest_ack &&
263
- ack_ent->largest_ack >= ent->pkt_num - (int64_t)(ent->len - 1)) {
264
- ent->len = (size_t)(ent->pkt_num - ack_ent->largest_ack);
265
- }
266
- }
267
-
268
- ngtcp2_ringbuf_resize(rb, ack_ent_offset);
269
- }
270
-
271
- void ngtcp2_acktr_recv_ack(ngtcp2_acktr *acktr, const ngtcp2_ack *fr) {
272
- ngtcp2_acktr_ack_entry *ent;
273
- int64_t largest_ack = fr->largest_ack, min_ack;
274
- size_t i, j;
275
- ngtcp2_ringbuf *rb = &acktr->acks;
276
- size_t nacks = ngtcp2_ringbuf_len(rb);
277
-
278
- /* Assume that ngtcp2_pkt_validate_ack(fr) returns 0 */
279
- for (j = 0; j < nacks; ++j) {
280
- ent = ngtcp2_ringbuf_get(rb, j);
281
- if (largest_ack >= ent->pkt_num) {
282
- break;
283
- }
284
- }
285
- if (j == nacks) {
286
- return;
287
- }
288
-
289
- min_ack = largest_ack - (int64_t)fr->first_ack_range;
290
-
291
- if (min_ack <= ent->pkt_num && ent->pkt_num <= largest_ack) {
292
- acktr_on_ack(acktr, rb, j);
293
- return;
294
- }
295
-
296
- for (i = 0; i < fr->rangecnt && j < nacks; ++i) {
297
- largest_ack = min_ack - (int64_t)fr->ranges[i].gap - 2;
298
- min_ack = largest_ack - (int64_t)fr->ranges[i].len;
299
-
300
- for (;;) {
301
- if (ent->pkt_num > largest_ack) {
302
- ++j;
303
- if (j == nacks) {
304
- return;
305
- }
306
- ent = ngtcp2_ringbuf_get(rb, j);
307
- continue;
308
- }
309
- if (ent->pkt_num < min_ack) {
310
- break;
311
- }
312
- acktr_on_ack(acktr, rb, j);
313
- return;
314
- }
315
- }
316
- }
317
-
318
- void ngtcp2_acktr_commit_ack(ngtcp2_acktr *acktr) {
319
- acktr->flags &= (uint16_t) ~(NGTCP2_ACKTR_FLAG_ACTIVE_ACK |
320
- NGTCP2_ACKTR_FLAG_IMMEDIATE_ACK |
321
- NGTCP2_ACKTR_FLAG_CANCEL_TIMER);
322
- acktr->first_unacked_ts = UINT64_MAX;
323
- acktr->rx_npkt = 0;
324
- }
325
-
326
- int ngtcp2_acktr_require_active_ack(ngtcp2_acktr *acktr,
327
- ngtcp2_duration max_ack_delay,
328
- ngtcp2_tstamp ts) {
329
- return acktr->first_unacked_ts != UINT64_MAX &&
330
- acktr->first_unacked_ts + max_ack_delay <= ts;
331
- }
332
-
333
- void ngtcp2_acktr_immediate_ack(ngtcp2_acktr *acktr) {
334
- acktr->flags |= NGTCP2_ACKTR_FLAG_IMMEDIATE_ACK;
335
- }
@@ -1,221 +0,0 @@
1
- /*
2
- * ngtcp2
3
- *
4
- * Copyright (c) 2017 ngtcp2 contributors
5
- *
6
- * Permission is hereby granted, free of charge, to any person obtaining
7
- * a copy of this software and associated documentation files (the
8
- * "Software"), to deal in the Software without restriction, including
9
- * without limitation the rights to use, copy, modify, merge, publish,
10
- * distribute, sublicense, and/or sell copies of the Software, and to
11
- * permit persons to whom the Software is furnished to do so, subject to
12
- * the following conditions:
13
- *
14
- * The above copyright notice and this permission notice shall be
15
- * included in all copies or substantial portions of the Software.
16
- *
17
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
18
- * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
19
- * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
20
- * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
21
- * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
22
- * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
23
- * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
24
- */
25
- #ifndef NGTCP2_ACKTR_H
26
- #define NGTCP2_ACKTR_H
27
-
28
- #ifdef HAVE_CONFIG_H
29
- # include <config.h>
30
- #endif /* HAVE_CONFIG_H */
31
-
32
- #include <ngtcp2/ngtcp2.h>
33
-
34
- #include "ngtcp2_mem.h"
35
- #include "ngtcp2_ringbuf.h"
36
- #include "ngtcp2_ksl.h"
37
- #include "ngtcp2_pkt.h"
38
- #include "ngtcp2_objalloc.h"
39
-
40
- /* NGTCP2_ACKTR_MAX_ENT is the maximum number of ngtcp2_acktr_entry
41
- which ngtcp2_acktr stores. */
42
- #define NGTCP2_ACKTR_MAX_ENT 1024
43
-
44
- typedef struct ngtcp2_log ngtcp2_log;
45
-
46
- /*
47
- * ngtcp2_acktr_entry is a range of packets which need to be acked.
48
- */
49
- typedef struct ngtcp2_acktr_entry {
50
- union {
51
- struct {
52
- /* pkt_num is the largest packet number to acknowledge in this
53
- range. */
54
- int64_t pkt_num;
55
- /* len is the consecutive packets started from pkt_num which
56
- includes pkt_num itself counting in decreasing order. So pkt_num
57
- = 987 and len = 2, this entry includes packet 987 and 986. */
58
- size_t len;
59
- /* tstamp is the timestamp when a packet denoted by pkt_num is
60
- received. */
61
- ngtcp2_tstamp tstamp;
62
- };
63
-
64
- ngtcp2_opl_entry oplent;
65
- };
66
- } ngtcp2_acktr_entry;
67
-
68
- ngtcp2_objalloc_def(acktr_entry, ngtcp2_acktr_entry, oplent);
69
-
70
- /*
71
- * ngtcp2_acktr_entry_objalloc_new allocates memory for ent, and
72
- * initializes it with the given parameters. The pointer to the
73
- * allocated object is stored to |*ent|.
74
- *
75
- * This function returns 0 if it succeeds, or one of the following
76
- * negative error codes:
77
- *
78
- * NGTCP2_ERR_NOMEM
79
- * Out of memory.
80
- */
81
- int ngtcp2_acktr_entry_objalloc_new(ngtcp2_acktr_entry **ent, int64_t pkt_num,
82
- ngtcp2_tstamp tstamp,
83
- ngtcp2_objalloc *objalloc);
84
-
85
- /*
86
- * ngtcp2_acktr_entry_objalloc_del deallocates memory allocated for
87
- * |ent|.
88
- */
89
- void ngtcp2_acktr_entry_objalloc_del(ngtcp2_acktr_entry *ent,
90
- ngtcp2_objalloc *objalloc);
91
-
92
- typedef struct ngtcp2_acktr_ack_entry {
93
- /* largest_ack is the largest packet number in outgoing ACK frame */
94
- int64_t largest_ack;
95
- /* pkt_num is the packet number that ACK frame is included. */
96
- int64_t pkt_num;
97
- } ngtcp2_acktr_ack_entry;
98
-
99
- /* NGTCP2_ACKTR_FLAG_NONE indicates that no flag set. */
100
- #define NGTCP2_ACKTR_FLAG_NONE 0x00u
101
- /* NGTCP2_ACKTR_FLAG_IMMEDIATE_ACK indicates that immediate
102
- acknowledgement is required. */
103
- #define NGTCP2_ACKTR_FLAG_IMMEDIATE_ACK 0x01u
104
- /* NGTCP2_ACKTR_FLAG_ACTIVE_ACK indicates that there are pending
105
- protected packet to be acknowledged. */
106
- #define NGTCP2_ACKTR_FLAG_ACTIVE_ACK 0x02u
107
- /* NGTCP2_ACKTR_FLAG_CANCEL_TIMER is set when ACK delay timer is
108
- expired and canceled. */
109
- #define NGTCP2_ACKTR_FLAG_CANCEL_TIMER 0x0100u
110
-
111
- /*
112
- * ngtcp2_acktr tracks received packets which we have to send ack.
113
- */
114
- typedef struct ngtcp2_acktr {
115
- ngtcp2_objalloc objalloc;
116
- ngtcp2_ringbuf acks;
117
- /* ents includes ngtcp2_acktr_entry sorted by decreasing order of
118
- packet number. */
119
- ngtcp2_ksl ents;
120
- ngtcp2_log *log;
121
- const ngtcp2_mem *mem;
122
- /* flags is bitwise OR of zero, or more of NGTCP2_ACKTR_FLAG_*. */
123
- uint16_t flags;
124
- /* first_unacked_ts is timestamp when ngtcp2_acktr_entry is added
125
- first time after the last outgoing ACK frame. */
126
- ngtcp2_tstamp first_unacked_ts;
127
- /* rx_npkt is the number of ACK eliciting packets received without
128
- sending ACK. */
129
- size_t rx_npkt;
130
- } ngtcp2_acktr;
131
-
132
- /*
133
- * ngtcp2_acktr_init initializes |acktr|.
134
- *
135
- * This function returns 0 if it succeeds, or one of the following
136
- * negative error codes:
137
- *
138
- * NGTCP2_ERR_NOMEM
139
- * Out of memory.
140
- */
141
- int ngtcp2_acktr_init(ngtcp2_acktr *acktr, ngtcp2_log *log,
142
- const ngtcp2_mem *mem);
143
-
144
- /*
145
- * ngtcp2_acktr_free frees resources allocated for |acktr|. It frees
146
- * any ngtcp2_acktr_entry added to |acktr|.
147
- */
148
- void ngtcp2_acktr_free(ngtcp2_acktr *acktr);
149
-
150
- /*
151
- * ngtcp2_acktr_add adds packet number |pkt_num| to |acktr|.
152
- * |active_ack| is nonzero if |pkt_num| is retransmittable packet.
153
- *
154
- * This function assumes that |acktr| does not contain |pkt_num|.
155
- *
156
- * This function returns 0 if it succeeds, or one of the following
157
- * negative error codes:
158
- *
159
- * NGTCP2_ERR_NOMEM
160
- * OUt of memory.
161
- */
162
- int ngtcp2_acktr_add(ngtcp2_acktr *acktr, int64_t pkt_num, int active_ack,
163
- ngtcp2_tstamp ts);
164
-
165
- /*
166
- * ngtcp2_acktr_forget removes all entries which have the packet
167
- * number that is equal to or less than ent->pkt_num. This function
168
- * assumes that |acktr| includes |ent|.
169
- */
170
- void ngtcp2_acktr_forget(ngtcp2_acktr *acktr, ngtcp2_acktr_entry *ent);
171
-
172
- /*
173
- * ngtcp2_acktr_get returns the pointer to pointer to the entry which
174
- * has the largest packet number to be acked. If there is no entry,
175
- * returned value satisfies ngtcp2_ksl_it_end(&it) != 0.
176
- */
177
- ngtcp2_ksl_it ngtcp2_acktr_get(ngtcp2_acktr *acktr);
178
-
179
- /*
180
- * ngtcp2_acktr_empty returns nonzero if it has no packet to
181
- * acknowledge.
182
- */
183
- int ngtcp2_acktr_empty(ngtcp2_acktr *acktr);
184
-
185
- /*
186
- * ngtcp2_acktr_add_ack records outgoing ACK frame whose largest
187
- * acknowledged packet number is |largest_ack|. |pkt_num| is the
188
- * packet number of a packet in which ACK frame is included. This
189
- * function returns a pointer to the object it adds.
190
- */
191
- ngtcp2_acktr_ack_entry *
192
- ngtcp2_acktr_add_ack(ngtcp2_acktr *acktr, int64_t pkt_num, int64_t largest_ack);
193
-
194
- /*
195
- * ngtcp2_acktr_recv_ack processes the incoming ACK frame |fr|.
196
- * |pkt_num| is a packet number which includes |fr|. If we receive
197
- * ACK which acknowledges the ACKs added by ngtcp2_acktr_add_ack,
198
- * ngtcp2_acktr_entry which the outgoing ACK acknowledges is removed.
199
- */
200
- void ngtcp2_acktr_recv_ack(ngtcp2_acktr *acktr, const ngtcp2_ack *fr);
201
-
202
- /*
203
- * ngtcp2_acktr_commit_ack tells |acktr| that ACK frame is generated.
204
- */
205
- void ngtcp2_acktr_commit_ack(ngtcp2_acktr *acktr);
206
-
207
- /*
208
- * ngtcp2_acktr_require_active_ack returns nonzero if ACK frame should
209
- * be generated actively.
210
- */
211
- int ngtcp2_acktr_require_active_ack(ngtcp2_acktr *acktr,
212
- ngtcp2_duration max_ack_delay,
213
- ngtcp2_tstamp ts);
214
-
215
- /*
216
- * ngtcp2_acktr_immediate_ack tells |acktr| that immediate
217
- * acknowledgement is required.
218
- */
219
- void ngtcp2_acktr_immediate_ack(ngtcp2_acktr *acktr);
220
-
221
- #endif /* NGTCP2_ACKTR_H */