puma-plus-core 0.1.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 (1055) hide show
  1. checksums.yaml +7 -0
  2. data/ext/puma_plus_core/extconf.rb +85 -0
  3. data/go/cmd/puma-plus/main.go +472 -0
  4. data/go/go.mod +20 -0
  5. data/go/go.sum +38 -0
  6. data/go/internal/control/booted_test.go +97 -0
  7. data/go/internal/control/decide.go +427 -0
  8. data/go/internal/control/decide_test.go +526 -0
  9. data/go/internal/control/loop.go +343 -0
  10. data/go/internal/control/loop_test.go +228 -0
  11. data/go/internal/control/replay.go +121 -0
  12. data/go/internal/control/sim/cooldown_test.go +74 -0
  13. data/go/internal/control/sim/sim.go +599 -0
  14. data/go/internal/control/sim/sim_test.go +300 -0
  15. data/go/internal/frontend/acceptor.go +164 -0
  16. data/go/internal/frontend/altsvc.go +57 -0
  17. data/go/internal/frontend/altsvc_test.go +170 -0
  18. data/go/internal/frontend/bodypump.go +81 -0
  19. data/go/internal/frontend/env.go +224 -0
  20. data/go/internal/frontend/env_test.go +64 -0
  21. data/go/internal/frontend/handler.go +543 -0
  22. data/go/internal/frontend/handler_test.go +486 -0
  23. data/go/internal/frontend/hijack.go +108 -0
  24. data/go/internal/frontend/hijack_test.go +197 -0
  25. data/go/internal/frontend/hooks_test.go +283 -0
  26. data/go/internal/frontend/launcher_test.go +289 -0
  27. data/go/internal/frontend/listeners.go +196 -0
  28. data/go/internal/frontend/protocol_test.go +391 -0
  29. data/go/internal/frontend/ractor_shepherd.go +160 -0
  30. data/go/internal/frontend/ractor_smoke_test.go +168 -0
  31. data/go/internal/frontend/realcert_test.go +163 -0
  32. data/go/internal/frontend/rtbridge.go +410 -0
  33. data/go/internal/frontend/shepherd.go +188 -0
  34. data/go/internal/frontend/socket.go +37 -0
  35. data/go/internal/frontend/socketpair_test.go +34 -0
  36. data/go/internal/frontend/tlscert.go +184 -0
  37. data/go/internal/frontend/tlscert_test.go +81 -0
  38. data/go/internal/frontend/wscontrol.go +198 -0
  39. data/go/internal/metrics/collector.go +207 -0
  40. data/go/internal/metrics/endpoints.go +244 -0
  41. data/go/internal/metrics/gvl.go +136 -0
  42. data/go/internal/metrics/gvl_test.go +122 -0
  43. data/go/internal/metrics/hist.go +204 -0
  44. data/go/internal/metrics/hist_test.go +353 -0
  45. data/go/internal/metrics/window.go +120 -0
  46. data/go/internal/queue/drain_test.go +141 -0
  47. data/go/internal/queue/queue.go +297 -0
  48. data/go/internal/realtime/event.go +53 -0
  49. data/go/internal/realtime/hub.go +456 -0
  50. data/go/internal/realtime/hub_test.go +370 -0
  51. data/go/internal/realtime/id.go +69 -0
  52. data/go/internal/realtime/id_test.go +64 -0
  53. data/go/internal/websocket/frame.go +186 -0
  54. data/go/internal/websocket/serve.go +196 -0
  55. data/go/internal/websocket/transport.go +101 -0
  56. data/go/internal/webtransport/serve.go +169 -0
  57. data/go/internal/webtransport/transport.go +220 -0
  58. data/go/internal/wire/golden_test.go +250 -0
  59. data/go/internal/wire/rack_test.go +40 -0
  60. data/go/internal/wire/ractor_test.go +43 -0
  61. data/go/internal/wire/wire.go +401 -0
  62. data/go/vendor/github.com/dunglas/httpsfv/LICENSE +27 -0
  63. data/go/vendor/github.com/dunglas/httpsfv/README.md +25 -0
  64. data/go/vendor/github.com/dunglas/httpsfv/bareitem.go +115 -0
  65. data/go/vendor/github.com/dunglas/httpsfv/binary.go +59 -0
  66. data/go/vendor/github.com/dunglas/httpsfv/boolean.go +49 -0
  67. data/go/vendor/github.com/dunglas/httpsfv/date.go +41 -0
  68. data/go/vendor/github.com/dunglas/httpsfv/decimal.go +64 -0
  69. data/go/vendor/github.com/dunglas/httpsfv/decode.go +63 -0
  70. data/go/vendor/github.com/dunglas/httpsfv/dictionary.go +167 -0
  71. data/go/vendor/github.com/dunglas/httpsfv/displaystring.go +105 -0
  72. data/go/vendor/github.com/dunglas/httpsfv/encode.go +42 -0
  73. data/go/vendor/github.com/dunglas/httpsfv/innerlist.go +91 -0
  74. data/go/vendor/github.com/dunglas/httpsfv/integer.go +120 -0
  75. data/go/vendor/github.com/dunglas/httpsfv/item.go +73 -0
  76. data/go/vendor/github.com/dunglas/httpsfv/key.go +81 -0
  77. data/go/vendor/github.com/dunglas/httpsfv/list.go +99 -0
  78. data/go/vendor/github.com/dunglas/httpsfv/member.go +9 -0
  79. data/go/vendor/github.com/dunglas/httpsfv/params.go +143 -0
  80. data/go/vendor/github.com/dunglas/httpsfv/string.go +88 -0
  81. data/go/vendor/github.com/dunglas/httpsfv/token.go +71 -0
  82. data/go/vendor/github.com/dunglas/httpsfv/utils.go +16 -0
  83. data/go/vendor/github.com/quic-go/qpack/LICENSE.md +7 -0
  84. data/go/vendor/github.com/quic-go/qpack/README.md +21 -0
  85. data/go/vendor/github.com/quic-go/qpack/decoder.go +183 -0
  86. data/go/vendor/github.com/quic-go/qpack/encoder.go +95 -0
  87. data/go/vendor/github.com/quic-go/qpack/header_field.go +16 -0
  88. data/go/vendor/github.com/quic-go/qpack/static_table.go +255 -0
  89. data/go/vendor/github.com/quic-go/qpack/varint.go +69 -0
  90. data/go/vendor/github.com/quic-go/quic-go/FIPS140.md +37 -0
  91. data/go/vendor/github.com/quic-go/quic-go/FUZZING.md +59 -0
  92. data/go/vendor/github.com/quic-go/quic-go/LICENSE +21 -0
  93. data/go/vendor/github.com/quic-go/quic-go/README.md +65 -0
  94. data/go/vendor/github.com/quic-go/quic-go/SECURITY.md +14 -0
  95. data/go/vendor/github.com/quic-go/quic-go/buffer_pool.go +92 -0
  96. data/go/vendor/github.com/quic-go/quic-go/client.go +109 -0
  97. data/go/vendor/github.com/quic-go/quic-go/closed_conn.go +58 -0
  98. data/go/vendor/github.com/quic-go/quic-go/codecov.yml +23 -0
  99. data/go/vendor/github.com/quic-go/quic-go/config.go +129 -0
  100. data/go/vendor/github.com/quic-go/quic-go/conn_id_generator.go +212 -0
  101. data/go/vendor/github.com/quic-go/quic-go/conn_id_manager.go +321 -0
  102. data/go/vendor/github.com/quic-go/quic-go/connection.go +3150 -0
  103. data/go/vendor/github.com/quic-go/quic-go/connection_logging.go +315 -0
  104. data/go/vendor/github.com/quic-go/quic-go/crypto_stream.go +249 -0
  105. data/go/vendor/github.com/quic-go/quic-go/crypto_stream_manager.go +73 -0
  106. data/go/vendor/github.com/quic-go/quic-go/datagram_queue.go +137 -0
  107. data/go/vendor/github.com/quic-go/quic-go/errors.go +105 -0
  108. data/go/vendor/github.com/quic-go/quic-go/flow_controller_base.go +84 -0
  109. data/go/vendor/github.com/quic-go/quic-go/flow_controller_connection.go +186 -0
  110. data/go/vendor/github.com/quic-go/quic-go/flow_controller_stream.go +196 -0
  111. data/go/vendor/github.com/quic-go/quic-go/frame_sorter.go +274 -0
  112. data/go/vendor/github.com/quic-go/quic-go/framer.go +295 -0
  113. data/go/vendor/github.com/quic-go/quic-go/http3/README.md +9 -0
  114. data/go/vendor/github.com/quic-go/quic-go/http3/body.go +137 -0
  115. data/go/vendor/github.com/quic-go/quic-go/http3/capsule.go +148 -0
  116. data/go/vendor/github.com/quic-go/quic-go/http3/client.go +496 -0
  117. data/go/vendor/github.com/quic-go/quic-go/http3/conn.go +319 -0
  118. data/go/vendor/github.com/quic-go/quic-go/http3/error.go +63 -0
  119. data/go/vendor/github.com/quic-go/quic-go/http3/error_codes.go +84 -0
  120. data/go/vendor/github.com/quic-go/quic-go/http3/frames.go +327 -0
  121. data/go/vendor/github.com/quic-go/quic-go/http3/gzip_reader.go +39 -0
  122. data/go/vendor/github.com/quic-go/quic-go/http3/headers.go +429 -0
  123. data/go/vendor/github.com/quic-go/quic-go/http3/ip_addr.go +48 -0
  124. data/go/vendor/github.com/quic-go/quic-go/http3/mockgen.go +11 -0
  125. data/go/vendor/github.com/quic-go/quic-go/http3/qlog/event.go +138 -0
  126. data/go/vendor/github.com/quic-go/quic-go/http3/qlog/frame.go +220 -0
  127. data/go/vendor/github.com/quic-go/quic-go/http3/qlog/qlog_dir.go +15 -0
  128. data/go/vendor/github.com/quic-go/quic-go/http3/qlog.go +56 -0
  129. data/go/vendor/github.com/quic-go/quic-go/http3/request_writer.go +324 -0
  130. data/go/vendor/github.com/quic-go/quic-go/http3/response_writer.go +372 -0
  131. data/go/vendor/github.com/quic-go/quic-go/http3/server.go +738 -0
  132. data/go/vendor/github.com/quic-go/quic-go/http3/server_conn.go +259 -0
  133. data/go/vendor/github.com/quic-go/quic-go/http3/state_tracking_stream.go +173 -0
  134. data/go/vendor/github.com/quic-go/quic-go/http3/stream.go +406 -0
  135. data/go/vendor/github.com/quic-go/quic-go/http3/trace.go +105 -0
  136. data/go/vendor/github.com/quic-go/quic-go/http3/transport.go +538 -0
  137. data/go/vendor/github.com/quic-go/quic-go/interface.go +221 -0
  138. data/go/vendor/github.com/quic-go/quic-go/internal/ackhandler/ack_eliciting.go +33 -0
  139. data/go/vendor/github.com/quic-go/quic-go/internal/ackhandler/ecn.go +340 -0
  140. data/go/vendor/github.com/quic-go/quic-go/internal/ackhandler/frame.go +21 -0
  141. data/go/vendor/github.com/quic-go/quic-go/internal/ackhandler/interfaces.go +39 -0
  142. data/go/vendor/github.com/quic-go/quic-go/internal/ackhandler/lost_packet_tracker.go +73 -0
  143. data/go/vendor/github.com/quic-go/quic-go/internal/ackhandler/mockgen.go +6 -0
  144. data/go/vendor/github.com/quic-go/quic-go/internal/ackhandler/packet.go +60 -0
  145. data/go/vendor/github.com/quic-go/quic-go/internal/ackhandler/packet_number_generator.go +84 -0
  146. data/go/vendor/github.com/quic-go/quic-go/internal/ackhandler/received_packet_handler.go +119 -0
  147. data/go/vendor/github.com/quic-go/quic-go/internal/ackhandler/received_packet_history.go +159 -0
  148. data/go/vendor/github.com/quic-go/quic-go/internal/ackhandler/received_packet_tracker.go +228 -0
  149. data/go/vendor/github.com/quic-go/quic-go/internal/ackhandler/send_mode.go +46 -0
  150. data/go/vendor/github.com/quic-go/quic-go/internal/ackhandler/sent_packet_handler.go +1143 -0
  151. data/go/vendor/github.com/quic-go/quic-go/internal/ackhandler/sent_packet_history.go +274 -0
  152. data/go/vendor/github.com/quic-go/quic-go/internal/congestion/bandwidth.go +22 -0
  153. data/go/vendor/github.com/quic-go/quic-go/internal/congestion/clock.go +20 -0
  154. data/go/vendor/github.com/quic-go/quic-go/internal/congestion/cubic.go +214 -0
  155. data/go/vendor/github.com/quic-go/quic-go/internal/congestion/cubic_sender.go +330 -0
  156. data/go/vendor/github.com/quic-go/quic-go/internal/congestion/hybrid_slow_start.go +112 -0
  157. data/go/vendor/github.com/quic-go/quic-go/internal/congestion/interface.go +27 -0
  158. data/go/vendor/github.com/quic-go/quic-go/internal/congestion/pacer.go +110 -0
  159. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/aead.go +91 -0
  160. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/cipher_suite.go +114 -0
  161. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/cipher_suite_fips140.go +48 -0
  162. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/crypto_setup.go +718 -0
  163. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/fake_conn.go +21 -0
  164. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/fips140_go126.go +9 -0
  165. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/fips140_legacy.go +7 -0
  166. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/header_protector.go +134 -0
  167. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/hkdf.go +26 -0
  168. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/initial_aead.go +80 -0
  169. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/interface.go +140 -0
  170. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/quic_event_go125.go +11 -0
  171. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/quic_event_go126.go +11 -0
  172. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/retry_go125.go +68 -0
  173. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/retry_go126.go +70 -0
  174. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/session_ticket.go +55 -0
  175. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/tls_config_go126.go +54 -0
  176. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/tls_config_go127.go +24 -0
  177. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/token_generator.go +126 -0
  178. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/token_protector.go +78 -0
  179. data/go/vendor/github.com/quic-go/quic-go/internal/handshake/updatable_aead.go +372 -0
  180. data/go/vendor/github.com/quic-go/quic-go/internal/monotime/time.go +90 -0
  181. data/go/vendor/github.com/quic-go/quic-go/internal/protocol/connection_id.go +116 -0
  182. data/go/vendor/github.com/quic-go/quic-go/internal/protocol/encryption_level.go +65 -0
  183. data/go/vendor/github.com/quic-go/quic-go/internal/protocol/key_phase.go +36 -0
  184. data/go/vendor/github.com/quic-go/quic-go/internal/protocol/packet_number.go +57 -0
  185. data/go/vendor/github.com/quic-go/quic-go/internal/protocol/params.go +169 -0
  186. data/go/vendor/github.com/quic-go/quic-go/internal/protocol/perspective.go +26 -0
  187. data/go/vendor/github.com/quic-go/quic-go/internal/protocol/protocol.go +156 -0
  188. data/go/vendor/github.com/quic-go/quic-go/internal/protocol/stream.go +102 -0
  189. data/go/vendor/github.com/quic-go/quic-go/internal/protocol/version.go +115 -0
  190. data/go/vendor/github.com/quic-go/quic-go/internal/qerr/error_codes.go +87 -0
  191. data/go/vendor/github.com/quic-go/quic-go/internal/qerr/errors.go +134 -0
  192. data/go/vendor/github.com/quic-go/quic-go/internal/utils/buffered_write_closer.go +26 -0
  193. data/go/vendor/github.com/quic-go/quic-go/internal/utils/connstats.go +14 -0
  194. data/go/vendor/github.com/quic-go/quic-go/internal/utils/linkedlist/README.md +6 -0
  195. data/go/vendor/github.com/quic-go/quic-go/internal/utils/linkedlist/linkedlist.go +264 -0
  196. data/go/vendor/github.com/quic-go/quic-go/internal/utils/log.go +131 -0
  197. data/go/vendor/github.com/quic-go/quic-go/internal/utils/rand.go +29 -0
  198. data/go/vendor/github.com/quic-go/quic-go/internal/utils/ringbuffer/ringbuffer.go +96 -0
  199. data/go/vendor/github.com/quic-go/quic-go/internal/utils/rtt_stats.go +159 -0
  200. data/go/vendor/github.com/quic-go/quic-go/internal/wire/ack_frame.go +298 -0
  201. data/go/vendor/github.com/quic-go/quic-go/internal/wire/ack_frequency_frame.go +65 -0
  202. data/go/vendor/github.com/quic-go/quic-go/internal/wire/ack_range.go +14 -0
  203. data/go/vendor/github.com/quic-go/quic-go/internal/wire/connection_close_frame.go +75 -0
  204. data/go/vendor/github.com/quic-go/quic-go/internal/wire/crypto_frame.go +97 -0
  205. data/go/vendor/github.com/quic-go/quic-go/internal/wire/data_blocked_frame.go +29 -0
  206. data/go/vendor/github.com/quic-go/quic-go/internal/wire/datagram_frame.go +85 -0
  207. data/go/vendor/github.com/quic-go/quic-go/internal/wire/extended_header.go +164 -0
  208. data/go/vendor/github.com/quic-go/quic-go/internal/wire/frame.go +33 -0
  209. data/go/vendor/github.com/quic-go/quic-go/internal/wire/frame_parser.go +192 -0
  210. data/go/vendor/github.com/quic-go/quic-go/internal/wire/frame_type.go +81 -0
  211. data/go/vendor/github.com/quic-go/quic-go/internal/wire/handshake_done_frame.go +17 -0
  212. data/go/vendor/github.com/quic-go/quic-go/internal/wire/header.go +302 -0
  213. data/go/vendor/github.com/quic-go/quic-go/internal/wire/immediate_ack_frame.go +18 -0
  214. data/go/vendor/github.com/quic-go/quic-go/internal/wire/log.go +74 -0
  215. data/go/vendor/github.com/quic-go/quic-go/internal/wire/max_data_frame.go +33 -0
  216. data/go/vendor/github.com/quic-go/quic-go/internal/wire/max_stream_data_frame.go +43 -0
  217. data/go/vendor/github.com/quic-go/quic-go/internal/wire/max_streams_frame.go +50 -0
  218. data/go/vendor/github.com/quic-go/quic-go/internal/wire/new_connection_id_frame.go +80 -0
  219. data/go/vendor/github.com/quic-go/quic-go/internal/wire/new_token_frame.go +43 -0
  220. data/go/vendor/github.com/quic-go/quic-go/internal/wire/path_challenge_frame.go +32 -0
  221. data/go/vendor/github.com/quic-go/quic-go/internal/wire/path_response_frame.go +32 -0
  222. data/go/vendor/github.com/quic-go/quic-go/internal/wire/ping_frame.go +17 -0
  223. data/go/vendor/github.com/quic-go/quic-go/internal/wire/pool.go +33 -0
  224. data/go/vendor/github.com/quic-go/quic-go/internal/wire/reset_stream_frame.go +79 -0
  225. data/go/vendor/github.com/quic-go/quic-go/internal/wire/retire_connection_id_frame.go +30 -0
  226. data/go/vendor/github.com/quic-go/quic-go/internal/wire/short_header.go +62 -0
  227. data/go/vendor/github.com/quic-go/quic-go/internal/wire/stop_sending_frame.go +45 -0
  228. data/go/vendor/github.com/quic-go/quic-go/internal/wire/stream_data_blocked_frame.go +42 -0
  229. data/go/vendor/github.com/quic-go/quic-go/internal/wire/stream_frame.go +191 -0
  230. data/go/vendor/github.com/quic-go/quic-go/internal/wire/streams_blocked_frame.go +50 -0
  231. data/go/vendor/github.com/quic-go/quic-go/internal/wire/transport_parameters.go +593 -0
  232. data/go/vendor/github.com/quic-go/quic-go/internal/wire/version_negotiation.go +53 -0
  233. data/go/vendor/github.com/quic-go/quic-go/mockgen.go +47 -0
  234. data/go/vendor/github.com/quic-go/quic-go/mtu_discoverer.go +253 -0
  235. data/go/vendor/github.com/quic-go/quic-go/oss-fuzz.sh +52 -0
  236. data/go/vendor/github.com/quic-go/quic-go/packet_packer.go +1009 -0
  237. data/go/vendor/github.com/quic-go/quic-go/packet_unpacker.go +222 -0
  238. data/go/vendor/github.com/quic-go/quic-go/path_manager.go +206 -0
  239. data/go/vendor/github.com/quic-go/quic-go/path_manager_outgoing.go +314 -0
  240. data/go/vendor/github.com/quic-go/quic-go/qlog/event.go +849 -0
  241. data/go/vendor/github.com/quic-go/quic-go/qlog/frame.go +481 -0
  242. data/go/vendor/github.com/quic-go/quic-go/qlog/packet_header.go +96 -0
  243. data/go/vendor/github.com/quic-go/quic-go/qlog/qlog_dir.go +61 -0
  244. data/go/vendor/github.com/quic-go/quic-go/qlog/types.go +305 -0
  245. data/go/vendor/github.com/quic-go/quic-go/qlogwriter/jsontext/encoder.go +324 -0
  246. data/go/vendor/github.com/quic-go/quic-go/qlogwriter/trace.go +124 -0
  247. data/go/vendor/github.com/quic-go/quic-go/qlogwriter/writer.go +229 -0
  248. data/go/vendor/github.com/quic-go/quic-go/quicvarint/io.go +98 -0
  249. data/go/vendor/github.com/quic-go/quic-go/quicvarint/varint.go +180 -0
  250. data/go/vendor/github.com/quic-go/quic-go/receive_stream.go +578 -0
  251. data/go/vendor/github.com/quic-go/quic-go/retransmission_queue.go +158 -0
  252. data/go/vendor/github.com/quic-go/quic-go/send_conn.go +124 -0
  253. data/go/vendor/github.com/quic-go/quic-go/send_queue.go +112 -0
  254. data/go/vendor/github.com/quic-go/quic-go/send_stream.go +915 -0
  255. data/go/vendor/github.com/quic-go/quic-go/server.go +1119 -0
  256. data/go/vendor/github.com/quic-go/quic-go/sni.go +136 -0
  257. data/go/vendor/github.com/quic-go/quic-go/stateless_reset.go +42 -0
  258. data/go/vendor/github.com/quic-go/quic-go/stream.go +253 -0
  259. data/go/vendor/github.com/quic-go/quic-go/streams_map.go +356 -0
  260. data/go/vendor/github.com/quic-go/quic-go/streams_map_incoming.go +209 -0
  261. data/go/vendor/github.com/quic-go/quic-go/streams_map_outgoing.go +253 -0
  262. data/go/vendor/github.com/quic-go/quic-go/sys_conn.go +143 -0
  263. data/go/vendor/github.com/quic-go/quic-go/sys_conn_buffers.go +68 -0
  264. data/go/vendor/github.com/quic-go/quic-go/sys_conn_buffers_write.go +70 -0
  265. data/go/vendor/github.com/quic-go/quic-go/sys_conn_df.go +22 -0
  266. data/go/vendor/github.com/quic-go/quic-go/sys_conn_df_darwin.go +90 -0
  267. data/go/vendor/github.com/quic-go/quic-go/sys_conn_df_linux.go +42 -0
  268. data/go/vendor/github.com/quic-go/quic-go/sys_conn_df_windows.go +52 -0
  269. data/go/vendor/github.com/quic-go/quic-go/sys_conn_helper_darwin.go +38 -0
  270. data/go/vendor/github.com/quic-go/quic-go/sys_conn_helper_freebsd.go +33 -0
  271. data/go/vendor/github.com/quic-go/quic-go/sys_conn_helper_linux.go +156 -0
  272. data/go/vendor/github.com/quic-go/quic-go/sys_conn_helper_nonlinux.go +10 -0
  273. data/go/vendor/github.com/quic-go/quic-go/sys_conn_no_oob.go +21 -0
  274. data/go/vendor/github.com/quic-go/quic-go/sys_conn_oob.go +338 -0
  275. data/go/vendor/github.com/quic-go/quic-go/sys_conn_windows.go +42 -0
  276. data/go/vendor/github.com/quic-go/quic-go/token_store.go +116 -0
  277. data/go/vendor/github.com/quic-go/quic-go/transport.go +848 -0
  278. data/go/vendor/github.com/quic-go/webtransport-go/LICENSE +7 -0
  279. data/go/vendor/github.com/quic-go/webtransport-go/README.md +31 -0
  280. data/go/vendor/github.com/quic-go/webtransport-go/SECURITY.md +14 -0
  281. data/go/vendor/github.com/quic-go/webtransport-go/capsule.go +261 -0
  282. data/go/vendor/github.com/quic-go/webtransport-go/client_conn.go +289 -0
  283. data/go/vendor/github.com/quic-go/webtransport-go/codecov.yml +12 -0
  284. data/go/vendor/github.com/quic-go/webtransport-go/config.go +90 -0
  285. data/go/vendor/github.com/quic-go/webtransport-go/errors.go +96 -0
  286. data/go/vendor/github.com/quic-go/webtransport-go/flow_control.go +107 -0
  287. data/go/vendor/github.com/quic-go/webtransport-go/protocol.go +59 -0
  288. data/go/vendor/github.com/quic-go/webtransport-go/receive_stream.go +185 -0
  289. data/go/vendor/github.com/quic-go/webtransport-go/send_stream.go +322 -0
  290. data/go/vendor/github.com/quic-go/webtransport-go/server.go +533 -0
  291. data/go/vendor/github.com/quic-go/webtransport-go/session.go +463 -0
  292. data/go/vendor/github.com/quic-go/webtransport-go/session_manager.go +190 -0
  293. data/go/vendor/github.com/quic-go/webtransport-go/stream.go +147 -0
  294. data/go/vendor/github.com/quic-go/webtransport-go/streams_map_incoming.go +179 -0
  295. data/go/vendor/github.com/quic-go/webtransport-go/streams_map_outgoing.go +357 -0
  296. data/go/vendor/github.com/quic-go/webtransport-go/transport.go +126 -0
  297. data/go/vendor/golang.org/x/crypto/LICENSE +27 -0
  298. data/go/vendor/golang.org/x/crypto/PATENTS +22 -0
  299. data/go/vendor/golang.org/x/crypto/chacha20/chacha_arm64.go +16 -0
  300. data/go/vendor/golang.org/x/crypto/chacha20/chacha_arm64.s +307 -0
  301. data/go/vendor/golang.org/x/crypto/chacha20/chacha_generic.go +398 -0
  302. data/go/vendor/golang.org/x/crypto/chacha20/chacha_noasm.go +13 -0
  303. data/go/vendor/golang.org/x/crypto/chacha20/chacha_ppc64x.go +16 -0
  304. data/go/vendor/golang.org/x/crypto/chacha20/chacha_ppc64x.s +501 -0
  305. data/go/vendor/golang.org/x/crypto/chacha20/chacha_s390x.go +27 -0
  306. data/go/vendor/golang.org/x/crypto/chacha20/chacha_s390x.s +224 -0
  307. data/go/vendor/golang.org/x/crypto/chacha20/xor.go +42 -0
  308. data/go/vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305.go +101 -0
  309. data/go/vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_amd64.go +92 -0
  310. data/go/vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_amd64.s +5230 -0
  311. data/go/vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_generic.go +87 -0
  312. data/go/vendor/golang.org/x/crypto/chacha20poly1305/chacha20poly1305_noasm.go +15 -0
  313. data/go/vendor/golang.org/x/crypto/chacha20poly1305/fips140only_compat.go +9 -0
  314. data/go/vendor/golang.org/x/crypto/chacha20poly1305/fips140only_go1.26.go +11 -0
  315. data/go/vendor/golang.org/x/crypto/chacha20poly1305/xchacha20poly1305.go +89 -0
  316. data/go/vendor/golang.org/x/crypto/internal/alias/alias.go +31 -0
  317. data/go/vendor/golang.org/x/crypto/internal/alias/alias_purego.go +34 -0
  318. data/go/vendor/golang.org/x/crypto/internal/poly1305/mac_noasm.go +9 -0
  319. data/go/vendor/golang.org/x/crypto/internal/poly1305/poly1305.go +99 -0
  320. data/go/vendor/golang.org/x/crypto/internal/poly1305/sum_amd64.s +93 -0
  321. data/go/vendor/golang.org/x/crypto/internal/poly1305/sum_asm.go +47 -0
  322. data/go/vendor/golang.org/x/crypto/internal/poly1305/sum_generic.go +312 -0
  323. data/go/vendor/golang.org/x/crypto/internal/poly1305/sum_loong64.s +123 -0
  324. data/go/vendor/golang.org/x/crypto/internal/poly1305/sum_ppc64x.s +187 -0
  325. data/go/vendor/golang.org/x/crypto/internal/poly1305/sum_s390x.go +76 -0
  326. data/go/vendor/golang.org/x/crypto/internal/poly1305/sum_s390x.s +503 -0
  327. data/go/vendor/golang.org/x/net/LICENSE +27 -0
  328. data/go/vendor/golang.org/x/net/PATENTS +22 -0
  329. data/go/vendor/golang.org/x/net/bpf/asm.go +41 -0
  330. data/go/vendor/golang.org/x/net/bpf/constants.go +222 -0
  331. data/go/vendor/golang.org/x/net/bpf/doc.go +87 -0
  332. data/go/vendor/golang.org/x/net/bpf/instructions.go +726 -0
  333. data/go/vendor/golang.org/x/net/bpf/setter.go +10 -0
  334. data/go/vendor/golang.org/x/net/bpf/vm.go +150 -0
  335. data/go/vendor/golang.org/x/net/bpf/vm_instructions.go +182 -0
  336. data/go/vendor/golang.org/x/net/http/httpguts/guts.go +50 -0
  337. data/go/vendor/golang.org/x/net/http/httpguts/httplex.go +347 -0
  338. data/go/vendor/golang.org/x/net/http2/README.md +19 -0
  339. data/go/vendor/golang.org/x/net/http2/ascii.go +53 -0
  340. data/go/vendor/golang.org/x/net/http2/ciphers.go +641 -0
  341. data/go/vendor/golang.org/x/net/http2/client_conn_pool.go +301 -0
  342. data/go/vendor/golang.org/x/net/http2/client_priority_go126.go +20 -0
  343. data/go/vendor/golang.org/x/net/http2/client_priority_go127.go +13 -0
  344. data/go/vendor/golang.org/x/net/http2/clientconn.go +57 -0
  345. data/go/vendor/golang.org/x/net/http2/config.go +171 -0
  346. data/go/vendor/golang.org/x/net/http2/config_go125.go +15 -0
  347. data/go/vendor/golang.org/x/net/http2/config_go126.go +15 -0
  348. data/go/vendor/golang.org/x/net/http2/databuffer.go +149 -0
  349. data/go/vendor/golang.org/x/net/http2/errors.go +145 -0
  350. data/go/vendor/golang.org/x/net/http2/flow.go +120 -0
  351. data/go/vendor/golang.org/x/net/http2/frame.go +1871 -0
  352. data/go/vendor/golang.org/x/net/http2/gotrack.go +181 -0
  353. data/go/vendor/golang.org/x/net/http2/h2c/h2c.go +256 -0
  354. data/go/vendor/golang.org/x/net/http2/hpack/encode.go +245 -0
  355. data/go/vendor/golang.org/x/net/http2/hpack/hpack.go +523 -0
  356. data/go/vendor/golang.org/x/net/http2/hpack/huffman.go +226 -0
  357. data/go/vendor/golang.org/x/net/http2/hpack/static_table.go +188 -0
  358. data/go/vendor/golang.org/x/net/http2/hpack/tables.go +403 -0
  359. data/go/vendor/golang.org/x/net/http2/http2.go +415 -0
  360. data/go/vendor/golang.org/x/net/http2/pipe.go +184 -0
  361. data/go/vendor/golang.org/x/net/http2/server.go +3217 -0
  362. data/go/vendor/golang.org/x/net/http2/server_common.go +221 -0
  363. data/go/vendor/golang.org/x/net/http2/server_wrap.go +217 -0
  364. data/go/vendor/golang.org/x/net/http2/transport.go +3036 -0
  365. data/go/vendor/golang.org/x/net/http2/transport_common.go +447 -0
  366. data/go/vendor/golang.org/x/net/http2/transport_wrap.go +394 -0
  367. data/go/vendor/golang.org/x/net/http2/unencrypted.go +32 -0
  368. data/go/vendor/golang.org/x/net/http2/write.go +381 -0
  369. data/go/vendor/golang.org/x/net/http2/writesched.go +252 -0
  370. data/go/vendor/golang.org/x/net/http2/writesched_common.go +90 -0
  371. data/go/vendor/golang.org/x/net/http2/writesched_priority_rfc7540.go +420 -0
  372. data/go/vendor/golang.org/x/net/http2/writesched_priority_rfc9218.go +226 -0
  373. data/go/vendor/golang.org/x/net/http2/writesched_random.go +81 -0
  374. data/go/vendor/golang.org/x/net/http2/writesched_roundrobin.go +121 -0
  375. data/go/vendor/golang.org/x/net/idna/idna.go +884 -0
  376. data/go/vendor/golang.org/x/net/idna/punycode.go +220 -0
  377. data/go/vendor/golang.org/x/net/idna/tables15.0.0.go +5144 -0
  378. data/go/vendor/golang.org/x/net/idna/tables17.0.0.go +5302 -0
  379. data/go/vendor/golang.org/x/net/idna/trie.go +51 -0
  380. data/go/vendor/golang.org/x/net/idna/trieval.go +119 -0
  381. data/go/vendor/golang.org/x/net/internal/httpcommon/ascii.go +53 -0
  382. data/go/vendor/golang.org/x/net/internal/httpcommon/headermap.go +115 -0
  383. data/go/vendor/golang.org/x/net/internal/httpcommon/request.go +475 -0
  384. data/go/vendor/golang.org/x/net/internal/httpsfv/httpsfv.go +665 -0
  385. data/go/vendor/golang.org/x/net/internal/iana/const.go +223 -0
  386. data/go/vendor/golang.org/x/net/internal/socket/cmsghdr.go +11 -0
  387. data/go/vendor/golang.org/x/net/internal/socket/cmsghdr_bsd.go +13 -0
  388. data/go/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_32bit.go +13 -0
  389. data/go/vendor/golang.org/x/net/internal/socket/cmsghdr_linux_64bit.go +13 -0
  390. data/go/vendor/golang.org/x/net/internal/socket/cmsghdr_solaris_64bit.go +13 -0
  391. data/go/vendor/golang.org/x/net/internal/socket/cmsghdr_stub.go +27 -0
  392. data/go/vendor/golang.org/x/net/internal/socket/cmsghdr_unix.go +21 -0
  393. data/go/vendor/golang.org/x/net/internal/socket/cmsghdr_zos_s390x.go +11 -0
  394. data/go/vendor/golang.org/x/net/internal/socket/complete_dontwait.go +25 -0
  395. data/go/vendor/golang.org/x/net/internal/socket/complete_nodontwait.go +21 -0
  396. data/go/vendor/golang.org/x/net/internal/socket/empty.s +7 -0
  397. data/go/vendor/golang.org/x/net/internal/socket/error_unix.go +31 -0
  398. data/go/vendor/golang.org/x/net/internal/socket/error_windows.go +26 -0
  399. data/go/vendor/golang.org/x/net/internal/socket/iovec_32bit.go +18 -0
  400. data/go/vendor/golang.org/x/net/internal/socket/iovec_64bit.go +18 -0
  401. data/go/vendor/golang.org/x/net/internal/socket/iovec_solaris_64bit.go +18 -0
  402. data/go/vendor/golang.org/x/net/internal/socket/iovec_stub.go +11 -0
  403. data/go/vendor/golang.org/x/net/internal/socket/mmsghdr_stub.go +21 -0
  404. data/go/vendor/golang.org/x/net/internal/socket/mmsghdr_unix.go +195 -0
  405. data/go/vendor/golang.org/x/net/internal/socket/msghdr_bsd.go +39 -0
  406. data/go/vendor/golang.org/x/net/internal/socket/msghdr_bsdvar.go +16 -0
  407. data/go/vendor/golang.org/x/net/internal/socket/msghdr_linux.go +36 -0
  408. data/go/vendor/golang.org/x/net/internal/socket/msghdr_linux_32bit.go +23 -0
  409. data/go/vendor/golang.org/x/net/internal/socket/msghdr_linux_64bit.go +23 -0
  410. data/go/vendor/golang.org/x/net/internal/socket/msghdr_openbsd.go +14 -0
  411. data/go/vendor/golang.org/x/net/internal/socket/msghdr_solaris_64bit.go +38 -0
  412. data/go/vendor/golang.org/x/net/internal/socket/msghdr_stub.go +14 -0
  413. data/go/vendor/golang.org/x/net/internal/socket/msghdr_zos_s390x.go +35 -0
  414. data/go/vendor/golang.org/x/net/internal/socket/norace.go +12 -0
  415. data/go/vendor/golang.org/x/net/internal/socket/race.go +37 -0
  416. data/go/vendor/golang.org/x/net/internal/socket/rawconn.go +91 -0
  417. data/go/vendor/golang.org/x/net/internal/socket/rawconn_mmsg.go +53 -0
  418. data/go/vendor/golang.org/x/net/internal/socket/rawconn_msg.go +59 -0
  419. data/go/vendor/golang.org/x/net/internal/socket/rawconn_nommsg.go +15 -0
  420. data/go/vendor/golang.org/x/net/internal/socket/rawconn_nomsg.go +15 -0
  421. data/go/vendor/golang.org/x/net/internal/socket/socket.go +281 -0
  422. data/go/vendor/golang.org/x/net/internal/socket/sys_bsd.go +15 -0
  423. data/go/vendor/golang.org/x/net/internal/socket/sys_const_unix.go +20 -0
  424. data/go/vendor/golang.org/x/net/internal/socket/sys_linux.go +22 -0
  425. data/go/vendor/golang.org/x/net/internal/socket/sys_linux_386.go +28 -0
  426. data/go/vendor/golang.org/x/net/internal/socket/sys_linux_386.s +11 -0
  427. data/go/vendor/golang.org/x/net/internal/socket/sys_linux_amd64.go +10 -0
  428. data/go/vendor/golang.org/x/net/internal/socket/sys_linux_arm.go +10 -0
  429. data/go/vendor/golang.org/x/net/internal/socket/sys_linux_arm64.go +10 -0
  430. data/go/vendor/golang.org/x/net/internal/socket/sys_linux_loong64.go +12 -0
  431. data/go/vendor/golang.org/x/net/internal/socket/sys_linux_mips.go +10 -0
  432. data/go/vendor/golang.org/x/net/internal/socket/sys_linux_mips64.go +10 -0
  433. data/go/vendor/golang.org/x/net/internal/socket/sys_linux_mips64le.go +10 -0
  434. data/go/vendor/golang.org/x/net/internal/socket/sys_linux_mipsle.go +10 -0
  435. data/go/vendor/golang.org/x/net/internal/socket/sys_linux_ppc.go +10 -0
  436. data/go/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64.go +10 -0
  437. data/go/vendor/golang.org/x/net/internal/socket/sys_linux_ppc64le.go +10 -0
  438. data/go/vendor/golang.org/x/net/internal/socket/sys_linux_riscv64.go +12 -0
  439. data/go/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.go +28 -0
  440. data/go/vendor/golang.org/x/net/internal/socket/sys_linux_s390x.s +11 -0
  441. data/go/vendor/golang.org/x/net/internal/socket/sys_netbsd.go +25 -0
  442. data/go/vendor/golang.org/x/net/internal/socket/sys_posix.go +184 -0
  443. data/go/vendor/golang.org/x/net/internal/socket/sys_stub.go +52 -0
  444. data/go/vendor/golang.org/x/net/internal/socket/sys_unix.go +121 -0
  445. data/go/vendor/golang.org/x/net/internal/socket/sys_windows.go +55 -0
  446. data/go/vendor/golang.org/x/net/internal/socket/sys_zos_s390x.go +66 -0
  447. data/go/vendor/golang.org/x/net/internal/socket/sys_zos_s390x.s +11 -0
  448. data/go/vendor/golang.org/x/net/internal/socket/zsys_aix_ppc64.go +39 -0
  449. data/go/vendor/golang.org/x/net/internal/socket/zsys_darwin_amd64.go +32 -0
  450. data/go/vendor/golang.org/x/net/internal/socket/zsys_darwin_arm64.go +32 -0
  451. data/go/vendor/golang.org/x/net/internal/socket/zsys_dragonfly_amd64.go +32 -0
  452. data/go/vendor/golang.org/x/net/internal/socket/zsys_freebsd_386.go +30 -0
  453. data/go/vendor/golang.org/x/net/internal/socket/zsys_freebsd_amd64.go +32 -0
  454. data/go/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm.go +30 -0
  455. data/go/vendor/golang.org/x/net/internal/socket/zsys_freebsd_arm64.go +32 -0
  456. data/go/vendor/golang.org/x/net/internal/socket/zsys_freebsd_riscv64.go +30 -0
  457. data/go/vendor/golang.org/x/net/internal/socket/zsys_linux_386.go +35 -0
  458. data/go/vendor/golang.org/x/net/internal/socket/zsys_linux_amd64.go +38 -0
  459. data/go/vendor/golang.org/x/net/internal/socket/zsys_linux_arm.go +35 -0
  460. data/go/vendor/golang.org/x/net/internal/socket/zsys_linux_arm64.go +38 -0
  461. data/go/vendor/golang.org/x/net/internal/socket/zsys_linux_loong64.go +39 -0
  462. data/go/vendor/golang.org/x/net/internal/socket/zsys_linux_mips.go +35 -0
  463. data/go/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64.go +38 -0
  464. data/go/vendor/golang.org/x/net/internal/socket/zsys_linux_mips64le.go +38 -0
  465. data/go/vendor/golang.org/x/net/internal/socket/zsys_linux_mipsle.go +35 -0
  466. data/go/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc.go +35 -0
  467. data/go/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64.go +38 -0
  468. data/go/vendor/golang.org/x/net/internal/socket/zsys_linux_ppc64le.go +38 -0
  469. data/go/vendor/golang.org/x/net/internal/socket/zsys_linux_riscv64.go +39 -0
  470. data/go/vendor/golang.org/x/net/internal/socket/zsys_linux_s390x.go +38 -0
  471. data/go/vendor/golang.org/x/net/internal/socket/zsys_netbsd_386.go +35 -0
  472. data/go/vendor/golang.org/x/net/internal/socket/zsys_netbsd_amd64.go +38 -0
  473. data/go/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm.go +35 -0
  474. data/go/vendor/golang.org/x/net/internal/socket/zsys_netbsd_arm64.go +38 -0
  475. data/go/vendor/golang.org/x/net/internal/socket/zsys_openbsd_386.go +30 -0
  476. data/go/vendor/golang.org/x/net/internal/socket/zsys_openbsd_amd64.go +32 -0
  477. data/go/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm.go +30 -0
  478. data/go/vendor/golang.org/x/net/internal/socket/zsys_openbsd_arm64.go +32 -0
  479. data/go/vendor/golang.org/x/net/internal/socket/zsys_openbsd_mips64.go +30 -0
  480. data/go/vendor/golang.org/x/net/internal/socket/zsys_openbsd_ppc64.go +30 -0
  481. data/go/vendor/golang.org/x/net/internal/socket/zsys_openbsd_riscv64.go +30 -0
  482. data/go/vendor/golang.org/x/net/internal/socket/zsys_solaris_amd64.go +32 -0
  483. data/go/vendor/golang.org/x/net/internal/socket/zsys_zos_s390x.go +28 -0
  484. data/go/vendor/golang.org/x/net/ipv4/batch.go +194 -0
  485. data/go/vendor/golang.org/x/net/ipv4/control.go +144 -0
  486. data/go/vendor/golang.org/x/net/ipv4/control_bsd.go +43 -0
  487. data/go/vendor/golang.org/x/net/ipv4/control_pktinfo.go +41 -0
  488. data/go/vendor/golang.org/x/net/ipv4/control_stub.go +13 -0
  489. data/go/vendor/golang.org/x/net/ipv4/control_unix.go +75 -0
  490. data/go/vendor/golang.org/x/net/ipv4/control_windows.go +12 -0
  491. data/go/vendor/golang.org/x/net/ipv4/control_zos.go +88 -0
  492. data/go/vendor/golang.org/x/net/ipv4/dgramopt.go +264 -0
  493. data/go/vendor/golang.org/x/net/ipv4/doc.go +240 -0
  494. data/go/vendor/golang.org/x/net/ipv4/endpoint.go +186 -0
  495. data/go/vendor/golang.org/x/net/ipv4/genericopt.go +55 -0
  496. data/go/vendor/golang.org/x/net/ipv4/header.go +170 -0
  497. data/go/vendor/golang.org/x/net/ipv4/helper.go +77 -0
  498. data/go/vendor/golang.org/x/net/ipv4/iana.go +38 -0
  499. data/go/vendor/golang.org/x/net/ipv4/icmp.go +57 -0
  500. data/go/vendor/golang.org/x/net/ipv4/icmp_linux.go +25 -0
  501. data/go/vendor/golang.org/x/net/ipv4/icmp_stub.go +25 -0
  502. data/go/vendor/golang.org/x/net/ipv4/packet.go +117 -0
  503. data/go/vendor/golang.org/x/net/ipv4/payload.go +23 -0
  504. data/go/vendor/golang.org/x/net/ipv4/payload_cmsg.go +84 -0
  505. data/go/vendor/golang.org/x/net/ipv4/payload_nocmsg.go +39 -0
  506. data/go/vendor/golang.org/x/net/ipv4/sockopt.go +44 -0
  507. data/go/vendor/golang.org/x/net/ipv4/sockopt_posix.go +71 -0
  508. data/go/vendor/golang.org/x/net/ipv4/sockopt_stub.go +42 -0
  509. data/go/vendor/golang.org/x/net/ipv4/sys_aix.go +43 -0
  510. data/go/vendor/golang.org/x/net/ipv4/sys_asmreq.go +122 -0
  511. data/go/vendor/golang.org/x/net/ipv4/sys_asmreq_stub.go +25 -0
  512. data/go/vendor/golang.org/x/net/ipv4/sys_asmreqn.go +44 -0
  513. data/go/vendor/golang.org/x/net/ipv4/sys_asmreqn_stub.go +21 -0
  514. data/go/vendor/golang.org/x/net/ipv4/sys_bpf.go +24 -0
  515. data/go/vendor/golang.org/x/net/ipv4/sys_bpf_stub.go +16 -0
  516. data/go/vendor/golang.org/x/net/ipv4/sys_bsd.go +41 -0
  517. data/go/vendor/golang.org/x/net/ipv4/sys_darwin.go +69 -0
  518. data/go/vendor/golang.org/x/net/ipv4/sys_dragonfly.go +39 -0
  519. data/go/vendor/golang.org/x/net/ipv4/sys_freebsd.go +80 -0
  520. data/go/vendor/golang.org/x/net/ipv4/sys_linux.go +61 -0
  521. data/go/vendor/golang.org/x/net/ipv4/sys_solaris.go +61 -0
  522. data/go/vendor/golang.org/x/net/ipv4/sys_ssmreq.go +52 -0
  523. data/go/vendor/golang.org/x/net/ipv4/sys_ssmreq_stub.go +21 -0
  524. data/go/vendor/golang.org/x/net/ipv4/sys_stub.go +13 -0
  525. data/go/vendor/golang.org/x/net/ipv4/sys_windows.go +44 -0
  526. data/go/vendor/golang.org/x/net/ipv4/sys_zos.go +57 -0
  527. data/go/vendor/golang.org/x/net/ipv4/zsys_aix_ppc64.go +16 -0
  528. data/go/vendor/golang.org/x/net/ipv4/zsys_darwin.go +59 -0
  529. data/go/vendor/golang.org/x/net/ipv4/zsys_dragonfly.go +13 -0
  530. data/go/vendor/golang.org/x/net/ipv4/zsys_freebsd_386.go +52 -0
  531. data/go/vendor/golang.org/x/net/ipv4/zsys_freebsd_amd64.go +54 -0
  532. data/go/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm.go +54 -0
  533. data/go/vendor/golang.org/x/net/ipv4/zsys_freebsd_arm64.go +52 -0
  534. data/go/vendor/golang.org/x/net/ipv4/zsys_freebsd_riscv64.go +52 -0
  535. data/go/vendor/golang.org/x/net/ipv4/zsys_linux_386.go +72 -0
  536. data/go/vendor/golang.org/x/net/ipv4/zsys_linux_amd64.go +74 -0
  537. data/go/vendor/golang.org/x/net/ipv4/zsys_linux_arm.go +72 -0
  538. data/go/vendor/golang.org/x/net/ipv4/zsys_linux_arm64.go +74 -0
  539. data/go/vendor/golang.org/x/net/ipv4/zsys_linux_loong64.go +76 -0
  540. data/go/vendor/golang.org/x/net/ipv4/zsys_linux_mips.go +72 -0
  541. data/go/vendor/golang.org/x/net/ipv4/zsys_linux_mips64.go +74 -0
  542. data/go/vendor/golang.org/x/net/ipv4/zsys_linux_mips64le.go +74 -0
  543. data/go/vendor/golang.org/x/net/ipv4/zsys_linux_mipsle.go +72 -0
  544. data/go/vendor/golang.org/x/net/ipv4/zsys_linux_ppc.go +72 -0
  545. data/go/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64.go +74 -0
  546. data/go/vendor/golang.org/x/net/ipv4/zsys_linux_ppc64le.go +74 -0
  547. data/go/vendor/golang.org/x/net/ipv4/zsys_linux_riscv64.go +76 -0
  548. data/go/vendor/golang.org/x/net/ipv4/zsys_linux_s390x.go +74 -0
  549. data/go/vendor/golang.org/x/net/ipv4/zsys_netbsd.go +13 -0
  550. data/go/vendor/golang.org/x/net/ipv4/zsys_openbsd.go +13 -0
  551. data/go/vendor/golang.org/x/net/ipv4/zsys_solaris.go +57 -0
  552. data/go/vendor/golang.org/x/net/ipv4/zsys_zos_s390x.go +56 -0
  553. data/go/vendor/golang.org/x/net/ipv6/batch.go +116 -0
  554. data/go/vendor/golang.org/x/net/ipv6/control.go +187 -0
  555. data/go/vendor/golang.org/x/net/ipv6/control_rfc2292_unix.go +51 -0
  556. data/go/vendor/golang.org/x/net/ipv6/control_rfc3542_unix.go +97 -0
  557. data/go/vendor/golang.org/x/net/ipv6/control_stub.go +13 -0
  558. data/go/vendor/golang.org/x/net/ipv6/control_unix.go +55 -0
  559. data/go/vendor/golang.org/x/net/ipv6/control_windows.go +12 -0
  560. data/go/vendor/golang.org/x/net/ipv6/dgramopt.go +301 -0
  561. data/go/vendor/golang.org/x/net/ipv6/doc.go +239 -0
  562. data/go/vendor/golang.org/x/net/ipv6/endpoint.go +127 -0
  563. data/go/vendor/golang.org/x/net/ipv6/genericopt.go +56 -0
  564. data/go/vendor/golang.org/x/net/ipv6/header.go +55 -0
  565. data/go/vendor/golang.org/x/net/ipv6/helper.go +58 -0
  566. data/go/vendor/golang.org/x/net/ipv6/iana.go +86 -0
  567. data/go/vendor/golang.org/x/net/ipv6/icmp.go +60 -0
  568. data/go/vendor/golang.org/x/net/ipv6/icmp_bsd.go +29 -0
  569. data/go/vendor/golang.org/x/net/ipv6/icmp_linux.go +27 -0
  570. data/go/vendor/golang.org/x/net/ipv6/icmp_solaris.go +27 -0
  571. data/go/vendor/golang.org/x/net/ipv6/icmp_stub.go +23 -0
  572. data/go/vendor/golang.org/x/net/ipv6/icmp_windows.go +22 -0
  573. data/go/vendor/golang.org/x/net/ipv6/icmp_zos.go +29 -0
  574. data/go/vendor/golang.org/x/net/ipv6/payload.go +23 -0
  575. data/go/vendor/golang.org/x/net/ipv6/payload_cmsg.go +70 -0
  576. data/go/vendor/golang.org/x/net/ipv6/payload_nocmsg.go +38 -0
  577. data/go/vendor/golang.org/x/net/ipv6/sockopt.go +43 -0
  578. data/go/vendor/golang.org/x/net/ipv6/sockopt_posix.go +89 -0
  579. data/go/vendor/golang.org/x/net/ipv6/sockopt_stub.go +46 -0
  580. data/go/vendor/golang.org/x/net/ipv6/sys_aix.go +79 -0
  581. data/go/vendor/golang.org/x/net/ipv6/sys_asmreq.go +24 -0
  582. data/go/vendor/golang.org/x/net/ipv6/sys_asmreq_stub.go +17 -0
  583. data/go/vendor/golang.org/x/net/ipv6/sys_bpf.go +24 -0
  584. data/go/vendor/golang.org/x/net/ipv6/sys_bpf_stub.go +16 -0
  585. data/go/vendor/golang.org/x/net/ipv6/sys_bsd.go +59 -0
  586. data/go/vendor/golang.org/x/net/ipv6/sys_darwin.go +80 -0
  587. data/go/vendor/golang.org/x/net/ipv6/sys_freebsd.go +94 -0
  588. data/go/vendor/golang.org/x/net/ipv6/sys_linux.go +76 -0
  589. data/go/vendor/golang.org/x/net/ipv6/sys_solaris.go +76 -0
  590. data/go/vendor/golang.org/x/net/ipv6/sys_ssmreq.go +54 -0
  591. data/go/vendor/golang.org/x/net/ipv6/sys_ssmreq_stub.go +21 -0
  592. data/go/vendor/golang.org/x/net/ipv6/sys_stub.go +13 -0
  593. data/go/vendor/golang.org/x/net/ipv6/sys_windows.go +68 -0
  594. data/go/vendor/golang.org/x/net/ipv6/sys_zos.go +72 -0
  595. data/go/vendor/golang.org/x/net/ipv6/zsys_aix_ppc64.go +68 -0
  596. data/go/vendor/golang.org/x/net/ipv6/zsys_darwin.go +64 -0
  597. data/go/vendor/golang.org/x/net/ipv6/zsys_dragonfly.go +42 -0
  598. data/go/vendor/golang.org/x/net/ipv6/zsys_freebsd_386.go +64 -0
  599. data/go/vendor/golang.org/x/net/ipv6/zsys_freebsd_amd64.go +66 -0
  600. data/go/vendor/golang.org/x/net/ipv6/zsys_freebsd_arm.go +66 -0
  601. data/go/vendor/golang.org/x/net/ipv6/zsys_freebsd_arm64.go +64 -0
  602. data/go/vendor/golang.org/x/net/ipv6/zsys_freebsd_riscv64.go +64 -0
  603. data/go/vendor/golang.org/x/net/ipv6/zsys_linux_386.go +72 -0
  604. data/go/vendor/golang.org/x/net/ipv6/zsys_linux_amd64.go +74 -0
  605. data/go/vendor/golang.org/x/net/ipv6/zsys_linux_arm.go +72 -0
  606. data/go/vendor/golang.org/x/net/ipv6/zsys_linux_arm64.go +74 -0
  607. data/go/vendor/golang.org/x/net/ipv6/zsys_linux_loong64.go +76 -0
  608. data/go/vendor/golang.org/x/net/ipv6/zsys_linux_mips.go +72 -0
  609. data/go/vendor/golang.org/x/net/ipv6/zsys_linux_mips64.go +74 -0
  610. data/go/vendor/golang.org/x/net/ipv6/zsys_linux_mips64le.go +74 -0
  611. data/go/vendor/golang.org/x/net/ipv6/zsys_linux_mipsle.go +72 -0
  612. data/go/vendor/golang.org/x/net/ipv6/zsys_linux_ppc.go +72 -0
  613. data/go/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64.go +74 -0
  614. data/go/vendor/golang.org/x/net/ipv6/zsys_linux_ppc64le.go +74 -0
  615. data/go/vendor/golang.org/x/net/ipv6/zsys_linux_riscv64.go +76 -0
  616. data/go/vendor/golang.org/x/net/ipv6/zsys_linux_s390x.go +74 -0
  617. data/go/vendor/golang.org/x/net/ipv6/zsys_netbsd.go +42 -0
  618. data/go/vendor/golang.org/x/net/ipv6/zsys_openbsd.go +42 -0
  619. data/go/vendor/golang.org/x/net/ipv6/zsys_solaris.go +63 -0
  620. data/go/vendor/golang.org/x/net/ipv6/zsys_zos_s390x.go +62 -0
  621. data/go/vendor/golang.org/x/sys/LICENSE +27 -0
  622. data/go/vendor/golang.org/x/sys/PATENTS +22 -0
  623. data/go/vendor/golang.org/x/sys/cpu/asm_aix_ppc64.s +17 -0
  624. data/go/vendor/golang.org/x/sys/cpu/asm_darwin_arm64_gc.s +12 -0
  625. data/go/vendor/golang.org/x/sys/cpu/asm_darwin_x86_gc.s +17 -0
  626. data/go/vendor/golang.org/x/sys/cpu/byteorder.go +66 -0
  627. data/go/vendor/golang.org/x/sys/cpu/cpu.go +343 -0
  628. data/go/vendor/golang.org/x/sys/cpu/cpu_aix.go +33 -0
  629. data/go/vendor/golang.org/x/sys/cpu/cpu_arm.go +73 -0
  630. data/go/vendor/golang.org/x/sys/cpu/cpu_arm64.go +191 -0
  631. data/go/vendor/golang.org/x/sys/cpu/cpu_arm64.s +35 -0
  632. data/go/vendor/golang.org/x/sys/cpu/cpu_darwin_arm64.go +67 -0
  633. data/go/vendor/golang.org/x/sys/cpu/cpu_darwin_arm64_other.go +31 -0
  634. data/go/vendor/golang.org/x/sys/cpu/cpu_darwin_x86.go +61 -0
  635. data/go/vendor/golang.org/x/sys/cpu/cpu_gc_arm64.go +12 -0
  636. data/go/vendor/golang.org/x/sys/cpu/cpu_gc_s390x.go +21 -0
  637. data/go/vendor/golang.org/x/sys/cpu/cpu_gc_x86.go +15 -0
  638. data/go/vendor/golang.org/x/sys/cpu/cpu_gc_x86.s +26 -0
  639. data/go/vendor/golang.org/x/sys/cpu/cpu_gccgo_arm64.go +12 -0
  640. data/go/vendor/golang.org/x/sys/cpu/cpu_gccgo_s390x.go +22 -0
  641. data/go/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.c +37 -0
  642. data/go/vendor/golang.org/x/sys/cpu/cpu_gccgo_x86.go +25 -0
  643. data/go/vendor/golang.org/x/sys/cpu/cpu_linux.go +15 -0
  644. data/go/vendor/golang.org/x/sys/cpu/cpu_linux_arm.go +39 -0
  645. data/go/vendor/golang.org/x/sys/cpu/cpu_linux_arm64.go +120 -0
  646. data/go/vendor/golang.org/x/sys/cpu/cpu_linux_loong64.go +22 -0
  647. data/go/vendor/golang.org/x/sys/cpu/cpu_linux_mips64x.go +22 -0
  648. data/go/vendor/golang.org/x/sys/cpu/cpu_linux_noinit.go +9 -0
  649. data/go/vendor/golang.org/x/sys/cpu/cpu_linux_ppc64x.go +30 -0
  650. data/go/vendor/golang.org/x/sys/cpu/cpu_linux_riscv64.go +162 -0
  651. data/go/vendor/golang.org/x/sys/cpu/cpu_linux_s390x.go +40 -0
  652. data/go/vendor/golang.org/x/sys/cpu/cpu_loong64.go +62 -0
  653. data/go/vendor/golang.org/x/sys/cpu/cpu_loong64.s +13 -0
  654. data/go/vendor/golang.org/x/sys/cpu/cpu_mips64x.go +15 -0
  655. data/go/vendor/golang.org/x/sys/cpu/cpu_mipsx.go +11 -0
  656. data/go/vendor/golang.org/x/sys/cpu/cpu_netbsd_arm64.go +173 -0
  657. data/go/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.go +65 -0
  658. data/go/vendor/golang.org/x/sys/cpu/cpu_openbsd_arm64.s +11 -0
  659. data/go/vendor/golang.org/x/sys/cpu/cpu_other_arm.go +9 -0
  660. data/go/vendor/golang.org/x/sys/cpu/cpu_other_arm64.go +11 -0
  661. data/go/vendor/golang.org/x/sys/cpu/cpu_other_mips64x.go +11 -0
  662. data/go/vendor/golang.org/x/sys/cpu/cpu_other_ppc64x.go +12 -0
  663. data/go/vendor/golang.org/x/sys/cpu/cpu_other_riscv64.go +11 -0
  664. data/go/vendor/golang.org/x/sys/cpu/cpu_other_x86.go +11 -0
  665. data/go/vendor/golang.org/x/sys/cpu/cpu_ppc64x.go +16 -0
  666. data/go/vendor/golang.org/x/sys/cpu/cpu_riscv64.go +33 -0
  667. data/go/vendor/golang.org/x/sys/cpu/cpu_s390x.go +172 -0
  668. data/go/vendor/golang.org/x/sys/cpu/cpu_s390x.s +57 -0
  669. data/go/vendor/golang.org/x/sys/cpu/cpu_wasm.go +17 -0
  670. data/go/vendor/golang.org/x/sys/cpu/cpu_windows.go +26 -0
  671. data/go/vendor/golang.org/x/sys/cpu/cpu_windows_arm64.go +38 -0
  672. data/go/vendor/golang.org/x/sys/cpu/cpu_x86.go +236 -0
  673. data/go/vendor/golang.org/x/sys/cpu/cpu_zos.go +10 -0
  674. data/go/vendor/golang.org/x/sys/cpu/cpu_zos_s390x.go +25 -0
  675. data/go/vendor/golang.org/x/sys/cpu/endian_big.go +10 -0
  676. data/go/vendor/golang.org/x/sys/cpu/endian_little.go +10 -0
  677. data/go/vendor/golang.org/x/sys/cpu/hwcap_linux.go +71 -0
  678. data/go/vendor/golang.org/x/sys/cpu/parse.go +55 -0
  679. data/go/vendor/golang.org/x/sys/cpu/proc_cpuinfo_linux.go +53 -0
  680. data/go/vendor/golang.org/x/sys/cpu/runtime_auxv.go +16 -0
  681. data/go/vendor/golang.org/x/sys/cpu/runtime_auxv_go121.go +18 -0
  682. data/go/vendor/golang.org/x/sys/cpu/syscall_aix_gccgo.go +26 -0
  683. data/go/vendor/golang.org/x/sys/cpu/syscall_aix_ppc64_gc.go +35 -0
  684. data/go/vendor/golang.org/x/sys/cpu/syscall_darwin_arm64_gc.go +54 -0
  685. data/go/vendor/golang.org/x/sys/cpu/syscall_darwin_x86_gc.go +98 -0
  686. data/go/vendor/golang.org/x/sys/cpu/zcpu_windows.go +48 -0
  687. data/go/vendor/golang.org/x/sys/unix/README.md +184 -0
  688. data/go/vendor/golang.org/x/sys/unix/affinity_linux.go +189 -0
  689. data/go/vendor/golang.org/x/sys/unix/aliases.go +13 -0
  690. data/go/vendor/golang.org/x/sys/unix/asm_aix_ppc64.s +17 -0
  691. data/go/vendor/golang.org/x/sys/unix/asm_bsd_386.s +27 -0
  692. data/go/vendor/golang.org/x/sys/unix/asm_bsd_amd64.s +27 -0
  693. data/go/vendor/golang.org/x/sys/unix/asm_bsd_arm.s +27 -0
  694. data/go/vendor/golang.org/x/sys/unix/asm_bsd_arm64.s +27 -0
  695. data/go/vendor/golang.org/x/sys/unix/asm_bsd_ppc64.s +29 -0
  696. data/go/vendor/golang.org/x/sys/unix/asm_bsd_riscv64.s +27 -0
  697. data/go/vendor/golang.org/x/sys/unix/asm_linux_386.s +65 -0
  698. data/go/vendor/golang.org/x/sys/unix/asm_linux_amd64.s +57 -0
  699. data/go/vendor/golang.org/x/sys/unix/asm_linux_arm.s +56 -0
  700. data/go/vendor/golang.org/x/sys/unix/asm_linux_arm64.s +50 -0
  701. data/go/vendor/golang.org/x/sys/unix/asm_linux_loong64.s +51 -0
  702. data/go/vendor/golang.org/x/sys/unix/asm_linux_mips64x.s +54 -0
  703. data/go/vendor/golang.org/x/sys/unix/asm_linux_mipsx.s +52 -0
  704. data/go/vendor/golang.org/x/sys/unix/asm_linux_ppc64x.s +42 -0
  705. data/go/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s +47 -0
  706. data/go/vendor/golang.org/x/sys/unix/asm_linux_s390x.s +54 -0
  707. data/go/vendor/golang.org/x/sys/unix/asm_openbsd_mips64.s +29 -0
  708. data/go/vendor/golang.org/x/sys/unix/asm_solaris_amd64.s +17 -0
  709. data/go/vendor/golang.org/x/sys/unix/asm_zos_s390x.s +382 -0
  710. data/go/vendor/golang.org/x/sys/unix/auxv.go +36 -0
  711. data/go/vendor/golang.org/x/sys/unix/auxv_unsupported.go +13 -0
  712. data/go/vendor/golang.org/x/sys/unix/bluetooth_linux.go +36 -0
  713. data/go/vendor/golang.org/x/sys/unix/bpxsvc_zos.go +657 -0
  714. data/go/vendor/golang.org/x/sys/unix/bpxsvc_zos.s +192 -0
  715. data/go/vendor/golang.org/x/sys/unix/cap_freebsd.go +195 -0
  716. data/go/vendor/golang.org/x/sys/unix/constants.go +13 -0
  717. data/go/vendor/golang.org/x/sys/unix/dev_aix_ppc.go +26 -0
  718. data/go/vendor/golang.org/x/sys/unix/dev_aix_ppc64.go +28 -0
  719. data/go/vendor/golang.org/x/sys/unix/dev_darwin.go +24 -0
  720. data/go/vendor/golang.org/x/sys/unix/dev_dragonfly.go +30 -0
  721. data/go/vendor/golang.org/x/sys/unix/dev_freebsd.go +30 -0
  722. data/go/vendor/golang.org/x/sys/unix/dev_linux.go +42 -0
  723. data/go/vendor/golang.org/x/sys/unix/dev_netbsd.go +29 -0
  724. data/go/vendor/golang.org/x/sys/unix/dev_openbsd.go +29 -0
  725. data/go/vendor/golang.org/x/sys/unix/dev_zos.go +28 -0
  726. data/go/vendor/golang.org/x/sys/unix/dirent.go +102 -0
  727. data/go/vendor/golang.org/x/sys/unix/endian_big.go +9 -0
  728. data/go/vendor/golang.org/x/sys/unix/endian_little.go +9 -0
  729. data/go/vendor/golang.org/x/sys/unix/env_unix.go +31 -0
  730. data/go/vendor/golang.org/x/sys/unix/fcntl.go +36 -0
  731. data/go/vendor/golang.org/x/sys/unix/fcntl_darwin.go +24 -0
  732. data/go/vendor/golang.org/x/sys/unix/fcntl_linux_32bit.go +13 -0
  733. data/go/vendor/golang.org/x/sys/unix/fdset.go +27 -0
  734. data/go/vendor/golang.org/x/sys/unix/gccgo.go +59 -0
  735. data/go/vendor/golang.org/x/sys/unix/gccgo_c.c +44 -0
  736. data/go/vendor/golang.org/x/sys/unix/gccgo_linux_amd64.go +20 -0
  737. data/go/vendor/golang.org/x/sys/unix/ifreq_linux.go +139 -0
  738. data/go/vendor/golang.org/x/sys/unix/ioctl_linux.go +334 -0
  739. data/go/vendor/golang.org/x/sys/unix/ioctl_signed.go +74 -0
  740. data/go/vendor/golang.org/x/sys/unix/ioctl_unsigned.go +74 -0
  741. data/go/vendor/golang.org/x/sys/unix/ioctl_zos.go +71 -0
  742. data/go/vendor/golang.org/x/sys/unix/mkall.sh +250 -0
  743. data/go/vendor/golang.org/x/sys/unix/mkerrors.sh +814 -0
  744. data/go/vendor/golang.org/x/sys/unix/mmap_nomremap.go +13 -0
  745. data/go/vendor/golang.org/x/sys/unix/mremap.go +57 -0
  746. data/go/vendor/golang.org/x/sys/unix/pagesize_unix.go +15 -0
  747. data/go/vendor/golang.org/x/sys/unix/pledge_openbsd.go +111 -0
  748. data/go/vendor/golang.org/x/sys/unix/ptrace_darwin.go +11 -0
  749. data/go/vendor/golang.org/x/sys/unix/ptrace_ios.go +11 -0
  750. data/go/vendor/golang.org/x/sys/unix/race.go +30 -0
  751. data/go/vendor/golang.org/x/sys/unix/race0.go +25 -0
  752. data/go/vendor/golang.org/x/sys/unix/readdirent_getdents.go +12 -0
  753. data/go/vendor/golang.org/x/sys/unix/readdirent_getdirentries.go +19 -0
  754. data/go/vendor/golang.org/x/sys/unix/readv_unix.go +103 -0
  755. data/go/vendor/golang.org/x/sys/unix/sockcmsg_dragonfly.go +16 -0
  756. data/go/vendor/golang.org/x/sys/unix/sockcmsg_linux.go +85 -0
  757. data/go/vendor/golang.org/x/sys/unix/sockcmsg_unix.go +106 -0
  758. data/go/vendor/golang.org/x/sys/unix/sockcmsg_unix_other.go +46 -0
  759. data/go/vendor/golang.org/x/sys/unix/sockcmsg_zos.go +58 -0
  760. data/go/vendor/golang.org/x/sys/unix/symaddr_zos_s390x.s +75 -0
  761. data/go/vendor/golang.org/x/sys/unix/syscall.go +86 -0
  762. data/go/vendor/golang.org/x/sys/unix/syscall_aix.go +582 -0
  763. data/go/vendor/golang.org/x/sys/unix/syscall_aix_ppc.go +52 -0
  764. data/go/vendor/golang.org/x/sys/unix/syscall_aix_ppc64.go +83 -0
  765. data/go/vendor/golang.org/x/sys/unix/syscall_bsd.go +609 -0
  766. data/go/vendor/golang.org/x/sys/unix/syscall_darwin.go +711 -0
  767. data/go/vendor/golang.org/x/sys/unix/syscall_darwin_amd64.go +50 -0
  768. data/go/vendor/golang.org/x/sys/unix/syscall_darwin_arm64.go +50 -0
  769. data/go/vendor/golang.org/x/sys/unix/syscall_darwin_libSystem.go +26 -0
  770. data/go/vendor/golang.org/x/sys/unix/syscall_dragonfly.go +359 -0
  771. data/go/vendor/golang.org/x/sys/unix/syscall_dragonfly_amd64.go +56 -0
  772. data/go/vendor/golang.org/x/sys/unix/syscall_freebsd.go +455 -0
  773. data/go/vendor/golang.org/x/sys/unix/syscall_freebsd_386.go +64 -0
  774. data/go/vendor/golang.org/x/sys/unix/syscall_freebsd_amd64.go +64 -0
  775. data/go/vendor/golang.org/x/sys/unix/syscall_freebsd_arm.go +60 -0
  776. data/go/vendor/golang.org/x/sys/unix/syscall_freebsd_arm64.go +60 -0
  777. data/go/vendor/golang.org/x/sys/unix/syscall_freebsd_riscv64.go +60 -0
  778. data/go/vendor/golang.org/x/sys/unix/syscall_hurd.go +30 -0
  779. data/go/vendor/golang.org/x/sys/unix/syscall_hurd_386.go +28 -0
  780. data/go/vendor/golang.org/x/sys/unix/syscall_illumos.go +78 -0
  781. data/go/vendor/golang.org/x/sys/unix/syscall_linux.go +2574 -0
  782. data/go/vendor/golang.org/x/sys/unix/syscall_linux_386.go +313 -0
  783. data/go/vendor/golang.org/x/sys/unix/syscall_linux_alarm.go +12 -0
  784. data/go/vendor/golang.org/x/sys/unix/syscall_linux_amd64.go +144 -0
  785. data/go/vendor/golang.org/x/sys/unix/syscall_linux_amd64_gc.go +12 -0
  786. data/go/vendor/golang.org/x/sys/unix/syscall_linux_arm.go +218 -0
  787. data/go/vendor/golang.org/x/sys/unix/syscall_linux_arm64.go +188 -0
  788. data/go/vendor/golang.org/x/sys/unix/syscall_linux_gc.go +14 -0
  789. data/go/vendor/golang.org/x/sys/unix/syscall_linux_gc_386.go +16 -0
  790. data/go/vendor/golang.org/x/sys/unix/syscall_linux_gc_arm.go +13 -0
  791. data/go/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_386.go +30 -0
  792. data/go/vendor/golang.org/x/sys/unix/syscall_linux_gccgo_arm.go +20 -0
  793. data/go/vendor/golang.org/x/sys/unix/syscall_linux_loong64.go +220 -0
  794. data/go/vendor/golang.org/x/sys/unix/syscall_linux_mips64x.go +187 -0
  795. data/go/vendor/golang.org/x/sys/unix/syscall_linux_mipsx.go +173 -0
  796. data/go/vendor/golang.org/x/sys/unix/syscall_linux_ppc.go +203 -0
  797. data/go/vendor/golang.org/x/sys/unix/syscall_linux_ppc64x.go +114 -0
  798. data/go/vendor/golang.org/x/sys/unix/syscall_linux_riscv64.go +193 -0
  799. data/go/vendor/golang.org/x/sys/unix/syscall_linux_s390x.go +295 -0
  800. data/go/vendor/golang.org/x/sys/unix/syscall_linux_sparc64.go +111 -0
  801. data/go/vendor/golang.org/x/sys/unix/syscall_netbsd.go +388 -0
  802. data/go/vendor/golang.org/x/sys/unix/syscall_netbsd_386.go +37 -0
  803. data/go/vendor/golang.org/x/sys/unix/syscall_netbsd_amd64.go +37 -0
  804. data/go/vendor/golang.org/x/sys/unix/syscall_netbsd_arm.go +37 -0
  805. data/go/vendor/golang.org/x/sys/unix/syscall_netbsd_arm64.go +37 -0
  806. data/go/vendor/golang.org/x/sys/unix/syscall_openbsd.go +346 -0
  807. data/go/vendor/golang.org/x/sys/unix/syscall_openbsd_386.go +41 -0
  808. data/go/vendor/golang.org/x/sys/unix/syscall_openbsd_amd64.go +41 -0
  809. data/go/vendor/golang.org/x/sys/unix/syscall_openbsd_arm.go +41 -0
  810. data/go/vendor/golang.org/x/sys/unix/syscall_openbsd_arm64.go +41 -0
  811. data/go/vendor/golang.org/x/sys/unix/syscall_openbsd_libc.go +26 -0
  812. data/go/vendor/golang.org/x/sys/unix/syscall_openbsd_mips64.go +39 -0
  813. data/go/vendor/golang.org/x/sys/unix/syscall_openbsd_ppc64.go +41 -0
  814. data/go/vendor/golang.org/x/sys/unix/syscall_openbsd_riscv64.go +41 -0
  815. data/go/vendor/golang.org/x/sys/unix/syscall_solaris.go +1183 -0
  816. data/go/vendor/golang.org/x/sys/unix/syscall_solaris_amd64.go +27 -0
  817. data/go/vendor/golang.org/x/sys/unix/syscall_unix.go +619 -0
  818. data/go/vendor/golang.org/x/sys/unix/syscall_unix_gc.go +14 -0
  819. data/go/vendor/golang.org/x/sys/unix/syscall_unix_gc_ppc64x.go +22 -0
  820. data/go/vendor/golang.org/x/sys/unix/syscall_zos_s390x.go +3213 -0
  821. data/go/vendor/golang.org/x/sys/unix/sysvshm_linux.go +20 -0
  822. data/go/vendor/golang.org/x/sys/unix/sysvshm_unix.go +51 -0
  823. data/go/vendor/golang.org/x/sys/unix/sysvshm_unix_other.go +13 -0
  824. data/go/vendor/golang.org/x/sys/unix/timestruct.go +76 -0
  825. data/go/vendor/golang.org/x/sys/unix/unveil_openbsd.go +51 -0
  826. data/go/vendor/golang.org/x/sys/unix/vgetrandom_linux.go +13 -0
  827. data/go/vendor/golang.org/x/sys/unix/vgetrandom_unsupported.go +11 -0
  828. data/go/vendor/golang.org/x/sys/unix/xattr_bsd.go +280 -0
  829. data/go/vendor/golang.org/x/sys/unix/zerrors_aix_ppc.go +1384 -0
  830. data/go/vendor/golang.org/x/sys/unix/zerrors_aix_ppc64.go +1385 -0
  831. data/go/vendor/golang.org/x/sys/unix/zerrors_darwin_amd64.go +1922 -0
  832. data/go/vendor/golang.org/x/sys/unix/zerrors_darwin_arm64.go +1922 -0
  833. data/go/vendor/golang.org/x/sys/unix/zerrors_dragonfly_amd64.go +1737 -0
  834. data/go/vendor/golang.org/x/sys/unix/zerrors_freebsd_386.go +2042 -0
  835. data/go/vendor/golang.org/x/sys/unix/zerrors_freebsd_amd64.go +2039 -0
  836. data/go/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm.go +2033 -0
  837. data/go/vendor/golang.org/x/sys/unix/zerrors_freebsd_arm64.go +2033 -0
  838. data/go/vendor/golang.org/x/sys/unix/zerrors_freebsd_riscv64.go +2147 -0
  839. data/go/vendor/golang.org/x/sys/unix/zerrors_linux.go +4207 -0
  840. data/go/vendor/golang.org/x/sys/unix/zerrors_linux_386.go +883 -0
  841. data/go/vendor/golang.org/x/sys/unix/zerrors_linux_amd64.go +883 -0
  842. data/go/vendor/golang.org/x/sys/unix/zerrors_linux_arm.go +888 -0
  843. data/go/vendor/golang.org/x/sys/unix/zerrors_linux_arm64.go +885 -0
  844. data/go/vendor/golang.org/x/sys/unix/zerrors_linux_loong64.go +875 -0
  845. data/go/vendor/golang.org/x/sys/unix/zerrors_linux_mips.go +889 -0
  846. data/go/vendor/golang.org/x/sys/unix/zerrors_linux_mips64.go +889 -0
  847. data/go/vendor/golang.org/x/sys/unix/zerrors_linux_mips64le.go +889 -0
  848. data/go/vendor/golang.org/x/sys/unix/zerrors_linux_mipsle.go +889 -0
  849. data/go/vendor/golang.org/x/sys/unix/zerrors_linux_ppc.go +941 -0
  850. data/go/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64.go +945 -0
  851. data/go/vendor/golang.org/x/sys/unix/zerrors_linux_ppc64le.go +945 -0
  852. data/go/vendor/golang.org/x/sys/unix/zerrors_linux_riscv64.go +885 -0
  853. data/go/vendor/golang.org/x/sys/unix/zerrors_linux_s390x.go +944 -0
  854. data/go/vendor/golang.org/x/sys/unix/zerrors_linux_sparc64.go +987 -0
  855. data/go/vendor/golang.org/x/sys/unix/zerrors_netbsd_386.go +1779 -0
  856. data/go/vendor/golang.org/x/sys/unix/zerrors_netbsd_amd64.go +1769 -0
  857. data/go/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm.go +1758 -0
  858. data/go/vendor/golang.org/x/sys/unix/zerrors_netbsd_arm64.go +1769 -0
  859. data/go/vendor/golang.org/x/sys/unix/zerrors_openbsd_386.go +1905 -0
  860. data/go/vendor/golang.org/x/sys/unix/zerrors_openbsd_amd64.go +1905 -0
  861. data/go/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm.go +1905 -0
  862. data/go/vendor/golang.org/x/sys/unix/zerrors_openbsd_arm64.go +1905 -0
  863. data/go/vendor/golang.org/x/sys/unix/zerrors_openbsd_mips64.go +1905 -0
  864. data/go/vendor/golang.org/x/sys/unix/zerrors_openbsd_ppc64.go +1904 -0
  865. data/go/vendor/golang.org/x/sys/unix/zerrors_openbsd_riscv64.go +1903 -0
  866. data/go/vendor/golang.org/x/sys/unix/zerrors_solaris_amd64.go +1556 -0
  867. data/go/vendor/golang.org/x/sys/unix/zerrors_zos_s390x.go +990 -0
  868. data/go/vendor/golang.org/x/sys/unix/zptrace_armnn_linux.go +40 -0
  869. data/go/vendor/golang.org/x/sys/unix/zptrace_linux_arm64.go +17 -0
  870. data/go/vendor/golang.org/x/sys/unix/zptrace_mipsnn_linux.go +49 -0
  871. data/go/vendor/golang.org/x/sys/unix/zptrace_mipsnnle_linux.go +49 -0
  872. data/go/vendor/golang.org/x/sys/unix/zptrace_x86_linux.go +79 -0
  873. data/go/vendor/golang.org/x/sys/unix/zsymaddr_zos_s390x.s +364 -0
  874. data/go/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc.go +1461 -0
  875. data/go/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64.go +1420 -0
  876. data/go/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gc.go +1188 -0
  877. data/go/vendor/golang.org/x/sys/unix/zsyscall_aix_ppc64_gccgo.go +1069 -0
  878. data/go/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.go +2728 -0
  879. data/go/vendor/golang.org/x/sys/unix/zsyscall_darwin_amd64.s +799 -0
  880. data/go/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.go +2728 -0
  881. data/go/vendor/golang.org/x/sys/unix/zsyscall_darwin_arm64.s +799 -0
  882. data/go/vendor/golang.org/x/sys/unix/zsyscall_dragonfly_amd64.go +1666 -0
  883. data/go/vendor/golang.org/x/sys/unix/zsyscall_freebsd_386.go +1886 -0
  884. data/go/vendor/golang.org/x/sys/unix/zsyscall_freebsd_amd64.go +1886 -0
  885. data/go/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm.go +1886 -0
  886. data/go/vendor/golang.org/x/sys/unix/zsyscall_freebsd_arm64.go +1886 -0
  887. data/go/vendor/golang.org/x/sys/unix/zsyscall_freebsd_riscv64.go +1886 -0
  888. data/go/vendor/golang.org/x/sys/unix/zsyscall_illumos_amd64.go +101 -0
  889. data/go/vendor/golang.org/x/sys/unix/zsyscall_linux.go +2267 -0
  890. data/go/vendor/golang.org/x/sys/unix/zsyscall_linux_386.go +469 -0
  891. data/go/vendor/golang.org/x/sys/unix/zsyscall_linux_amd64.go +636 -0
  892. data/go/vendor/golang.org/x/sys/unix/zsyscall_linux_arm.go +584 -0
  893. data/go/vendor/golang.org/x/sys/unix/zsyscall_linux_arm64.go +535 -0
  894. data/go/vendor/golang.org/x/sys/unix/zsyscall_linux_loong64.go +469 -0
  895. data/go/vendor/golang.org/x/sys/unix/zsyscall_linux_mips.go +636 -0
  896. data/go/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64.go +630 -0
  897. data/go/vendor/golang.org/x/sys/unix/zsyscall_linux_mips64le.go +619 -0
  898. data/go/vendor/golang.org/x/sys/unix/zsyscall_linux_mipsle.go +636 -0
  899. data/go/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc.go +641 -0
  900. data/go/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64.go +687 -0
  901. data/go/vendor/golang.org/x/sys/unix/zsyscall_linux_ppc64le.go +687 -0
  902. data/go/vendor/golang.org/x/sys/unix/zsyscall_linux_riscv64.go +531 -0
  903. data/go/vendor/golang.org/x/sys/unix/zsyscall_linux_s390x.go +478 -0
  904. data/go/vendor/golang.org/x/sys/unix/zsyscall_linux_sparc64.go +631 -0
  905. data/go/vendor/golang.org/x/sys/unix/zsyscall_netbsd_386.go +1848 -0
  906. data/go/vendor/golang.org/x/sys/unix/zsyscall_netbsd_amd64.go +1848 -0
  907. data/go/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm.go +1848 -0
  908. data/go/vendor/golang.org/x/sys/unix/zsyscall_netbsd_arm64.go +1848 -0
  909. data/go/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.go +2407 -0
  910. data/go/vendor/golang.org/x/sys/unix/zsyscall_openbsd_386.s +719 -0
  911. data/go/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.go +2407 -0
  912. data/go/vendor/golang.org/x/sys/unix/zsyscall_openbsd_amd64.s +719 -0
  913. data/go/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.go +2407 -0
  914. data/go/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm.s +719 -0
  915. data/go/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.go +2407 -0
  916. data/go/vendor/golang.org/x/sys/unix/zsyscall_openbsd_arm64.s +719 -0
  917. data/go/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.go +2407 -0
  918. data/go/vendor/golang.org/x/sys/unix/zsyscall_openbsd_mips64.s +719 -0
  919. data/go/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.go +2407 -0
  920. data/go/vendor/golang.org/x/sys/unix/zsyscall_openbsd_ppc64.s +862 -0
  921. data/go/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.go +2407 -0
  922. data/go/vendor/golang.org/x/sys/unix/zsyscall_openbsd_riscv64.s +719 -0
  923. data/go/vendor/golang.org/x/sys/unix/zsyscall_solaris_amd64.go +2217 -0
  924. data/go/vendor/golang.org/x/sys/unix/zsyscall_zos_s390x.go +3458 -0
  925. data/go/vendor/golang.org/x/sys/unix/zsysctl_openbsd_386.go +280 -0
  926. data/go/vendor/golang.org/x/sys/unix/zsysctl_openbsd_amd64.go +280 -0
  927. data/go/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm.go +280 -0
  928. data/go/vendor/golang.org/x/sys/unix/zsysctl_openbsd_arm64.go +280 -0
  929. data/go/vendor/golang.org/x/sys/unix/zsysctl_openbsd_mips64.go +280 -0
  930. data/go/vendor/golang.org/x/sys/unix/zsysctl_openbsd_ppc64.go +280 -0
  931. data/go/vendor/golang.org/x/sys/unix/zsysctl_openbsd_riscv64.go +281 -0
  932. data/go/vendor/golang.org/x/sys/unix/zsysnum_darwin_amd64.go +439 -0
  933. data/go/vendor/golang.org/x/sys/unix/zsysnum_darwin_arm64.go +437 -0
  934. data/go/vendor/golang.org/x/sys/unix/zsysnum_dragonfly_amd64.go +316 -0
  935. data/go/vendor/golang.org/x/sys/unix/zsysnum_freebsd_386.go +393 -0
  936. data/go/vendor/golang.org/x/sys/unix/zsysnum_freebsd_amd64.go +393 -0
  937. data/go/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm.go +393 -0
  938. data/go/vendor/golang.org/x/sys/unix/zsysnum_freebsd_arm64.go +393 -0
  939. data/go/vendor/golang.org/x/sys/unix/zsysnum_freebsd_riscv64.go +393 -0
  940. data/go/vendor/golang.org/x/sys/unix/zsysnum_linux_386.go +470 -0
  941. data/go/vendor/golang.org/x/sys/unix/zsysnum_linux_amd64.go +394 -0
  942. data/go/vendor/golang.org/x/sys/unix/zsysnum_linux_arm.go +434 -0
  943. data/go/vendor/golang.org/x/sys/unix/zsysnum_linux_arm64.go +337 -0
  944. data/go/vendor/golang.org/x/sys/unix/zsysnum_linux_loong64.go +334 -0
  945. data/go/vendor/golang.org/x/sys/unix/zsysnum_linux_mips.go +454 -0
  946. data/go/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64.go +384 -0
  947. data/go/vendor/golang.org/x/sys/unix/zsysnum_linux_mips64le.go +384 -0
  948. data/go/vendor/golang.org/x/sys/unix/zsysnum_linux_mipsle.go +454 -0
  949. data/go/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc.go +461 -0
  950. data/go/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64.go +433 -0
  951. data/go/vendor/golang.org/x/sys/unix/zsysnum_linux_ppc64le.go +433 -0
  952. data/go/vendor/golang.org/x/sys/unix/zsysnum_linux_riscv64.go +338 -0
  953. data/go/vendor/golang.org/x/sys/unix/zsysnum_linux_s390x.go +399 -0
  954. data/go/vendor/golang.org/x/sys/unix/zsysnum_linux_sparc64.go +413 -0
  955. data/go/vendor/golang.org/x/sys/unix/zsysnum_netbsd_386.go +274 -0
  956. data/go/vendor/golang.org/x/sys/unix/zsysnum_netbsd_amd64.go +274 -0
  957. data/go/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm.go +274 -0
  958. data/go/vendor/golang.org/x/sys/unix/zsysnum_netbsd_arm64.go +274 -0
  959. data/go/vendor/golang.org/x/sys/unix/zsysnum_openbsd_386.go +219 -0
  960. data/go/vendor/golang.org/x/sys/unix/zsysnum_openbsd_amd64.go +219 -0
  961. data/go/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm.go +219 -0
  962. data/go/vendor/golang.org/x/sys/unix/zsysnum_openbsd_arm64.go +218 -0
  963. data/go/vendor/golang.org/x/sys/unix/zsysnum_openbsd_mips64.go +221 -0
  964. data/go/vendor/golang.org/x/sys/unix/zsysnum_openbsd_ppc64.go +217 -0
  965. data/go/vendor/golang.org/x/sys/unix/zsysnum_openbsd_riscv64.go +218 -0
  966. data/go/vendor/golang.org/x/sys/unix/zsysnum_zos_s390x.go +2852 -0
  967. data/go/vendor/golang.org/x/sys/unix/ztypes_aix_ppc.go +353 -0
  968. data/go/vendor/golang.org/x/sys/unix/ztypes_aix_ppc64.go +357 -0
  969. data/go/vendor/golang.org/x/sys/unix/ztypes_darwin_amd64.go +878 -0
  970. data/go/vendor/golang.org/x/sys/unix/ztypes_darwin_arm64.go +878 -0
  971. data/go/vendor/golang.org/x/sys/unix/ztypes_dragonfly_amd64.go +473 -0
  972. data/go/vendor/golang.org/x/sys/unix/ztypes_freebsd_386.go +651 -0
  973. data/go/vendor/golang.org/x/sys/unix/ztypes_freebsd_amd64.go +656 -0
  974. data/go/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm.go +642 -0
  975. data/go/vendor/golang.org/x/sys/unix/ztypes_freebsd_arm64.go +636 -0
  976. data/go/vendor/golang.org/x/sys/unix/ztypes_freebsd_riscv64.go +638 -0
  977. data/go/vendor/golang.org/x/sys/unix/ztypes_linux.go +6475 -0
  978. data/go/vendor/golang.org/x/sys/unix/ztypes_linux_386.go +717 -0
  979. data/go/vendor/golang.org/x/sys/unix/ztypes_linux_amd64.go +731 -0
  980. data/go/vendor/golang.org/x/sys/unix/ztypes_linux_arm.go +711 -0
  981. data/go/vendor/golang.org/x/sys/unix/ztypes_linux_arm64.go +710 -0
  982. data/go/vendor/golang.org/x/sys/unix/ztypes_linux_loong64.go +711 -0
  983. data/go/vendor/golang.org/x/sys/unix/ztypes_linux_mips.go +716 -0
  984. data/go/vendor/golang.org/x/sys/unix/ztypes_linux_mips64.go +713 -0
  985. data/go/vendor/golang.org/x/sys/unix/ztypes_linux_mips64le.go +713 -0
  986. data/go/vendor/golang.org/x/sys/unix/ztypes_linux_mipsle.go +716 -0
  987. data/go/vendor/golang.org/x/sys/unix/ztypes_linux_ppc.go +724 -0
  988. data/go/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64.go +719 -0
  989. data/go/vendor/golang.org/x/sys/unix/ztypes_linux_ppc64le.go +719 -0
  990. data/go/vendor/golang.org/x/sys/unix/ztypes_linux_riscv64.go +798 -0
  991. data/go/vendor/golang.org/x/sys/unix/ztypes_linux_s390x.go +733 -0
  992. data/go/vendor/golang.org/x/sys/unix/ztypes_linux_sparc64.go +714 -0
  993. data/go/vendor/golang.org/x/sys/unix/ztypes_netbsd_386.go +585 -0
  994. data/go/vendor/golang.org/x/sys/unix/ztypes_netbsd_amd64.go +593 -0
  995. data/go/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm.go +590 -0
  996. data/go/vendor/golang.org/x/sys/unix/ztypes_netbsd_arm64.go +593 -0
  997. data/go/vendor/golang.org/x/sys/unix/ztypes_openbsd_386.go +568 -0
  998. data/go/vendor/golang.org/x/sys/unix/ztypes_openbsd_amd64.go +568 -0
  999. data/go/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm.go +575 -0
  1000. data/go/vendor/golang.org/x/sys/unix/ztypes_openbsd_arm64.go +568 -0
  1001. data/go/vendor/golang.org/x/sys/unix/ztypes_openbsd_mips64.go +568 -0
  1002. data/go/vendor/golang.org/x/sys/unix/ztypes_openbsd_ppc64.go +570 -0
  1003. data/go/vendor/golang.org/x/sys/unix/ztypes_openbsd_riscv64.go +570 -0
  1004. data/go/vendor/golang.org/x/sys/unix/ztypes_solaris_amd64.go +516 -0
  1005. data/go/vendor/golang.org/x/sys/unix/ztypes_zos_s390x.go +552 -0
  1006. data/go/vendor/golang.org/x/sys/windows/aliases.go +13 -0
  1007. data/go/vendor/golang.org/x/sys/windows/dll_windows.go +380 -0
  1008. data/go/vendor/golang.org/x/sys/windows/env_windows.go +57 -0
  1009. data/go/vendor/golang.org/x/sys/windows/eventlog.go +20 -0
  1010. data/go/vendor/golang.org/x/sys/windows/exec_windows.go +248 -0
  1011. data/go/vendor/golang.org/x/sys/windows/memory_windows.go +48 -0
  1012. data/go/vendor/golang.org/x/sys/windows/mkerrors.bash +70 -0
  1013. data/go/vendor/golang.org/x/sys/windows/mkknownfolderids.bash +27 -0
  1014. data/go/vendor/golang.org/x/sys/windows/mksyscall.go +9 -0
  1015. data/go/vendor/golang.org/x/sys/windows/race.go +30 -0
  1016. data/go/vendor/golang.org/x/sys/windows/race0.go +25 -0
  1017. data/go/vendor/golang.org/x/sys/windows/security_windows.go +1537 -0
  1018. data/go/vendor/golang.org/x/sys/windows/service.go +257 -0
  1019. data/go/vendor/golang.org/x/sys/windows/setupapi_windows.go +1425 -0
  1020. data/go/vendor/golang.org/x/sys/windows/str.go +22 -0
  1021. data/go/vendor/golang.org/x/sys/windows/syscall.go +104 -0
  1022. data/go/vendor/golang.org/x/sys/windows/syscall_windows.go +1952 -0
  1023. data/go/vendor/golang.org/x/sys/windows/types_windows.go +4057 -0
  1024. data/go/vendor/golang.org/x/sys/windows/types_windows_386.go +35 -0
  1025. data/go/vendor/golang.org/x/sys/windows/types_windows_amd64.go +34 -0
  1026. data/go/vendor/golang.org/x/sys/windows/types_windows_arm.go +35 -0
  1027. data/go/vendor/golang.org/x/sys/windows/types_windows_arm64.go +34 -0
  1028. data/go/vendor/golang.org/x/sys/windows/zerrors_windows.go +9468 -0
  1029. data/go/vendor/golang.org/x/sys/windows/zknownfolderids_windows.go +149 -0
  1030. data/go/vendor/golang.org/x/sys/windows/zsyscall_windows.go +4828 -0
  1031. data/go/vendor/golang.org/x/text/LICENSE +27 -0
  1032. data/go/vendor/golang.org/x/text/PATENTS +22 -0
  1033. data/go/vendor/golang.org/x/text/secure/bidirule/bidirule.go +340 -0
  1034. data/go/vendor/golang.org/x/text/transform/transform.go +709 -0
  1035. data/go/vendor/golang.org/x/text/unicode/bidi/bidi.go +359 -0
  1036. data/go/vendor/golang.org/x/text/unicode/bidi/bracket.go +335 -0
  1037. data/go/vendor/golang.org/x/text/unicode/bidi/core.go +1064 -0
  1038. data/go/vendor/golang.org/x/text/unicode/bidi/prop.go +206 -0
  1039. data/go/vendor/golang.org/x/text/unicode/bidi/tables15.0.0.go +2042 -0
  1040. data/go/vendor/golang.org/x/text/unicode/bidi/tables17.0.0.go +2135 -0
  1041. data/go/vendor/golang.org/x/text/unicode/bidi/trieval.go +48 -0
  1042. data/go/vendor/golang.org/x/text/unicode/norm/composition.go +512 -0
  1043. data/go/vendor/golang.org/x/text/unicode/norm/forminfo.go +296 -0
  1044. data/go/vendor/golang.org/x/text/unicode/norm/input.go +109 -0
  1045. data/go/vendor/golang.org/x/text/unicode/norm/iter.go +454 -0
  1046. data/go/vendor/golang.org/x/text/unicode/norm/normalize.go +610 -0
  1047. data/go/vendor/golang.org/x/text/unicode/norm/readwriter.go +125 -0
  1048. data/go/vendor/golang.org/x/text/unicode/norm/tables15.0.0.go +7907 -0
  1049. data/go/vendor/golang.org/x/text/unicode/norm/tables17.0.0.go +8104 -0
  1050. data/go/vendor/golang.org/x/text/unicode/norm/transform.go +88 -0
  1051. data/go/vendor/golang.org/x/text/unicode/norm/trie.go +54 -0
  1052. data/go/vendor/modules.txt +63 -0
  1053. data/lib/puma_plus/core/version.rb +13 -0
  1054. data/lib/puma_plus/core.rb +60 -0
  1055. metadata +1099 -0
@@ -0,0 +1,1143 @@
1
+ package ackhandler
2
+
3
+ import (
4
+ "errors"
5
+ "fmt"
6
+ "time"
7
+
8
+ "github.com/quic-go/quic-go/internal/congestion"
9
+ "github.com/quic-go/quic-go/internal/monotime"
10
+ "github.com/quic-go/quic-go/internal/protocol"
11
+ "github.com/quic-go/quic-go/internal/qerr"
12
+ "github.com/quic-go/quic-go/internal/utils"
13
+ "github.com/quic-go/quic-go/internal/wire"
14
+ "github.com/quic-go/quic-go/qlog"
15
+ "github.com/quic-go/quic-go/qlogwriter"
16
+ )
17
+
18
+ const (
19
+ // Maximum reordering in time space before time based loss detection considers a packet lost.
20
+ // Specified as an RTT multiplier.
21
+ timeThreshold = 9.0 / 8
22
+ // Maximum reordering in packets before packet threshold loss detection considers a packet lost.
23
+ packetThreshold = 3
24
+ // Before validating the client's address, the server won't send more than 3x bytes than it received.
25
+ amplificationFactor = 3
26
+ // We use Retry packets to derive an RTT estimate. Make sure we don't set the RTT to a super low value yet.
27
+ minRTTAfterRetry = 5 * time.Millisecond
28
+ // The PTO duration uses exponential backoff, but is truncated to a maximum value, as allowed by RFC 8961, section 4.4.
29
+ maxPTODuration = 60 * time.Second
30
+ )
31
+
32
+ // Path probe packets are declared lost after this time.
33
+ const pathProbePacketLossTimeout = time.Second
34
+
35
+ type packetNumberSpace struct {
36
+ history sentPacketHistory
37
+ pns packetNumberGenerator
38
+
39
+ lossTime monotime.Time
40
+ lastAckElicitingPacketTime monotime.Time
41
+
42
+ largestAcked protocol.PacketNumber
43
+ largestSent protocol.PacketNumber
44
+ }
45
+
46
+ func newPacketNumberSpace(initialPN protocol.PacketNumber, isAppData bool) *packetNumberSpace {
47
+ var pns packetNumberGenerator
48
+ if isAppData {
49
+ pns = newSkippingPacketNumberGenerator(initialPN, protocol.SkipPacketInitialPeriod, protocol.SkipPacketMaxPeriod)
50
+ } else {
51
+ pns = newSequentialPacketNumberGenerator(initialPN)
52
+ }
53
+ return &packetNumberSpace{
54
+ history: *newSentPacketHistory(isAppData),
55
+ pns: pns,
56
+ largestSent: protocol.InvalidPacketNumber,
57
+ largestAcked: protocol.InvalidPacketNumber,
58
+ }
59
+ }
60
+
61
+ type alarmTimer struct {
62
+ Time monotime.Time
63
+ TimerType qlog.TimerType
64
+ EncryptionLevel protocol.EncryptionLevel
65
+ }
66
+
67
+ type sentPacketHandler struct {
68
+ initialPackets *packetNumberSpace
69
+ handshakePackets *packetNumberSpace
70
+ appDataPackets *packetNumberSpace
71
+ lostPackets lostPacketTracker // only for application-data packet number space
72
+ // send time of the largest acknowledged packet, across all packet number spaces
73
+ largestAckedTime monotime.Time
74
+
75
+ // Do we know that the peer completed address validation yet?
76
+ // Always true for the server.
77
+ peerCompletedAddressValidation bool
78
+ bytesReceived protocol.ByteCount
79
+ bytesSent protocol.ByteCount
80
+ // Have we validated the peer's address yet?
81
+ // Always true for the client.
82
+ peerAddressValidated bool
83
+
84
+ handshakeConfirmed bool
85
+
86
+ ignorePacketsBelow func(protocol.PacketNumber)
87
+
88
+ ackedPackets []packetWithPacketNumber // to avoid allocations in detectAndRemoveAckedPackets
89
+
90
+ bytesInFlight protocol.ByteCount
91
+
92
+ congestion congestion.SendAlgorithmWithDebugInfos
93
+ rttStats *utils.RTTStats
94
+ connStats *utils.ConnectionStats
95
+
96
+ // The number of times a PTO has been sent without receiving an ack.
97
+ ptoCount uint32
98
+ ptoMode SendMode
99
+ // The number of PTO probe packets that should be sent.
100
+ // Only applies to the application-data packet number space.
101
+ numProbesToSend int
102
+
103
+ // The alarm timeout
104
+ alarm alarmTimer
105
+
106
+ enableECN bool
107
+ ecnTracker ecnHandler
108
+
109
+ perspective protocol.Perspective
110
+
111
+ qlogger qlogwriter.Recorder
112
+ lastMetrics qlog.MetricsUpdated
113
+ logger utils.Logger
114
+ }
115
+
116
+ var _ SentPacketHandler = &sentPacketHandler{}
117
+
118
+ // clientAddressValidated indicates whether the address was validated beforehand by an address validation token.
119
+ // If the address was validated, the amplification limit doesn't apply. It has no effect for a client.
120
+ func NewSentPacketHandler(
121
+ initialPN protocol.PacketNumber,
122
+ initialMaxDatagramSize protocol.ByteCount,
123
+ rttStats *utils.RTTStats,
124
+ connStats *utils.ConnectionStats,
125
+ clientAddressValidated bool,
126
+ enableECN bool,
127
+ ignorePacketsBelow func(protocol.PacketNumber),
128
+ pers protocol.Perspective,
129
+ qlogger qlogwriter.Recorder,
130
+ logger utils.Logger,
131
+ ) SentPacketHandler {
132
+ congestion := congestion.NewCubicSender(
133
+ congestion.DefaultClock{},
134
+ rttStats,
135
+ connStats,
136
+ initialMaxDatagramSize,
137
+ true, // use Reno
138
+ qlogger,
139
+ )
140
+
141
+ h := &sentPacketHandler{
142
+ peerCompletedAddressValidation: pers == protocol.PerspectiveServer,
143
+ peerAddressValidated: pers == protocol.PerspectiveClient || clientAddressValidated,
144
+ initialPackets: newPacketNumberSpace(initialPN, false),
145
+ handshakePackets: newPacketNumberSpace(0, false),
146
+ appDataPackets: newPacketNumberSpace(0, true),
147
+ lostPackets: *newLostPacketTracker(64),
148
+ rttStats: rttStats,
149
+ connStats: connStats,
150
+ congestion: congestion,
151
+ ignorePacketsBelow: ignorePacketsBelow,
152
+ perspective: pers,
153
+ qlogger: qlogger,
154
+ logger: logger,
155
+ }
156
+ if enableECN {
157
+ h.enableECN = true
158
+ h.ecnTracker = newECNTracker(logger, qlogger)
159
+ }
160
+ return h
161
+ }
162
+
163
+ func (h *sentPacketHandler) removeFromBytesInFlight(p *packet) {
164
+ if p.includedInBytesInFlight {
165
+ if p.Length > h.bytesInFlight {
166
+ panic("negative bytes_in_flight")
167
+ }
168
+ h.bytesInFlight -= p.Length
169
+ p.includedInBytesInFlight = false
170
+ }
171
+ }
172
+
173
+ func (h *sentPacketHandler) DropPackets(encLevel protocol.EncryptionLevel, now monotime.Time) {
174
+ // The server won't await address validation after the handshake is confirmed.
175
+ // This applies even if we didn't receive an ACK for a Handshake packet.
176
+ if h.perspective == protocol.PerspectiveClient && encLevel == protocol.EncryptionHandshake {
177
+ h.peerCompletedAddressValidation = true
178
+ }
179
+ // remove outstanding packets from bytes_in_flight
180
+ if encLevel == protocol.EncryptionInitial || encLevel == protocol.EncryptionHandshake {
181
+ pnSpace := h.getPacketNumberSpace(encLevel)
182
+ // We might already have dropped this packet number space.
183
+ if pnSpace == nil {
184
+ return
185
+ }
186
+ for _, p := range pnSpace.history.Packets() {
187
+ h.removeFromBytesInFlight(p)
188
+ }
189
+ }
190
+ // drop the packet history
191
+ //nolint:exhaustive // Not every packet number space can be dropped.
192
+ switch encLevel {
193
+ case protocol.EncryptionInitial:
194
+ h.initialPackets = nil
195
+ case protocol.EncryptionHandshake:
196
+ // Dropping the handshake packet number space means that the handshake is confirmed,
197
+ // see section 4.9.2 of RFC 9001.
198
+ h.handshakeConfirmed = true
199
+ h.handshakePackets = nil
200
+ case protocol.Encryption0RTT:
201
+ // This function is only called when 0-RTT is rejected,
202
+ // and not when the client drops 0-RTT keys when the handshake completes.
203
+ // When 0-RTT is rejected, all application data sent so far becomes invalid.
204
+ // Delete the packets from the history and remove them from bytes_in_flight.
205
+ for pn, p := range h.appDataPackets.history.Packets() {
206
+ if p.EncryptionLevel != protocol.Encryption0RTT {
207
+ break
208
+ }
209
+ h.removeFromBytesInFlight(p)
210
+ h.appDataPackets.history.Remove(pn)
211
+ }
212
+ default:
213
+ panic(fmt.Sprintf("Cannot drop keys for encryption level %s", encLevel))
214
+ }
215
+ if h.qlogger != nil && h.ptoCount != 0 {
216
+ h.qlogger.RecordEvent(qlog.PTOCountUpdated{PTOCount: 0})
217
+ }
218
+ h.ptoCount = 0
219
+ h.numProbesToSend = 0
220
+ h.ptoMode = SendNone
221
+ h.setLossDetectionTimer(now)
222
+ }
223
+
224
+ func (h *sentPacketHandler) ReceivedBytes(n protocol.ByteCount, t monotime.Time) {
225
+ h.connStats.BytesReceived.Add(uint64(n))
226
+ wasAmplificationLimit := h.isAmplificationLimited()
227
+ h.bytesReceived += n
228
+ if wasAmplificationLimit && !h.isAmplificationLimited() {
229
+ h.setLossDetectionTimer(t)
230
+ }
231
+ }
232
+
233
+ func (h *sentPacketHandler) ReceivedPacket(l protocol.EncryptionLevel, t monotime.Time) {
234
+ h.connStats.PacketsReceived.Add(1)
235
+ if h.perspective == protocol.PerspectiveServer && l == protocol.EncryptionHandshake && !h.peerAddressValidated {
236
+ h.peerAddressValidated = true
237
+ h.setLossDetectionTimer(t)
238
+ }
239
+ }
240
+
241
+ func (h *sentPacketHandler) packetsInFlight() int {
242
+ packetsInFlight := h.appDataPackets.history.NumOutstanding()
243
+ if h.handshakePackets != nil {
244
+ packetsInFlight += h.handshakePackets.history.NumOutstanding()
245
+ }
246
+ if h.initialPackets != nil {
247
+ packetsInFlight += h.initialPackets.history.NumOutstanding()
248
+ }
249
+ return packetsInFlight
250
+ }
251
+
252
+ func (h *sentPacketHandler) SentPacket(
253
+ t monotime.Time,
254
+ pn, largestAcked protocol.PacketNumber,
255
+ streamFrames []StreamFrame,
256
+ frames []Frame,
257
+ encLevel protocol.EncryptionLevel,
258
+ ecn protocol.ECN,
259
+ size protocol.ByteCount,
260
+ isPathMTUProbePacket bool,
261
+ isPathProbePacket bool,
262
+ ) {
263
+ h.bytesSent += size
264
+ h.connStats.BytesSent.Add(uint64(size))
265
+ h.connStats.PacketsSent.Add(1)
266
+
267
+ pnSpace := h.getPacketNumberSpace(encLevel)
268
+ if h.logger.Debug() && (pnSpace.history.HasOutstandingPackets() || pnSpace.history.HasOutstandingPathProbes()) {
269
+ for p := max(0, pnSpace.largestSent+1); p < pn; p++ {
270
+ h.logger.Debugf("Skipping packet number %d", p)
271
+ }
272
+ }
273
+
274
+ pnSpace.largestSent = pn
275
+
276
+ p := getPacket()
277
+ p.SendTime = t
278
+ p.EncryptionLevel = encLevel
279
+ p.Length = size
280
+ p.Frames = frames
281
+ p.LargestAcked = largestAcked
282
+ p.StreamFrames = streamFrames
283
+ p.IsPathMTUProbePacket = isPathMTUProbePacket
284
+ p.isPathProbePacket = isPathProbePacket
285
+ isAckEliciting := p.IsAckEliciting()
286
+
287
+ if isPathProbePacket {
288
+ pnSpace.history.SentPathProbePacket(pn, p)
289
+ h.setLossDetectionTimer(t)
290
+ return
291
+ }
292
+ if isAckEliciting {
293
+ pnSpace.lastAckElicitingPacketTime = t
294
+ h.bytesInFlight += size
295
+ p.includedInBytesInFlight = true
296
+ if h.numProbesToSend > 0 {
297
+ h.numProbesToSend--
298
+ }
299
+ }
300
+ h.congestion.OnPacketSent(t, h.bytesInFlight, pn, size, isAckEliciting)
301
+
302
+ if encLevel == protocol.Encryption1RTT && h.ecnTracker != nil {
303
+ h.ecnTracker.SentPacket(pn, ecn)
304
+ }
305
+
306
+ pnSpace.history.SentPacket(pn, p)
307
+ if !isAckEliciting {
308
+ if !h.peerCompletedAddressValidation {
309
+ h.setLossDetectionTimer(t)
310
+ }
311
+ return
312
+ }
313
+ if h.qlogger != nil {
314
+ h.qlogMetricsUpdated()
315
+ }
316
+ h.setLossDetectionTimer(t)
317
+ }
318
+
319
+ func (h *sentPacketHandler) qlogMetricsUpdated() {
320
+ var metricsUpdatedEvent qlog.MetricsUpdated
321
+ var updated bool
322
+ if h.rttStats.HasMeasurement() {
323
+ if h.lastMetrics.MinRTT != h.rttStats.MinRTT() {
324
+ metricsUpdatedEvent.MinRTT = h.rttStats.MinRTT()
325
+ h.lastMetrics.MinRTT = metricsUpdatedEvent.MinRTT
326
+ updated = true
327
+ }
328
+ if h.lastMetrics.SmoothedRTT != h.rttStats.SmoothedRTT() {
329
+ metricsUpdatedEvent.SmoothedRTT = h.rttStats.SmoothedRTT()
330
+ h.lastMetrics.SmoothedRTT = metricsUpdatedEvent.SmoothedRTT
331
+ updated = true
332
+ }
333
+ if h.lastMetrics.LatestRTT != h.rttStats.LatestRTT() {
334
+ metricsUpdatedEvent.LatestRTT = h.rttStats.LatestRTT()
335
+ h.lastMetrics.LatestRTT = metricsUpdatedEvent.LatestRTT
336
+ updated = true
337
+ }
338
+ if h.lastMetrics.RTTVariance != h.rttStats.MeanDeviation() {
339
+ metricsUpdatedEvent.RTTVariance = h.rttStats.MeanDeviation()
340
+ h.lastMetrics.RTTVariance = metricsUpdatedEvent.RTTVariance
341
+ updated = true
342
+ }
343
+ }
344
+ if cwnd := h.congestion.GetCongestionWindow(); h.lastMetrics.CongestionWindow != int(cwnd) {
345
+ metricsUpdatedEvent.CongestionWindow = int(cwnd)
346
+ h.lastMetrics.CongestionWindow = metricsUpdatedEvent.CongestionWindow
347
+ updated = true
348
+ }
349
+ if h.lastMetrics.BytesInFlight != int(h.bytesInFlight) {
350
+ metricsUpdatedEvent.BytesInFlight = int(h.bytesInFlight)
351
+ h.lastMetrics.BytesInFlight = metricsUpdatedEvent.BytesInFlight
352
+ updated = true
353
+ }
354
+ packetsInFlight := h.packetsInFlight()
355
+ if h.lastMetrics.PacketsInFlight != packetsInFlight {
356
+ metricsUpdatedEvent.PacketsInFlight = packetsInFlight
357
+ h.lastMetrics.PacketsInFlight = metricsUpdatedEvent.PacketsInFlight
358
+ updated = true
359
+ }
360
+ if updated {
361
+ h.qlogger.RecordEvent(metricsUpdatedEvent)
362
+ }
363
+ }
364
+
365
+ func (h *sentPacketHandler) getPacketNumberSpace(encLevel protocol.EncryptionLevel) *packetNumberSpace {
366
+ switch encLevel {
367
+ case protocol.EncryptionInitial:
368
+ return h.initialPackets
369
+ case protocol.EncryptionHandshake:
370
+ return h.handshakePackets
371
+ case protocol.Encryption0RTT, protocol.Encryption1RTT:
372
+ return h.appDataPackets
373
+ default:
374
+ panic("invalid packet number space")
375
+ }
376
+ }
377
+
378
+ func (h *sentPacketHandler) ReceivedAck(ack *wire.AckFrame, encLevel protocol.EncryptionLevel, rcvTime monotime.Time) (bool /* contained 1-RTT packet */, error) {
379
+ pnSpace := h.getPacketNumberSpace(encLevel)
380
+
381
+ largestAcked := ack.LargestAcked()
382
+ if largestAcked > pnSpace.largestSent {
383
+ return false, &qerr.TransportError{
384
+ ErrorCode: qerr.ProtocolViolation,
385
+ ErrorMessage: "received ACK for an unsent packet",
386
+ }
387
+ }
388
+
389
+ // Servers complete address validation when a protected packet is received.
390
+ if h.perspective == protocol.PerspectiveClient && !h.peerCompletedAddressValidation &&
391
+ (encLevel == protocol.EncryptionHandshake || encLevel == protocol.Encryption1RTT) {
392
+ h.peerCompletedAddressValidation = true
393
+ h.logger.Debugf("Peer doesn't await address validation any longer.")
394
+ // Make sure that the timer is reset, even if this ACK doesn't acknowledge any (ack-eliciting) packets.
395
+ h.setLossDetectionTimer(rcvTime)
396
+ }
397
+
398
+ priorInFlight := h.bytesInFlight
399
+ ackedPackets, hasAckEliciting, err := h.detectAndRemoveAckedPackets(ack, encLevel)
400
+ if err != nil || len(ackedPackets) == 0 {
401
+ return false, err
402
+ }
403
+ // update the RTT, if:
404
+ // * the largest acked is newly acknowledged, AND
405
+ // * at least one new ack-eliciting packet was acknowledged
406
+ if len(ackedPackets) > 0 {
407
+ if p := ackedPackets[len(ackedPackets)-1]; p.PacketNumber == ack.LargestAcked() && !p.isPathProbePacket && hasAckEliciting {
408
+ // don't use the ack delay for Initial and Handshake packets
409
+ var ackDelay time.Duration
410
+ if encLevel == protocol.Encryption1RTT {
411
+ ackDelay = min(ack.DelayTime, h.rttStats.MaxAckDelay())
412
+ }
413
+ if h.largestAckedTime.IsZero() || !p.SendTime.Before(h.largestAckedTime) {
414
+ h.rttStats.UpdateRTT(rcvTime.Sub(p.SendTime), ackDelay)
415
+ if h.logger.Debug() {
416
+ h.logger.Debugf("\tupdated RTT: %s (σ: %s)", h.rttStats.SmoothedRTT(), h.rttStats.MeanDeviation())
417
+ }
418
+ h.largestAckedTime = p.SendTime
419
+ }
420
+ h.congestion.MaybeExitSlowStart()
421
+ }
422
+ }
423
+
424
+ // Only inform the ECN tracker about new 1-RTT ACKs if the ACK increases the largest acked.
425
+ if encLevel == protocol.Encryption1RTT && h.ecnTracker != nil && largestAcked > pnSpace.largestAcked {
426
+ congested := h.ecnTracker.HandleNewlyAcked(ackedPackets, int64(ack.ECT0), int64(ack.ECT1), int64(ack.ECNCE))
427
+ if congested {
428
+ h.congestion.OnCongestionEvent(largestAcked, 0, priorInFlight)
429
+ }
430
+ }
431
+
432
+ pnSpace.largestAcked = max(pnSpace.largestAcked, largestAcked)
433
+
434
+ h.detectLostPackets(rcvTime, encLevel)
435
+ if encLevel == protocol.Encryption1RTT {
436
+ h.detectLostPathProbes(rcvTime)
437
+ }
438
+ var acked1RTTPacket bool
439
+ for _, p := range ackedPackets {
440
+ if p.includedInBytesInFlight {
441
+ h.congestion.OnPacketAcked(p.PacketNumber, p.Length, priorInFlight, rcvTime)
442
+ }
443
+ if p.EncryptionLevel == protocol.Encryption1RTT {
444
+ acked1RTTPacket = true
445
+ }
446
+ h.removeFromBytesInFlight(p.packet)
447
+ if !p.isPathProbePacket {
448
+ putPacket(p.packet)
449
+ }
450
+ }
451
+
452
+ // detect spurious losses for application data packets, if the ACK was not reordered
453
+ if encLevel == protocol.Encryption1RTT && largestAcked == pnSpace.largestAcked {
454
+ h.detectSpuriousLosses(
455
+ ack,
456
+ rcvTime.Add(-min(ack.DelayTime, h.rttStats.MaxAckDelay())),
457
+ )
458
+ // clean up lost packet history
459
+ h.lostPackets.DeleteBefore(rcvTime.Add(-3 * h.rttStats.PTO(false)))
460
+ }
461
+
462
+ // After this point, we must not use ackedPackets any longer!
463
+ // We've already returned the buffers.
464
+ ackedPackets = nil //nolint:ineffassign // This is just to be on the safe side.
465
+ clear(h.ackedPackets) // make sure the memory is released
466
+ h.ackedPackets = h.ackedPackets[:0]
467
+
468
+ // Reset the pto_count unless the client is unsure if the server has validated the client's address.
469
+ if h.peerCompletedAddressValidation {
470
+ if h.qlogger != nil && h.ptoCount != 0 {
471
+ h.qlogger.RecordEvent(qlog.PTOCountUpdated{PTOCount: 0})
472
+ }
473
+ h.ptoCount = 0
474
+ }
475
+ h.numProbesToSend = 0
476
+
477
+ if h.qlogger != nil {
478
+ h.qlogMetricsUpdated()
479
+ }
480
+
481
+ h.setLossDetectionTimer(rcvTime)
482
+ return acked1RTTPacket, nil
483
+ }
484
+
485
+ func (h *sentPacketHandler) detectSpuriousLosses(ack *wire.AckFrame, ackTime monotime.Time) {
486
+ var maxPacketReordering protocol.PacketNumber
487
+ var maxTimeReordering time.Duration
488
+ ackRangeIdx := len(ack.AckRanges) - 1
489
+ var spuriousLosses []protocol.PacketNumber
490
+ for pn, sendTime := range h.lostPackets.All() {
491
+ ackRange := ack.AckRanges[ackRangeIdx]
492
+ for pn > ackRange.Largest {
493
+ // this should never happen, since detectSpuriousLosses is only called for ACKs that increase the largest acked
494
+ if ackRangeIdx == 0 {
495
+ break
496
+ }
497
+ ackRangeIdx--
498
+ ackRange = ack.AckRanges[ackRangeIdx]
499
+ }
500
+ if pn < ackRange.Smallest {
501
+ continue
502
+ }
503
+ if pn <= ackRange.Largest {
504
+ packetReordering := h.appDataPackets.history.Difference(ack.LargestAcked(), pn)
505
+ timeReordering := ackTime.Sub(sendTime)
506
+ maxPacketReordering = max(maxPacketReordering, packetReordering)
507
+ maxTimeReordering = max(maxTimeReordering, timeReordering)
508
+
509
+ if h.qlogger != nil {
510
+ h.qlogger.RecordEvent(qlog.SpuriousLoss{
511
+ EncryptionLevel: protocol.Encryption1RTT,
512
+ PacketNumber: pn,
513
+ PacketReordering: uint64(packetReordering),
514
+ TimeReordering: timeReordering,
515
+ })
516
+ }
517
+ spuriousLosses = append(spuriousLosses, pn)
518
+ }
519
+ }
520
+ for _, pn := range spuriousLosses {
521
+ h.lostPackets.Delete(pn)
522
+ }
523
+ }
524
+
525
+ // Packets are returned in ascending packet number order.
526
+ func (h *sentPacketHandler) detectAndRemoveAckedPackets(
527
+ ack *wire.AckFrame,
528
+ encLevel protocol.EncryptionLevel,
529
+ ) (_ []packetWithPacketNumber, hasAckEliciting bool, _ error) {
530
+ if len(h.ackedPackets) > 0 {
531
+ return nil, false, errors.New("ackhandler BUG: ackedPackets slice not empty")
532
+ }
533
+
534
+ pnSpace := h.getPacketNumberSpace(encLevel)
535
+
536
+ if encLevel == protocol.Encryption1RTT {
537
+ for p := range pnSpace.history.SkippedPackets() {
538
+ if ack.AcksPacket(p) {
539
+ return nil, false, &qerr.TransportError{
540
+ ErrorCode: qerr.ProtocolViolation,
541
+ ErrorMessage: fmt.Sprintf("received an ACK for skipped packet number: %d (%s)", p, encLevel),
542
+ }
543
+ }
544
+ }
545
+ }
546
+
547
+ var ackRangeIndex int
548
+ lowestAcked := ack.LowestAcked()
549
+ largestAcked := ack.LargestAcked()
550
+ for pn, p := range pnSpace.history.Packets() {
551
+ // ignore packets below the lowest acked
552
+ if pn < lowestAcked {
553
+ continue
554
+ }
555
+ if pn > largestAcked {
556
+ break
557
+ }
558
+
559
+ if ack.HasMissingRanges() {
560
+ ackRange := ack.AckRanges[len(ack.AckRanges)-1-ackRangeIndex]
561
+
562
+ for pn > ackRange.Largest && ackRangeIndex < len(ack.AckRanges)-1 {
563
+ ackRangeIndex++
564
+ ackRange = ack.AckRanges[len(ack.AckRanges)-1-ackRangeIndex]
565
+ }
566
+
567
+ if pn < ackRange.Smallest { // packet not contained in ACK range
568
+ continue
569
+ }
570
+ if pn > ackRange.Largest {
571
+ return nil, false, fmt.Errorf("BUG: ackhandler would have acked wrong packet %d, while evaluating range %d -> %d", pn, ackRange.Smallest, ackRange.Largest)
572
+ }
573
+ }
574
+ if p.isPathProbePacket {
575
+ probePacket := pnSpace.history.RemovePathProbe(pn)
576
+ // the probe packet might already have been declared lost
577
+ if probePacket != nil {
578
+ h.ackedPackets = append(h.ackedPackets, packetWithPacketNumber{PacketNumber: pn, packet: probePacket})
579
+ }
580
+ continue
581
+ }
582
+ if p.IsAckEliciting() {
583
+ hasAckEliciting = true
584
+ }
585
+ h.ackedPackets = append(h.ackedPackets, packetWithPacketNumber{PacketNumber: pn, packet: p})
586
+ }
587
+ if h.logger.Debug() && len(h.ackedPackets) > 0 {
588
+ pns := make([]protocol.PacketNumber, len(h.ackedPackets))
589
+ for i, p := range h.ackedPackets {
590
+ pns[i] = p.PacketNumber
591
+ }
592
+ h.logger.Debugf("\tnewly acked packets (%d): %d", len(pns), pns)
593
+ }
594
+
595
+ for _, p := range h.ackedPackets {
596
+ if p.LargestAcked != protocol.InvalidPacketNumber && encLevel == protocol.Encryption1RTT && h.ignorePacketsBelow != nil {
597
+ h.ignorePacketsBelow(p.LargestAcked + 1)
598
+ }
599
+
600
+ for _, f := range p.Frames {
601
+ if f.Handler != nil {
602
+ f.Handler.OnAcked(f.Frame)
603
+ }
604
+ }
605
+ for _, f := range p.StreamFrames {
606
+ if f.Handler != nil {
607
+ f.Handler.OnAcked(f.Frame)
608
+ }
609
+ }
610
+ if err := pnSpace.history.Remove(p.PacketNumber); err != nil {
611
+ return nil, false, err
612
+ }
613
+ }
614
+ // TODO: add support for the transport:packets_acked qlog event
615
+ return h.ackedPackets, hasAckEliciting, nil
616
+ }
617
+
618
+ func (h *sentPacketHandler) getLossTimeAndSpace() (monotime.Time, protocol.EncryptionLevel) {
619
+ var encLevel protocol.EncryptionLevel
620
+ var lossTime monotime.Time
621
+
622
+ if h.initialPackets != nil {
623
+ lossTime = h.initialPackets.lossTime
624
+ encLevel = protocol.EncryptionInitial
625
+ }
626
+ if h.handshakePackets != nil && (lossTime.IsZero() || (!h.handshakePackets.lossTime.IsZero() && h.handshakePackets.lossTime.Before(lossTime))) {
627
+ lossTime = h.handshakePackets.lossTime
628
+ encLevel = protocol.EncryptionHandshake
629
+ }
630
+ if lossTime.IsZero() || (!h.appDataPackets.lossTime.IsZero() && h.appDataPackets.lossTime.Before(lossTime)) {
631
+ lossTime = h.appDataPackets.lossTime
632
+ encLevel = protocol.Encryption1RTT
633
+ }
634
+ return lossTime, encLevel
635
+ }
636
+
637
+ func (h *sentPacketHandler) getScaledPTO(includeMaxAckDelay bool) time.Duration {
638
+ pto := h.rttStats.PTO(includeMaxAckDelay) << h.ptoCount
639
+ if pto > maxPTODuration || pto <= 0 {
640
+ return maxPTODuration
641
+ }
642
+ return pto
643
+ }
644
+
645
+ // same logic as getLossTimeAndSpace, but for lastAckElicitingPacketTime instead of lossTime
646
+ func (h *sentPacketHandler) getPTOTimeAndSpace(now monotime.Time) (pto monotime.Time, encLevel protocol.EncryptionLevel) {
647
+ // We only send application data probe packets once the handshake is confirmed,
648
+ // because before that, we don't have the keys to decrypt ACKs sent in 1-RTT packets.
649
+ if !h.handshakeConfirmed && !h.hasOutstandingCryptoPackets() {
650
+ if h.peerCompletedAddressValidation {
651
+ return
652
+ }
653
+ t := now.Add(h.getScaledPTO(false))
654
+ if h.initialPackets != nil {
655
+ return t, protocol.EncryptionInitial
656
+ }
657
+ return t, protocol.EncryptionHandshake
658
+ }
659
+
660
+ if h.initialPackets != nil && h.initialPackets.history.HasOutstandingPackets() &&
661
+ !h.initialPackets.lastAckElicitingPacketTime.IsZero() {
662
+ encLevel = protocol.EncryptionInitial
663
+ if t := h.initialPackets.lastAckElicitingPacketTime; !t.IsZero() {
664
+ pto = t.Add(h.getScaledPTO(false))
665
+ }
666
+ }
667
+ if h.handshakePackets != nil && h.handshakePackets.history.HasOutstandingPackets() &&
668
+ !h.handshakePackets.lastAckElicitingPacketTime.IsZero() {
669
+ t := h.handshakePackets.lastAckElicitingPacketTime.Add(h.getScaledPTO(false))
670
+ if pto.IsZero() || (!t.IsZero() && t.Before(pto)) {
671
+ pto = t
672
+ encLevel = protocol.EncryptionHandshake
673
+ }
674
+ }
675
+ if h.handshakeConfirmed && h.appDataPackets.history.HasOutstandingPackets() &&
676
+ !h.appDataPackets.lastAckElicitingPacketTime.IsZero() {
677
+ t := h.appDataPackets.lastAckElicitingPacketTime.Add(h.getScaledPTO(true))
678
+ if pto.IsZero() || (!t.IsZero() && t.Before(pto)) {
679
+ pto = t
680
+ encLevel = protocol.Encryption1RTT
681
+ }
682
+ }
683
+ return pto, encLevel
684
+ }
685
+
686
+ func (h *sentPacketHandler) hasOutstandingCryptoPackets() bool {
687
+ if h.initialPackets != nil && h.initialPackets.history.HasOutstandingPackets() {
688
+ return true
689
+ }
690
+ if h.handshakePackets != nil && h.handshakePackets.history.HasOutstandingPackets() {
691
+ return true
692
+ }
693
+ return false
694
+ }
695
+
696
+ func (h *sentPacketHandler) setLossDetectionTimer(now monotime.Time) {
697
+ oldAlarm := h.alarm // only needed in case tracing is enabled
698
+ newAlarm := h.lossDetectionTime(now)
699
+ h.alarm = newAlarm
700
+
701
+ hasAlarm := !newAlarm.Time.IsZero()
702
+ if !hasAlarm && !oldAlarm.Time.IsZero() {
703
+ h.logger.Debugf("Canceling loss detection timer.")
704
+ if h.qlogger != nil {
705
+ h.qlogger.RecordEvent(qlog.LossTimerUpdated{
706
+ Type: qlog.LossTimerUpdateTypeCancelled,
707
+ })
708
+ }
709
+ }
710
+
711
+ if h.qlogger != nil && hasAlarm && newAlarm != oldAlarm {
712
+ h.qlogger.RecordEvent(qlog.LossTimerUpdated{
713
+ Type: qlog.LossTimerUpdateTypeSet,
714
+ TimerType: newAlarm.TimerType,
715
+ EncLevel: newAlarm.EncryptionLevel,
716
+ Time: newAlarm.Time.ToTime(),
717
+ })
718
+ }
719
+ }
720
+
721
+ func (h *sentPacketHandler) lossDetectionTime(now monotime.Time) alarmTimer {
722
+ // cancel the alarm if no packets are outstanding
723
+ if h.peerCompletedAddressValidation && !h.hasOutstandingCryptoPackets() &&
724
+ !h.appDataPackets.history.HasOutstandingPackets() && !h.appDataPackets.history.HasOutstandingPathProbes() {
725
+ return alarmTimer{}
726
+ }
727
+
728
+ // cancel the alarm if amplification limited
729
+ if h.isAmplificationLimited() {
730
+ return alarmTimer{}
731
+ }
732
+
733
+ var pathProbeLossTime monotime.Time
734
+ if h.appDataPackets.history.HasOutstandingPathProbes() {
735
+ if _, p := h.appDataPackets.history.FirstOutstandingPathProbe(); p != nil {
736
+ pathProbeLossTime = p.SendTime.Add(pathProbePacketLossTimeout)
737
+ }
738
+ }
739
+
740
+ // early retransmit timer or time loss detection
741
+ lossTime, encLevel := h.getLossTimeAndSpace()
742
+ if !lossTime.IsZero() && (pathProbeLossTime.IsZero() || lossTime.Before(pathProbeLossTime)) {
743
+ return alarmTimer{
744
+ Time: lossTime,
745
+ TimerType: qlog.TimerTypeACK,
746
+ EncryptionLevel: encLevel,
747
+ }
748
+ }
749
+ ptoTime, encLevel := h.getPTOTimeAndSpace(now)
750
+ if !ptoTime.IsZero() && (pathProbeLossTime.IsZero() || ptoTime.Before(pathProbeLossTime)) {
751
+ return alarmTimer{
752
+ Time: ptoTime,
753
+ TimerType: qlog.TimerTypePTO,
754
+ EncryptionLevel: encLevel,
755
+ }
756
+ }
757
+ if !pathProbeLossTime.IsZero() {
758
+ return alarmTimer{
759
+ Time: pathProbeLossTime,
760
+ TimerType: qlog.TimerTypePathProbe,
761
+ EncryptionLevel: protocol.Encryption1RTT,
762
+ }
763
+ }
764
+ return alarmTimer{}
765
+ }
766
+
767
+ func (h *sentPacketHandler) detectLostPathProbes(now monotime.Time) {
768
+ if !h.appDataPackets.history.HasOutstandingPathProbes() {
769
+ return
770
+ }
771
+ lossTime := now.Add(-pathProbePacketLossTimeout)
772
+ // RemovePathProbe cannot be called while iterating.
773
+ var lostPathProbes []packetWithPacketNumber
774
+ for pn, p := range h.appDataPackets.history.PathProbes() {
775
+ if !p.SendTime.After(lossTime) {
776
+ lostPathProbes = append(lostPathProbes, packetWithPacketNumber{PacketNumber: pn, packet: p})
777
+ }
778
+ }
779
+ for _, p := range lostPathProbes {
780
+ for _, f := range p.Frames {
781
+ f.Handler.OnLost(f.Frame)
782
+ }
783
+ h.appDataPackets.history.RemovePathProbe(p.PacketNumber)
784
+ }
785
+ }
786
+
787
+ func (h *sentPacketHandler) detectLostPackets(now monotime.Time, encLevel protocol.EncryptionLevel) {
788
+ pnSpace := h.getPacketNumberSpace(encLevel)
789
+ pnSpace.lossTime = 0
790
+
791
+ maxRTT := float64(max(h.rttStats.LatestRTT(), h.rttStats.SmoothedRTT()))
792
+ lossDelay := time.Duration(timeThreshold * maxRTT)
793
+
794
+ // Minimum time of granularity before packets are deemed lost.
795
+ lossDelay = max(lossDelay, protocol.TimerGranularity)
796
+
797
+ // Packets sent before this time are deemed lost.
798
+ lostSendTime := now.Add(-lossDelay)
799
+
800
+ priorInFlight := h.bytesInFlight
801
+ for pn, p := range pnSpace.history.Packets() {
802
+ if pn > pnSpace.largestAcked {
803
+ break
804
+ }
805
+
806
+ var packetLost bool
807
+ if !p.SendTime.After(lostSendTime) {
808
+ packetLost = true
809
+ if !p.isPathProbePacket && p.IsAckEliciting() {
810
+ if h.logger.Debug() {
811
+ h.logger.Debugf("\tlost packet %d (time threshold)", pn)
812
+ }
813
+ if h.qlogger != nil {
814
+ h.qlogger.RecordEvent(qlog.PacketLost{
815
+ Header: qlog.PacketHeader{
816
+ PacketType: qlog.EncryptionLevelToPacketType(p.EncryptionLevel),
817
+ PacketNumber: pn,
818
+ },
819
+ Trigger: qlog.PacketLossTimeThreshold,
820
+ })
821
+ }
822
+ }
823
+ } else if pnSpace.history.Difference(pnSpace.largestAcked, pn) >= packetThreshold {
824
+ packetLost = true
825
+ if !p.isPathProbePacket && p.IsAckEliciting() {
826
+ if h.logger.Debug() {
827
+ h.logger.Debugf("\tlost packet %d (reordering threshold)", pn)
828
+ }
829
+ if h.qlogger != nil {
830
+ h.qlogger.RecordEvent(qlog.PacketLost{
831
+ Header: qlog.PacketHeader{
832
+ PacketType: qlog.EncryptionLevelToPacketType(p.EncryptionLevel),
833
+ PacketNumber: pn,
834
+ },
835
+ Trigger: qlog.PacketLossReorderingThreshold,
836
+ })
837
+ }
838
+ }
839
+ } else if pnSpace.lossTime.IsZero() {
840
+ // Note: This conditional is only entered once per call
841
+ lossTime := p.SendTime.Add(lossDelay)
842
+ if h.logger.Debug() {
843
+ h.logger.Debugf("\tsetting loss timer for packet %d (%s) to %s (in %s)", pn, encLevel, lossDelay, lossTime)
844
+ }
845
+ pnSpace.lossTime = lossTime
846
+ }
847
+ if packetLost {
848
+ if encLevel == protocol.Encryption0RTT || encLevel == protocol.Encryption1RTT {
849
+ h.lostPackets.Add(pn, p.SendTime)
850
+ }
851
+ pnSpace.history.DeclareLost(pn)
852
+ if !p.isPathProbePacket && p.IsAckEliciting() {
853
+ // the bytes in flight need to be reduced no matter if the frames in this packet will be retransmitted
854
+ h.removeFromBytesInFlight(p)
855
+ h.queueFramesForRetransmission(p)
856
+ if !p.IsPathMTUProbePacket {
857
+ h.congestion.OnCongestionEvent(pn, p.Length, priorInFlight)
858
+ }
859
+ if encLevel == protocol.Encryption1RTT && h.ecnTracker != nil {
860
+ h.ecnTracker.LostPacket(pn)
861
+ }
862
+ }
863
+ }
864
+ }
865
+ }
866
+
867
+ func (h *sentPacketHandler) OnLossDetectionTimeout(now monotime.Time) error {
868
+ defer h.setLossDetectionTimer(now)
869
+
870
+ if h.handshakeConfirmed {
871
+ h.detectLostPathProbes(now)
872
+ }
873
+
874
+ earliestLossTime, encLevel := h.getLossTimeAndSpace()
875
+ if !earliestLossTime.IsZero() {
876
+ if h.logger.Debug() {
877
+ h.logger.Debugf("Loss detection alarm fired in loss timer mode. Loss time: %s", earliestLossTime)
878
+ }
879
+ if h.qlogger != nil {
880
+ h.qlogger.RecordEvent(qlog.LossTimerUpdated{
881
+ Type: qlog.LossTimerUpdateTypeExpired,
882
+ TimerType: qlog.TimerTypeACK,
883
+ EncLevel: encLevel,
884
+ })
885
+ }
886
+ // Early retransmit or time loss detection
887
+ h.detectLostPackets(now, encLevel)
888
+ return nil
889
+ }
890
+
891
+ // PTO
892
+ // When all outstanding are acknowledged, the alarm is canceled in setLossDetectionTimer.
893
+ // However, there's no way to reset the timer in the connection.
894
+ // When OnLossDetectionTimeout is called, we therefore need to make sure that there are
895
+ // actually packets outstanding.
896
+ if h.bytesInFlight == 0 && !h.peerCompletedAddressValidation {
897
+ h.ptoCount++
898
+ h.numProbesToSend++
899
+ if h.initialPackets != nil {
900
+ h.ptoMode = SendPTOInitial
901
+ } else if h.handshakePackets != nil {
902
+ h.ptoMode = SendPTOHandshake
903
+ } else {
904
+ return errors.New("sentPacketHandler BUG: PTO fired, but bytes_in_flight is 0 and Initial and Handshake already dropped")
905
+ }
906
+ return nil
907
+ }
908
+
909
+ ptoTime, encLevel := h.getPTOTimeAndSpace(now)
910
+ if ptoTime.IsZero() {
911
+ return nil
912
+ }
913
+ ps := h.getPacketNumberSpace(encLevel)
914
+ if !ps.history.HasOutstandingPackets() && !ps.history.HasOutstandingPathProbes() && !h.peerCompletedAddressValidation {
915
+ return nil
916
+ }
917
+ h.ptoCount++
918
+ if h.logger.Debug() {
919
+ h.logger.Debugf("Loss detection alarm for %s fired in PTO mode. PTO count: %d", encLevel, h.ptoCount)
920
+ }
921
+ if h.qlogger != nil {
922
+ h.qlogger.RecordEvent(qlog.LossTimerUpdated{
923
+ Type: qlog.LossTimerUpdateTypeExpired,
924
+ TimerType: qlog.TimerTypePTO,
925
+ EncLevel: encLevel,
926
+ })
927
+ h.qlogger.RecordEvent(qlog.PTOCountUpdated{PTOCount: h.ptoCount})
928
+ }
929
+ h.numProbesToSend += 2
930
+ //nolint:exhaustive // We never arm a PTO timer for 0-RTT packets.
931
+ switch encLevel {
932
+ case protocol.EncryptionInitial:
933
+ h.ptoMode = SendPTOInitial
934
+ case protocol.EncryptionHandshake:
935
+ h.ptoMode = SendPTOHandshake
936
+ case protocol.Encryption1RTT:
937
+ // skip a packet number in order to elicit an immediate ACK
938
+ pn := h.PopPacketNumber(protocol.Encryption1RTT)
939
+ h.getPacketNumberSpace(protocol.Encryption1RTT).history.SkippedPacket(pn)
940
+ h.ptoMode = SendPTOAppData
941
+ default:
942
+ return fmt.Errorf("PTO timer in unexpected encryption level: %s", encLevel)
943
+ }
944
+ return nil
945
+ }
946
+
947
+ func (h *sentPacketHandler) GetLossDetectionTimeout() monotime.Time {
948
+ return h.alarm.Time
949
+ }
950
+
951
+ func (h *sentPacketHandler) ECNMode(isShortHeaderPacket bool) protocol.ECN {
952
+ if !h.enableECN {
953
+ return protocol.ECNUnsupported
954
+ }
955
+ if !isShortHeaderPacket {
956
+ return protocol.ECNNon
957
+ }
958
+ return h.ecnTracker.Mode()
959
+ }
960
+
961
+ func (h *sentPacketHandler) PeekPacketNumber(encLevel protocol.EncryptionLevel) (protocol.PacketNumber, protocol.PacketNumberLen) {
962
+ pnSpace := h.getPacketNumberSpace(encLevel)
963
+ pn := pnSpace.pns.Peek()
964
+ // See section 17.1 of RFC 9000.
965
+ return pn, protocol.PacketNumberLengthForHeader(pn, pnSpace.largestAcked)
966
+ }
967
+
968
+ func (h *sentPacketHandler) PopPacketNumber(encLevel protocol.EncryptionLevel) protocol.PacketNumber {
969
+ pnSpace := h.getPacketNumberSpace(encLevel)
970
+ skipped, pn := pnSpace.pns.Pop()
971
+ if skipped {
972
+ skippedPN := pn - 1
973
+ pnSpace.history.SkippedPacket(skippedPN)
974
+ if h.logger.Debug() {
975
+ h.logger.Debugf("Skipping packet number %d", skippedPN)
976
+ }
977
+ }
978
+ return pn
979
+ }
980
+
981
+ func (h *sentPacketHandler) SendMode(now monotime.Time) SendMode {
982
+ numTrackedPackets := h.appDataPackets.history.Len()
983
+ if h.initialPackets != nil {
984
+ numTrackedPackets += h.initialPackets.history.Len()
985
+ }
986
+ if h.handshakePackets != nil {
987
+ numTrackedPackets += h.handshakePackets.history.Len()
988
+ }
989
+
990
+ if h.isAmplificationLimited() {
991
+ h.logger.Debugf("Amplification window limited. Received %d bytes, already sent out %d bytes", h.bytesReceived, h.bytesSent)
992
+ return SendNone
993
+ }
994
+ // Don't send any packets if we're keeping track of the maximum number of packets.
995
+ // Note that since MaxOutstandingSentPackets is smaller than MaxTrackedSentPackets,
996
+ // we will stop sending out new data when reaching MaxOutstandingSentPackets,
997
+ // but still allow sending of retransmissions and ACKs.
998
+ if numTrackedPackets >= protocol.MaxTrackedSentPackets {
999
+ if h.logger.Debug() {
1000
+ h.logger.Debugf("Limited by the number of tracked packets: tracking %d packets, maximum %d", numTrackedPackets, protocol.MaxTrackedSentPackets)
1001
+ }
1002
+ return SendNone
1003
+ }
1004
+ if h.numProbesToSend > 0 {
1005
+ return h.ptoMode
1006
+ }
1007
+ // Only send ACKs if we're congestion limited.
1008
+ if !h.congestion.CanSend(h.bytesInFlight) {
1009
+ if h.logger.Debug() {
1010
+ h.logger.Debugf("Congestion limited: bytes in flight %d, window %d", h.bytesInFlight, h.congestion.GetCongestionWindow())
1011
+ }
1012
+ return SendAck
1013
+ }
1014
+ if numTrackedPackets >= protocol.MaxOutstandingSentPackets {
1015
+ if h.logger.Debug() {
1016
+ h.logger.Debugf("Max outstanding limited: tracking %d packets, maximum: %d", numTrackedPackets, protocol.MaxOutstandingSentPackets)
1017
+ }
1018
+ return SendAck
1019
+ }
1020
+ if !h.congestion.HasPacingBudget(now) {
1021
+ return SendPacingLimited
1022
+ }
1023
+ return SendAny
1024
+ }
1025
+
1026
+ func (h *sentPacketHandler) TimeUntilSend() monotime.Time {
1027
+ return h.congestion.TimeUntilSend(h.bytesInFlight)
1028
+ }
1029
+
1030
+ func (h *sentPacketHandler) SetMaxDatagramSize(s protocol.ByteCount) {
1031
+ h.congestion.SetMaxDatagramSize(s)
1032
+ }
1033
+
1034
+ func (h *sentPacketHandler) isAmplificationLimited() bool {
1035
+ if h.peerAddressValidated {
1036
+ return false
1037
+ }
1038
+ return h.bytesSent >= amplificationFactor*h.bytesReceived
1039
+ }
1040
+
1041
+ func (h *sentPacketHandler) QueueProbePacket(encLevel protocol.EncryptionLevel) bool {
1042
+ pnSpace := h.getPacketNumberSpace(encLevel)
1043
+ pn, p := pnSpace.history.FirstOutstanding()
1044
+ if p == nil {
1045
+ return false
1046
+ }
1047
+ // TODO: don't declare the packet lost here.
1048
+ // Keep track of acknowledged frames instead.
1049
+ // Call DeclareLost before queueFramesForRetransmission, which clears the packet's frames.
1050
+ pnSpace.history.DeclareLost(pn)
1051
+ h.removeFromBytesInFlight(p)
1052
+ h.queueFramesForRetransmission(p)
1053
+ return true
1054
+ }
1055
+
1056
+ func (h *sentPacketHandler) queueFramesForRetransmission(p *packet) {
1057
+ if len(p.Frames) == 0 && len(p.StreamFrames) == 0 {
1058
+ panic("no frames")
1059
+ }
1060
+ for _, f := range p.Frames {
1061
+ if f.Handler != nil {
1062
+ f.Handler.OnLost(f.Frame)
1063
+ }
1064
+ }
1065
+ for _, f := range p.StreamFrames {
1066
+ if f.Handler != nil {
1067
+ f.Handler.OnLost(f.Frame)
1068
+ }
1069
+ }
1070
+ p.StreamFrames = nil
1071
+ p.Frames = nil
1072
+ }
1073
+
1074
+ func (h *sentPacketHandler) ResetForRetry(now monotime.Time) {
1075
+ h.bytesInFlight = 0
1076
+ var firstPacketSendTime monotime.Time
1077
+ for _, p := range h.initialPackets.history.Packets() {
1078
+ if firstPacketSendTime.IsZero() {
1079
+ firstPacketSendTime = p.SendTime
1080
+ }
1081
+ if p.IsAckEliciting() {
1082
+ h.queueFramesForRetransmission(p)
1083
+ }
1084
+ }
1085
+ // All application data packets sent at this point are 0-RTT packets.
1086
+ // In the case of a Retry, we can assume that the server dropped all of them.
1087
+ for _, p := range h.appDataPackets.history.Packets() {
1088
+ if p.IsAckEliciting() {
1089
+ h.queueFramesForRetransmission(p)
1090
+ }
1091
+ }
1092
+
1093
+ // Only use the Retry to estimate the RTT if we didn't send any retransmission for the Initial.
1094
+ // Otherwise, we don't know which Initial the Retry was sent in response to.
1095
+ if h.ptoCount == 0 {
1096
+ // Don't set the RTT to a value lower than 5ms here.
1097
+ h.rttStats.UpdateRTT(max(minRTTAfterRetry, now.Sub(firstPacketSendTime)), 0)
1098
+ if h.logger.Debug() {
1099
+ h.logger.Debugf("\tupdated RTT: %s (σ: %s)", h.rttStats.SmoothedRTT(), h.rttStats.MeanDeviation())
1100
+ }
1101
+ if h.qlogger != nil {
1102
+ h.qlogMetricsUpdated()
1103
+ }
1104
+ }
1105
+ h.initialPackets = newPacketNumberSpace(h.initialPackets.pns.Peek(), false)
1106
+ h.appDataPackets = newPacketNumberSpace(h.appDataPackets.pns.Peek(), true)
1107
+ oldAlarm := h.alarm
1108
+ h.alarm = alarmTimer{}
1109
+ if h.qlogger != nil {
1110
+ h.qlogger.RecordEvent(qlog.PTOCountUpdated{PTOCount: 0})
1111
+ if !oldAlarm.Time.IsZero() {
1112
+ h.qlogger.RecordEvent(qlog.LossTimerUpdated{
1113
+ Type: qlog.LossTimerUpdateTypeCancelled,
1114
+ })
1115
+ }
1116
+ }
1117
+ h.ptoCount = 0
1118
+ }
1119
+
1120
+ func (h *sentPacketHandler) MigratedPath(now monotime.Time, initialMaxDatagramSize protocol.ByteCount) {
1121
+ h.rttStats.ResetForPathMigration()
1122
+ for pn, p := range h.appDataPackets.history.Packets() {
1123
+ h.appDataPackets.history.DeclareLost(pn)
1124
+ if !p.isPathProbePacket {
1125
+ h.removeFromBytesInFlight(p)
1126
+ if p.IsAckEliciting() {
1127
+ h.queueFramesForRetransmission(p)
1128
+ }
1129
+ }
1130
+ }
1131
+ for pn := range h.appDataPackets.history.PathProbes() {
1132
+ h.appDataPackets.history.RemovePathProbe(pn)
1133
+ }
1134
+ h.congestion = congestion.NewCubicSender(
1135
+ congestion.DefaultClock{},
1136
+ h.rttStats,
1137
+ h.connStats,
1138
+ initialMaxDatagramSize,
1139
+ true, // use Reno
1140
+ h.qlogger,
1141
+ )
1142
+ h.setLossDetectionTimer(now)
1143
+ }