grpc 1.10.0 → 1.11.0.pre2

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of grpc might be problematic. Click here for more details.

Files changed (762) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +2098 -501
  3. data/include/grpc/byte_buffer.h +2 -0
  4. data/include/grpc/byte_buffer_reader.h +2 -0
  5. data/include/grpc/census.h +2 -0
  6. data/include/grpc/fork.h +2 -0
  7. data/include/grpc/grpc.h +10 -0
  8. data/include/grpc/grpc_cronet.h +2 -0
  9. data/include/grpc/grpc_posix.h +2 -1
  10. data/include/grpc/grpc_security.h +21 -0
  11. data/include/grpc/grpc_security_constants.h +1 -0
  12. data/include/grpc/impl/codegen/byte_buffer.h +2 -0
  13. data/include/grpc/impl/codegen/grpc_types.h +24 -0
  14. data/include/grpc/impl/codegen/slice.h +1 -1
  15. data/include/grpc/impl/codegen/sync.h +1 -0
  16. data/include/grpc/impl/codegen/sync_custom.h +2 -0
  17. data/include/grpc/impl/codegen/sync_generic.h +2 -0
  18. data/include/grpc/impl/codegen/sync_posix.h +2 -0
  19. data/include/grpc/impl/codegen/sync_windows.h +2 -0
  20. data/include/grpc/slice.h +2 -0
  21. data/include/grpc/slice_buffer.h +2 -0
  22. data/include/grpc/status.h +2 -0
  23. data/include/grpc/support/alloc.h +2 -2
  24. data/include/grpc/support/atm.h +2 -0
  25. data/include/grpc/support/atm_gcc_atomic.h +2 -0
  26. data/include/grpc/support/atm_gcc_sync.h +2 -0
  27. data/include/grpc/support/atm_windows.h +2 -0
  28. data/include/grpc/support/log.h +1 -1
  29. data/include/grpc/support/sync.h +2 -0
  30. data/include/grpc/support/sync_custom.h +2 -0
  31. data/include/grpc/support/sync_generic.h +2 -0
  32. data/include/grpc/support/sync_posix.h +2 -0
  33. data/include/grpc/support/sync_windows.h +2 -0
  34. data/include/grpc/support/time.h +2 -0
  35. data/src/boringssl/err_data.c +444 -438
  36. data/src/core/ext/census/grpc_context.cc +2 -0
  37. data/src/core/ext/filters/client_channel/backup_poller.cc +13 -8
  38. data/src/core/ext/filters/client_channel/backup_poller.h +3 -2
  39. data/src/core/ext/filters/client_channel/channel_connectivity.cc +2 -0
  40. data/src/core/ext/filters/client_channel/client_channel.cc +1988 -433
  41. data/src/core/ext/filters/client_channel/client_channel.h +2 -0
  42. data/src/core/ext/filters/client_channel/client_channel_factory.cc +2 -0
  43. data/src/core/ext/filters/client_channel/client_channel_factory.h +2 -0
  44. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +2 -27
  45. data/src/core/ext/filters/client_channel/connector.cc +2 -0
  46. data/src/core/ext/filters/client_channel/connector.h +2 -0
  47. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +2 -0
  48. data/src/core/ext/filters/client_channel/http_proxy.cc +2 -0
  49. data/src/core/ext/filters/client_channel/lb_policy.cc +2 -0
  50. data/src/core/ext/filters/client_channel/lb_policy.h +2 -0
  51. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +2 -0
  52. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.h +2 -0
  53. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +96 -78
  54. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel.h +9 -17
  55. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +70 -62
  56. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +2 -0
  57. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -0
  58. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +2 -0
  59. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +2 -0
  60. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +4 -2
  61. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +4 -2
  62. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.cc +2 -0
  63. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +2 -0
  64. data/src/core/ext/filters/client_channel/lb_policy_factory.cc +3 -1
  65. data/src/core/ext/filters/client_channel/lb_policy_factory.h +2 -1
  66. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +2 -0
  67. data/src/core/ext/filters/client_channel/lb_policy_registry.h +2 -1
  68. data/src/core/ext/filters/client_channel/method_params.cc +178 -0
  69. data/src/core/ext/filters/client_channel/method_params.h +74 -0
  70. data/src/core/ext/filters/client_channel/parse_address.cc +17 -13
  71. data/src/core/ext/filters/client_channel/parse_address.h +2 -0
  72. data/src/core/ext/filters/client_channel/proxy_mapper.cc +2 -0
  73. data/src/core/ext/filters/client_channel/proxy_mapper.h +2 -0
  74. data/src/core/ext/filters/client_channel/proxy_mapper_registry.cc +2 -0
  75. data/src/core/ext/filters/client_channel/proxy_mapper_registry.h +2 -0
  76. data/src/core/ext/filters/client_channel/resolver.cc +2 -0
  77. data/src/core/ext/filters/client_channel/resolver.h +6 -0
  78. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +24 -5
  79. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +2 -1
  80. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -0
  81. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +55 -1
  82. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +8 -1
  83. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +1 -0
  84. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +30 -3
  85. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +7 -0
  86. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +2 -1
  87. data/src/core/ext/filters/client_channel/resolver_factory.h +2 -0
  88. data/src/core/ext/filters/client_channel/resolver_registry.cc +2 -0
  89. data/src/core/ext/filters/client_channel/resolver_registry.h +2 -0
  90. data/src/core/ext/filters/client_channel/retry_throttle.cc +102 -120
  91. data/src/core/ext/filters/client_channel/retry_throttle.h +52 -25
  92. data/src/core/ext/filters/client_channel/subchannel.cc +14 -4
  93. data/src/core/ext/filters/client_channel/subchannel.h +10 -1
  94. data/src/core/ext/filters/client_channel/subchannel_index.cc +2 -0
  95. data/src/core/ext/filters/client_channel/subchannel_index.h +2 -0
  96. data/src/core/ext/filters/client_channel/uri_parser.cc +2 -1
  97. data/src/core/ext/filters/client_channel/uri_parser.h +2 -1
  98. data/src/core/ext/filters/deadline/deadline_filter.cc +2 -1
  99. data/src/core/ext/filters/deadline/deadline_filter.h +2 -0
  100. data/src/core/ext/filters/http/client/http_client_filter.cc +27 -25
  101. data/src/core/ext/filters/http/client/http_client_filter.h +2 -0
  102. data/src/core/ext/filters/http/client_authority_filter.cc +156 -0
  103. data/src/core/ext/filters/http/client_authority_filter.h +34 -0
  104. data/src/core/ext/filters/http/http_filters_plugin.cc +2 -0
  105. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +21 -22
  106. data/src/core/ext/filters/http/message_compress/message_compress_filter.h +2 -0
  107. data/src/core/ext/filters/http/server/http_server_filter.cc +11 -8
  108. data/src/core/ext/filters/http/server/http_server_filter.h +2 -0
  109. data/src/core/ext/filters/load_reporting/server_load_reporting_filter.cc +2 -0
  110. data/src/core/ext/filters/load_reporting/server_load_reporting_filter.h +2 -0
  111. data/src/core/ext/filters/load_reporting/server_load_reporting_plugin.h +2 -0
  112. data/src/core/ext/filters/max_age/max_age_filter.cc +2 -0
  113. data/src/core/ext/filters/max_age/max_age_filter.h +2 -0
  114. data/src/core/ext/filters/message_size/message_size_filter.cc +52 -49
  115. data/src/core/ext/filters/message_size/message_size_filter.h +2 -0
  116. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +5 -1
  117. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.h +2 -0
  118. data/src/core/ext/filters/workarounds/workaround_utils.cc +2 -0
  119. data/src/core/ext/filters/workarounds/workaround_utils.h +2 -0
  120. data/src/core/ext/transport/chttp2/alpn/alpn.cc +3 -1
  121. data/src/core/ext/transport/chttp2/alpn/alpn.h +2 -0
  122. data/src/core/ext/transport/chttp2/client/authority.cc +42 -0
  123. data/src/core/ext/transport/chttp2/client/authority.h +36 -0
  124. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +2 -0
  125. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +2 -0
  126. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +10 -3
  127. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +2 -2
  128. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +37 -25
  129. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +2 -0
  130. data/src/core/ext/transport/chttp2/server/chttp2_server.h +3 -1
  131. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +2 -1
  132. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +2 -1
  133. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +2 -0
  134. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +3 -1
  135. data/src/core/ext/transport/chttp2/transport/bin_decoder.h +2 -0
  136. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +2 -0
  137. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +2 -0
  138. data/src/core/ext/transport/chttp2/transport/chttp2_plugin.cc +2 -0
  139. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +152 -182
  140. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +2 -0
  141. data/src/core/ext/transport/chttp2/transport/flow_control.cc +2 -0
  142. data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -0
  143. data/src/core/ext/transport/chttp2/transport/frame.h +2 -1
  144. data/src/core/ext/transport/chttp2/transport/frame_data.cc +15 -19
  145. data/src/core/ext/transport/chttp2/transport/frame_data.h +7 -5
  146. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -0
  147. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +2 -2
  148. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +2 -0
  149. data/src/core/ext/transport/chttp2/transport/frame_ping.h +2 -1
  150. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +2 -0
  151. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -1
  152. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +2 -0
  153. data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -2
  154. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +2 -0
  155. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +2 -1
  156. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +2 -0
  157. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -1
  158. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +2 -1
  159. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -2
  160. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +2 -0
  161. data/src/core/ext/transport/chttp2/transport/hpack_table.h +2 -1
  162. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +2 -0
  163. data/src/core/ext/transport/chttp2/transport/http2_settings.h +2 -0
  164. data/src/core/ext/transport/chttp2/transport/huffsyms.cc +2 -0
  165. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +3 -2
  166. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +2 -0
  167. data/src/core/ext/transport/chttp2/transport/internal.h +60 -24
  168. data/src/core/ext/transport/chttp2/transport/parsing.cc +2 -4
  169. data/src/core/ext/transport/chttp2/transport/stream_lists.cc +2 -0
  170. data/src/core/ext/transport/chttp2/transport/stream_map.cc +2 -0
  171. data/src/core/ext/transport/chttp2/transport/varint.cc +2 -0
  172. data/src/core/ext/transport/chttp2/transport/writing.cc +10 -6
  173. data/src/core/ext/transport/inproc/inproc_plugin.cc +2 -0
  174. data/src/core/ext/transport/inproc/inproc_transport.cc +20 -23
  175. data/src/core/ext/transport/inproc/inproc_transport.h +2 -0
  176. data/src/core/lib/avl/avl.cc +2 -0
  177. data/src/core/lib/avl/avl.h +2 -0
  178. data/src/core/lib/backoff/backoff.cc +2 -0
  179. data/src/core/lib/backoff/backoff.h +2 -0
  180. data/src/core/lib/channel/channel_args.h +2 -0
  181. data/src/core/lib/channel/channel_stack.cc +3 -1
  182. data/src/core/lib/channel/channel_stack.h +2 -0
  183. data/src/core/lib/channel/channel_stack_builder.cc +2 -0
  184. data/src/core/lib/channel/channel_stack_builder.h +2 -0
  185. data/src/core/lib/channel/channel_trace.cc +239 -0
  186. data/src/core/lib/channel/channel_trace.h +133 -0
  187. data/src/core/lib/channel/channel_trace_registry.cc +80 -0
  188. data/src/core/lib/channel/channel_trace_registry.h +43 -0
  189. data/src/core/lib/channel/connected_channel.cc +2 -0
  190. data/src/core/lib/channel/connected_channel.h +2 -0
  191. data/src/core/lib/channel/handshaker.cc +2 -0
  192. data/src/core/lib/channel/handshaker.h +2 -0
  193. data/src/core/lib/channel/handshaker_factory.cc +2 -0
  194. data/src/core/lib/channel/handshaker_factory.h +2 -1
  195. data/src/core/lib/channel/handshaker_registry.cc +2 -0
  196. data/src/core/lib/channel/handshaker_registry.h +2 -1
  197. data/src/core/lib/channel/status_util.cc +100 -0
  198. data/src/core/lib/channel/status_util.h +58 -0
  199. data/src/core/lib/compression/algorithm_metadata.h +2 -0
  200. data/src/core/lib/compression/compression.cc +2 -0
  201. data/src/core/lib/compression/compression_internal.cc +2 -0
  202. data/src/core/lib/compression/compression_internal.h +2 -0
  203. data/src/core/lib/compression/message_compress.cc +2 -0
  204. data/src/core/lib/compression/message_compress.h +2 -0
  205. data/src/core/lib/compression/stream_compression.cc +2 -0
  206. data/src/core/lib/compression/stream_compression.h +2 -0
  207. data/src/core/lib/compression/stream_compression_gzip.cc +2 -0
  208. data/src/core/lib/compression/stream_compression_gzip.h +2 -0
  209. data/src/core/lib/compression/stream_compression_identity.cc +2 -1
  210. data/src/core/lib/compression/stream_compression_identity.h +2 -0
  211. data/src/core/lib/debug/stats.cc +2 -0
  212. data/src/core/lib/debug/stats.h +2 -0
  213. data/src/core/lib/debug/stats_data.cc +3 -1
  214. data/src/core/lib/debug/stats_data.h +2 -0
  215. data/src/core/lib/debug/trace.cc +2 -0
  216. data/src/core/lib/debug/trace.h +2 -1
  217. data/src/core/lib/gpr/alloc.cc +2 -1
  218. data/src/core/lib/gpr/arena.cc +47 -0
  219. data/src/core/lib/gpr/arena.h +2 -0
  220. data/src/core/lib/gpr/atm.cc +2 -0
  221. data/src/core/lib/gpr/cpu_linux.cc +5 -1
  222. data/src/core/lib/gpr/cpu_posix.cc +1 -1
  223. data/src/core/lib/gpr/env.h +2 -0
  224. data/src/core/lib/gpr/fork.cc +2 -0
  225. data/src/core/lib/gpr/host_port.cc +2 -0
  226. data/src/core/lib/gpr/log.cc +2 -1
  227. data/src/core/lib/gpr/log_linux.cc +1 -0
  228. data/src/core/lib/gpr/mpscq.cc +2 -0
  229. data/src/core/lib/gpr/mpscq.h +2 -0
  230. data/src/core/lib/gpr/murmur_hash.cc +2 -0
  231. data/src/core/lib/gpr/spinlock.h +2 -0
  232. data/src/core/lib/gpr/string.cc +2 -1
  233. data/src/core/lib/gpr/string.h +2 -2
  234. data/src/core/lib/gpr/sync.cc +2 -0
  235. data/src/core/lib/gpr/time.cc +2 -0
  236. data/src/core/lib/gpr/time_posix.cc +1 -0
  237. data/src/core/lib/gpr/time_precise.cc +2 -0
  238. data/src/core/lib/gpr/time_precise.h +2 -0
  239. data/src/core/lib/gpr/tls_gcc.h +2 -0
  240. data/src/core/lib/gpr/tls_msvc.h +2 -0
  241. data/src/core/lib/gpr/tls_pthread.h +2 -0
  242. data/src/core/lib/gpr/tmpfile.h +2 -0
  243. data/src/core/lib/gprpp/atomic_with_atm.h +2 -0
  244. data/src/core/lib/gprpp/atomic_with_std.h +2 -0
  245. data/src/core/lib/gprpp/inlined_vector.h +2 -0
  246. data/src/core/lib/gprpp/manual_constructor.h +3 -1
  247. data/src/core/lib/gprpp/memory.h +5 -3
  248. data/src/core/lib/gprpp/orphanable.h +3 -0
  249. data/src/core/lib/gprpp/ref_counted.h +4 -0
  250. data/src/core/lib/gprpp/ref_counted_ptr.h +3 -0
  251. data/src/core/lib/gprpp/thd.h +135 -0
  252. data/src/core/lib/gprpp/thd_posix.cc +209 -0
  253. data/src/core/lib/gprpp/thd_windows.cc +162 -0
  254. data/src/core/lib/http/format_request.cc +2 -0
  255. data/src/core/lib/http/format_request.h +2 -0
  256. data/src/core/lib/http/httpcli.cc +2 -0
  257. data/src/core/lib/http/httpcli.h +2 -0
  258. data/src/core/lib/http/httpcli_security_connector.cc +16 -7
  259. data/src/core/lib/http/parser.cc +2 -0
  260. data/src/core/lib/http/parser.h +2 -1
  261. data/src/core/lib/iomgr/call_combiner.cc +2 -0
  262. data/src/core/lib/iomgr/call_combiner.h +2 -1
  263. data/src/core/lib/iomgr/combiner.cc +2 -0
  264. data/src/core/lib/iomgr/combiner.h +2 -0
  265. data/src/core/lib/iomgr/endpoint.cc +4 -0
  266. data/src/core/lib/iomgr/endpoint.h +2 -0
  267. data/src/core/lib/iomgr/endpoint_pair.h +2 -0
  268. data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -0
  269. data/src/core/lib/iomgr/endpoint_pair_uv.cc +2 -0
  270. data/src/core/lib/iomgr/endpoint_pair_windows.cc +7 -4
  271. data/src/core/lib/iomgr/error.h +2 -0
  272. data/src/core/lib/iomgr/error_internal.h +2 -0
  273. data/src/core/lib/iomgr/ev_epoll1_linux.cc +2 -0
  274. data/src/core/lib/iomgr/ev_epoll1_linux.h +2 -0
  275. data/src/core/lib/iomgr/ev_epollex_linux.cc +4 -18
  276. data/src/core/lib/iomgr/ev_epollex_linux.h +2 -0
  277. data/src/core/lib/iomgr/ev_epollsig_linux.cc +2 -0
  278. data/src/core/lib/iomgr/ev_epollsig_linux.h +2 -0
  279. data/src/core/lib/iomgr/ev_poll_posix.cc +61 -31
  280. data/src/core/lib/iomgr/ev_poll_posix.h +2 -0
  281. data/src/core/lib/iomgr/ev_posix.cc +35 -19
  282. data/src/core/lib/iomgr/ev_posix.h +2 -0
  283. data/src/core/lib/iomgr/ev_windows.cc +2 -0
  284. data/src/core/lib/iomgr/exec_ctx.cc +3 -1
  285. data/src/core/lib/iomgr/exec_ctx.h +21 -9
  286. data/src/core/lib/iomgr/executor.cc +13 -11
  287. data/src/core/lib/iomgr/executor.h +2 -0
  288. data/src/core/lib/iomgr/fork_posix.cc +4 -2
  289. data/src/core/lib/iomgr/fork_windows.cc +2 -0
  290. data/src/core/lib/iomgr/gethostname_fallback.cc +2 -0
  291. data/src/core/lib/iomgr/gethostname_host_name_max.cc +2 -0
  292. data/src/core/lib/iomgr/gethostname_sysconf.cc +2 -0
  293. data/src/core/lib/iomgr/iocp_windows.cc +3 -1
  294. data/src/core/lib/iomgr/iocp_windows.h +3 -0
  295. data/src/core/lib/iomgr/iomgr.cc +2 -1
  296. data/src/core/lib/iomgr/iomgr.h +2 -0
  297. data/src/core/lib/iomgr/iomgr_custom.cc +63 -0
  298. data/src/core/lib/iomgr/iomgr_custom.h +47 -0
  299. data/src/core/lib/iomgr/iomgr_internal.cc +43 -0
  300. data/src/core/lib/iomgr/iomgr_internal.h +14 -0
  301. data/src/core/lib/iomgr/iomgr_posix.cc +30 -3
  302. data/src/core/lib/iomgr/iomgr_posix.h +2 -0
  303. data/src/core/lib/iomgr/iomgr_uv.cc +17 -20
  304. data/src/core/lib/iomgr/iomgr_windows.cc +29 -3
  305. data/src/core/lib/iomgr/is_epollexclusive_available.cc +2 -0
  306. data/src/core/lib/iomgr/is_epollexclusive_available.h +2 -0
  307. data/src/core/lib/iomgr/load_file.cc +2 -0
  308. data/src/core/lib/iomgr/load_file.h +2 -0
  309. data/src/core/lib/iomgr/lockfree_event.cc +2 -0
  310. data/src/core/lib/iomgr/lockfree_event.h +14 -1
  311. data/src/core/lib/iomgr/nameser.h +2 -0
  312. data/src/core/lib/iomgr/network_status_tracker.cc +3 -1
  313. data/src/core/lib/iomgr/network_status_tracker.h +2 -0
  314. data/src/core/lib/iomgr/polling_entity.cc +2 -0
  315. data/src/core/lib/iomgr/polling_entity.h +2 -0
  316. data/src/core/lib/iomgr/pollset.cc +56 -0
  317. data/src/core/lib/iomgr/pollset.h +19 -0
  318. data/src/core/lib/iomgr/pollset_custom.cc +106 -0
  319. data/src/core/lib/iomgr/{timer_generic.h → pollset_custom.h} +15 -17
  320. data/src/core/lib/iomgr/pollset_set.cc +55 -0
  321. data/src/core/lib/iomgr/pollset_set.h +13 -0
  322. data/src/core/lib/iomgr/pollset_set_custom.cc +48 -0
  323. data/src/core/lib/iomgr/{pollset_uv.h → pollset_set_custom.h} +6 -7
  324. data/src/core/lib/iomgr/pollset_set_windows.cc +17 -10
  325. data/src/core/lib/iomgr/pollset_set_windows.h +2 -0
  326. data/src/core/lib/iomgr/pollset_uv.cc +42 -105
  327. data/src/core/lib/iomgr/pollset_windows.cc +20 -12
  328. data/src/core/lib/iomgr/pollset_windows.h +2 -0
  329. data/src/core/lib/iomgr/port.h +10 -19
  330. data/src/core/lib/iomgr/resolve_address.cc +50 -0
  331. data/src/core/lib/iomgr/resolve_address.h +39 -10
  332. data/src/core/lib/iomgr/resolve_address_custom.cc +187 -0
  333. data/src/core/lib/iomgr/resolve_address_custom.h +43 -0
  334. data/src/core/lib/iomgr/resolve_address_posix.cc +10 -22
  335. data/src/core/lib/iomgr/resolve_address_windows.cc +10 -22
  336. data/src/core/lib/iomgr/resource_quota.cc +2 -0
  337. data/src/core/lib/iomgr/resource_quota.h +3 -5
  338. data/src/core/lib/iomgr/sockaddr.h +3 -11
  339. data/src/core/lib/iomgr/sockaddr_custom.h +54 -0
  340. data/src/core/lib/iomgr/sockaddr_posix.h +26 -0
  341. data/src/core/lib/iomgr/sockaddr_utils.cc +91 -71
  342. data/src/core/lib/iomgr/sockaddr_utils.h +4 -0
  343. data/src/core/lib/iomgr/sockaddr_windows.h +21 -0
  344. data/src/core/lib/iomgr/socket_factory_posix.cc +2 -0
  345. data/src/core/lib/iomgr/socket_factory_posix.h +2 -0
  346. data/src/core/lib/iomgr/socket_mutator.cc +2 -0
  347. data/src/core/lib/iomgr/socket_mutator.h +2 -0
  348. data/src/core/lib/iomgr/socket_utils.h +11 -0
  349. data/src/core/lib/iomgr/socket_utils_common_posix.cc +15 -6
  350. data/src/core/lib/iomgr/socket_utils_linux.cc +4 -4
  351. data/src/core/lib/iomgr/socket_utils_posix.cc +3 -2
  352. data/src/core/lib/iomgr/socket_utils_posix.h +2 -0
  353. data/src/core/lib/iomgr/socket_utils_uv.cc +13 -2
  354. data/src/core/lib/iomgr/socket_utils_windows.cc +10 -0
  355. data/src/core/lib/iomgr/socket_windows.cc +2 -0
  356. data/src/core/lib/iomgr/socket_windows.h +2 -1
  357. data/src/core/lib/iomgr/sys_epoll_wrapper.h +2 -0
  358. data/src/core/lib/iomgr/tcp_client.cc +36 -0
  359. data/src/core/lib/iomgr/tcp_client.h +13 -0
  360. data/src/core/lib/iomgr/tcp_client_custom.cc +151 -0
  361. data/src/core/lib/iomgr/tcp_client_posix.cc +11 -24
  362. data/src/core/lib/iomgr/tcp_client_posix.h +2 -0
  363. data/src/core/lib/iomgr/tcp_client_windows.cc +10 -23
  364. data/src/core/lib/iomgr/tcp_custom.cc +365 -0
  365. data/src/core/lib/iomgr/tcp_custom.h +81 -0
  366. data/src/core/lib/iomgr/tcp_posix.cc +3 -1
  367. data/src/core/lib/iomgr/tcp_posix.h +2 -0
  368. data/src/core/lib/iomgr/tcp_server.cc +73 -0
  369. data/src/core/lib/iomgr/tcp_server.h +24 -0
  370. data/src/core/lib/iomgr/tcp_server_custom.cc +472 -0
  371. data/src/core/lib/iomgr/tcp_server_posix.cc +41 -23
  372. data/src/core/lib/iomgr/tcp_server_utils_posix.h +2 -0
  373. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +7 -7
  374. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +8 -6
  375. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +2 -0
  376. data/src/core/lib/iomgr/tcp_server_windows.cc +43 -21
  377. data/src/core/lib/iomgr/tcp_uv.cc +308 -314
  378. data/src/core/lib/iomgr/tcp_windows.cc +3 -1
  379. data/src/core/lib/iomgr/tcp_windows.h +2 -0
  380. data/src/core/lib/iomgr/time_averaged_stats.cc +2 -0
  381. data/src/core/lib/iomgr/timer.cc +45 -0
  382. data/src/core/lib/iomgr/timer.h +36 -15
  383. data/src/core/lib/iomgr/timer_custom.cc +93 -0
  384. data/src/core/lib/iomgr/timer_custom.h +43 -0
  385. data/src/core/lib/iomgr/timer_generic.cc +12 -10
  386. data/src/core/lib/iomgr/timer_heap.cc +2 -4
  387. data/src/core/lib/iomgr/timer_heap.h +2 -0
  388. data/src/core/lib/iomgr/timer_manager.cc +12 -20
  389. data/src/core/lib/iomgr/timer_manager.h +2 -0
  390. data/src/core/lib/iomgr/timer_uv.cc +15 -49
  391. data/src/core/lib/iomgr/udp_server.cc +271 -230
  392. data/src/core/lib/iomgr/udp_server.h +44 -20
  393. data/src/core/lib/iomgr/unix_sockets_posix.cc +10 -7
  394. data/src/core/lib/iomgr/unix_sockets_posix.h +2 -0
  395. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +2 -0
  396. data/src/core/lib/iomgr/wakeup_fd_cv.cc +3 -1
  397. data/src/core/lib/iomgr/wakeup_fd_cv.h +2 -0
  398. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +2 -0
  399. data/src/core/lib/iomgr/wakeup_fd_nospecial.cc +2 -0
  400. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -0
  401. data/src/core/lib/iomgr/wakeup_fd_pipe.h +2 -0
  402. data/src/core/lib/iomgr/wakeup_fd_posix.cc +2 -0
  403. data/src/core/lib/iomgr/wakeup_fd_posix.h +2 -0
  404. data/src/core/lib/json/json.cc +38 -0
  405. data/src/core/lib/json/json.h +22 -1
  406. data/src/core/lib/json/json_reader.cc +2 -2
  407. data/src/core/lib/json/json_reader.h +1 -0
  408. data/src/core/lib/json/json_string.cc +2 -0
  409. data/src/core/lib/json/json_writer.cc +2 -2
  410. data/src/core/lib/json/json_writer.h +2 -0
  411. data/src/core/lib/profiling/basic_timers.cc +11 -9
  412. data/src/core/lib/profiling/timers.h +6 -3
  413. data/src/core/lib/security/context/security_context.cc +2 -0
  414. data/src/core/lib/security/context/security_context.h +2 -0
  415. data/src/core/lib/security/credentials/alts/alts_credentials.cc +119 -0
  416. data/src/core/lib/security/credentials/alts/alts_credentials.h +102 -0
  417. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +72 -0
  418. data/src/core/lib/security/credentials/alts/check_gcp_environment.h +57 -0
  419. data/src/core/lib/security/credentials/alts/check_gcp_environment_linux.cc +67 -0
  420. data/src/core/lib/security/credentials/alts/check_gcp_environment_no_op.cc +33 -0
  421. data/src/core/lib/security/credentials/alts/check_gcp_environment_windows.cc +114 -0
  422. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_client_options.cc +126 -0
  423. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.cc +46 -0
  424. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_options.h +112 -0
  425. data/src/core/lib/security/credentials/alts/grpc_alts_credentials_server_options.cc +58 -0
  426. data/src/core/lib/security/credentials/composite/composite_credentials.cc +2 -0
  427. data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -0
  428. data/src/core/lib/security/credentials/credentials.cc +2 -0
  429. data/src/core/lib/security/credentials/credentials.h +2 -0
  430. data/src/core/lib/security/credentials/credentials_metadata.cc +2 -0
  431. data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -3
  432. data/src/core/lib/security/credentials/fake/fake_credentials.h +5 -0
  433. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +2 -0
  434. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +2 -0
  435. data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -0
  436. data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -0
  437. data/src/core/lib/security/credentials/jwt/json_token.cc +2 -0
  438. data/src/core/lib/security/credentials/jwt/json_token.h +2 -0
  439. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -0
  440. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +2 -0
  441. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -0
  442. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +2 -0
  443. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +2 -0
  444. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +2 -0
  445. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -0
  446. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +11 -2
  447. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +2 -0
  448. data/src/core/lib/security/security_connector/alts_security_connector.cc +287 -0
  449. data/src/core/lib/security/security_connector/alts_security_connector.h +69 -0
  450. data/src/core/lib/security/security_connector/security_connector.cc +174 -74
  451. data/src/core/lib/security/security_connector/security_connector.h +41 -7
  452. data/src/core/lib/security/transport/auth_filters.h +2 -0
  453. data/src/core/lib/security/transport/client_auth_filter.cc +14 -28
  454. data/src/core/lib/security/transport/secure_endpoint.cc +2 -0
  455. data/src/core/lib/security/transport/secure_endpoint.h +2 -0
  456. data/src/core/lib/security/transport/security_handshaker.cc +2 -0
  457. data/src/core/lib/security/transport/security_handshaker.h +2 -1
  458. data/src/core/lib/security/transport/server_auth_filter.cc +2 -0
  459. data/src/core/lib/security/transport/target_authority_table.cc +75 -0
  460. data/src/core/lib/security/transport/{lb_targets_info.h → target_authority_table.h} +16 -8
  461. data/src/core/lib/security/transport/tsi_error.cc +2 -0
  462. data/src/core/lib/security/transport/tsi_error.h +2 -0
  463. data/src/core/lib/security/util/json_util.cc +2 -0
  464. data/src/core/lib/security/util/json_util.h +2 -0
  465. data/src/core/lib/slice/b64.cc +2 -0
  466. data/src/core/lib/slice/b64.h +2 -0
  467. data/src/core/lib/slice/percent_encoding.cc +2 -0
  468. data/src/core/lib/slice/percent_encoding.h +2 -0
  469. data/src/core/lib/slice/slice.cc +2 -0
  470. data/src/core/lib/slice/slice_buffer.cc +3 -1
  471. data/src/core/lib/slice/slice_hash_table.h +178 -45
  472. data/src/core/lib/slice/slice_intern.cc +2 -0
  473. data/src/core/lib/slice/slice_internal.h +2 -2
  474. data/src/core/lib/slice/slice_string_helpers.cc +2 -0
  475. data/src/core/lib/slice/slice_string_helpers.h +2 -1
  476. data/src/core/lib/slice/slice_weak_hash_table.h +105 -0
  477. data/src/core/lib/surface/api_trace.cc +3 -1
  478. data/src/core/lib/surface/api_trace.h +2 -0
  479. data/src/core/lib/surface/byte_buffer.cc +3 -0
  480. data/src/core/lib/surface/byte_buffer_reader.cc +3 -0
  481. data/src/core/lib/surface/call.cc +46 -80
  482. data/src/core/lib/surface/call.h +2 -0
  483. data/src/core/lib/surface/call_details.cc +2 -0
  484. data/src/core/lib/surface/call_log_batch.cc +2 -0
  485. data/src/core/lib/surface/call_test_only.h +2 -0
  486. data/src/core/lib/surface/channel.cc +72 -41
  487. data/src/core/lib/surface/channel.h +2 -0
  488. data/src/core/lib/surface/channel_init.cc +2 -0
  489. data/src/core/lib/surface/channel_init.h +2 -0
  490. data/src/core/lib/surface/channel_ping.cc +2 -0
  491. data/src/core/lib/surface/channel_stack_type.cc +3 -2
  492. data/src/core/lib/surface/channel_stack_type.h +2 -0
  493. data/src/core/lib/surface/completion_queue.h +2 -0
  494. data/src/core/lib/surface/completion_queue_factory.cc +3 -1
  495. data/src/core/lib/surface/completion_queue_factory.h +2 -0
  496. data/src/core/lib/surface/event_string.cc +2 -0
  497. data/src/core/lib/surface/event_string.h +2 -0
  498. data/src/core/lib/surface/init.cc +5 -2
  499. data/src/core/lib/surface/init_secure.cc +5 -2
  500. data/src/core/lib/surface/lame_client.cc +7 -5
  501. data/src/core/lib/surface/lame_client.h +2 -0
  502. data/src/core/lib/surface/metadata_array.cc +2 -0
  503. data/src/core/lib/surface/server.cc +2 -0
  504. data/src/core/lib/surface/server.h +2 -0
  505. data/src/core/lib/surface/validate_metadata.cc +2 -1
  506. data/src/core/lib/surface/validate_metadata.h +2 -0
  507. data/src/core/lib/surface/version.cc +4 -2
  508. data/src/core/lib/transport/bdp_estimator.cc +2 -0
  509. data/src/core/lib/transport/byte_stream.cc +94 -116
  510. data/src/core/lib/transport/byte_stream.h +111 -78
  511. data/src/core/lib/transport/connectivity_state.cc +2 -0
  512. data/src/core/lib/transport/connectivity_state.h +3 -1
  513. data/src/core/lib/transport/error_utils.cc +2 -0
  514. data/src/core/lib/transport/error_utils.h +2 -0
  515. data/src/core/lib/transport/metadata.cc +2 -0
  516. data/src/core/lib/transport/metadata.h +3 -1
  517. data/src/core/lib/transport/metadata_batch.cc +26 -0
  518. data/src/core/lib/transport/metadata_batch.h +12 -1
  519. data/src/core/lib/transport/pid_controller.cc +2 -0
  520. data/src/core/lib/transport/pid_controller.h +2 -0
  521. data/src/core/lib/transport/service_config.cc +21 -175
  522. data/src/core/lib/transport/service_config.h +223 -35
  523. data/src/core/lib/transport/static_metadata.cc +310 -294
  524. data/src/core/lib/transport/static_metadata.h +96 -82
  525. data/src/core/lib/transport/status_conversion.cc +2 -0
  526. data/src/core/lib/transport/status_conversion.h +3 -0
  527. data/src/core/lib/transport/status_metadata.cc +54 -0
  528. data/src/core/lib/{iomgr/timer_uv.h → transport/status_metadata.h} +10 -12
  529. data/src/core/lib/transport/timeout_encoding.cc +2 -1
  530. data/src/core/lib/transport/timeout_encoding.h +2 -0
  531. data/src/core/lib/transport/transport.cc +3 -1
  532. data/src/core/lib/transport/transport.h +33 -7
  533. data/src/core/lib/transport/transport_impl.h +2 -0
  534. data/src/core/lib/transport/transport_op_string.cc +10 -3
  535. data/src/core/plugin_registry/grpc_plugin_registry.cc +10 -4
  536. data/src/core/tsi/alts/crypt/aes_gcm.cc +687 -0
  537. data/src/core/tsi/alts/crypt/gsec.cc +189 -0
  538. data/src/core/tsi/alts/crypt/gsec.h +454 -0
  539. data/src/core/tsi/alts/frame_protector/alts_counter.cc +118 -0
  540. data/src/core/tsi/alts/frame_protector/alts_counter.h +98 -0
  541. data/src/core/tsi/alts/frame_protector/alts_crypter.cc +66 -0
  542. data/src/core/tsi/alts/frame_protector/alts_crypter.h +255 -0
  543. data/src/core/tsi/alts/frame_protector/alts_frame_protector.cc +407 -0
  544. data/src/core/tsi/alts/frame_protector/alts_frame_protector.h +55 -0
  545. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.cc +114 -0
  546. data/src/core/tsi/alts/frame_protector/alts_record_protocol_crypter_common.h +114 -0
  547. data/src/core/tsi/alts/frame_protector/alts_seal_privacy_integrity_crypter.cc +105 -0
  548. data/src/core/tsi/alts/frame_protector/alts_unseal_privacy_integrity_crypter.cc +103 -0
  549. data/src/core/tsi/alts/frame_protector/frame_handler.cc +218 -0
  550. data/src/core/tsi/alts/frame_protector/frame_handler.h +236 -0
  551. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +316 -0
  552. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +137 -0
  553. data/src/core/tsi/alts/handshaker/alts_handshaker_service_api.cc +520 -0
  554. data/src/core/tsi/alts/handshaker/alts_handshaker_service_api.h +323 -0
  555. data/src/core/tsi/alts/handshaker/alts_handshaker_service_api_util.cc +143 -0
  556. data/src/core/tsi/alts/handshaker/alts_handshaker_service_api_util.h +149 -0
  557. data/src/core/tsi/alts/handshaker/alts_tsi_event.cc +73 -0
  558. data/src/core/tsi/alts/handshaker/alts_tsi_event.h +93 -0
  559. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +483 -0
  560. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +83 -0
  561. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +52 -0
  562. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +58 -0
  563. data/src/core/tsi/alts/handshaker/alts_tsi_utils.h +52 -0
  564. data/src/core/tsi/alts/handshaker/altscontext.pb.c +48 -0
  565. data/src/core/tsi/alts/handshaker/altscontext.pb.h +64 -0
  566. data/src/core/tsi/alts/handshaker/handshaker.pb.c +123 -0
  567. data/src/core/tsi/alts/handshaker/handshaker.pb.h +255 -0
  568. data/src/core/tsi/alts/handshaker/transport_security_common.pb.c +50 -0
  569. data/src/core/tsi/alts/handshaker/transport_security_common.pb.h +78 -0
  570. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +196 -0
  571. data/src/core/tsi/alts/handshaker/transport_security_common_api.h +163 -0
  572. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +180 -0
  573. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.h +52 -0
  574. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +144 -0
  575. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.h +49 -0
  576. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol.h +91 -0
  577. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +174 -0
  578. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +100 -0
  579. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +476 -0
  580. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.h +199 -0
  581. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +296 -0
  582. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.h +52 -0
  583. data/src/core/tsi/alts_transport_security.cc +3 -1
  584. data/src/core/tsi/alts_transport_security.h +4 -2
  585. data/src/core/tsi/fake_transport_security.cc +2 -1
  586. data/src/core/tsi/fake_transport_security.h +2 -0
  587. data/src/core/tsi/ssl/session_cache/ssl_session.h +73 -0
  588. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +58 -0
  589. data/src/core/tsi/ssl/session_cache/ssl_session_cache.cc +211 -0
  590. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +93 -0
  591. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +76 -0
  592. data/src/core/tsi/ssl_transport_security.cc +266 -62
  593. data/src/core/tsi/ssl_transport_security.h +128 -6
  594. data/src/core/tsi/ssl_types.h +2 -0
  595. data/src/core/tsi/transport_security.cc +2 -0
  596. data/src/core/tsi/transport_security.h +2 -0
  597. data/src/core/tsi/transport_security_adapter.cc +2 -0
  598. data/src/core/tsi/transport_security_adapter.h +2 -0
  599. data/src/core/tsi/transport_security_grpc.cc +2 -0
  600. data/src/core/tsi/transport_security_grpc.h +2 -0
  601. data/src/core/tsi/transport_security_interface.h +2 -0
  602. data/src/ruby/ext/grpc/extconf.rb +1 -2
  603. data/src/ruby/ext/grpc/rb_call.c +1 -13
  604. data/src/ruby/ext/grpc/rb_channel.c +6 -6
  605. data/src/ruby/ext/grpc/rb_compression_options.c +1 -1
  606. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +10 -0
  607. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +15 -0
  608. data/src/ruby/lib/grpc/core/time_consts.rb +1 -1
  609. data/src/ruby/lib/grpc/generic/bidi_call.rb +19 -8
  610. data/src/ruby/lib/grpc/generic/client_stub.rb +6 -10
  611. data/src/ruby/lib/grpc/generic/interceptors.rb +1 -1
  612. data/src/ruby/lib/grpc/generic/rpc_server.rb +2 -2
  613. data/src/ruby/lib/grpc/version.rb +1 -1
  614. data/src/ruby/spec/generic/client_stub_spec.rb +133 -0
  615. data/src/ruby/spec/pb/package_with_underscore/checker_spec.rb +54 -0
  616. data/src/ruby/spec/pb/package_with_underscore/data.proto +23 -0
  617. data/src/ruby/spec/pb/package_with_underscore/service.proto +23 -0
  618. data/third_party/address_sorting/address_sorting.c +369 -0
  619. data/third_party/address_sorting/address_sorting_internal.h +70 -0
  620. data/third_party/address_sorting/address_sorting_posix.c +97 -0
  621. data/third_party/address_sorting/address_sorting_windows.c +55 -0
  622. data/third_party/address_sorting/include/address_sorting/address_sorting.h +110 -0
  623. data/third_party/boringssl/crypto/asn1/a_enum.c +20 -9
  624. data/third_party/boringssl/crypto/asn1/a_i2d_fp.c +3 -0
  625. data/third_party/boringssl/crypto/asn1/a_int.c +19 -8
  626. data/third_party/boringssl/crypto/asn1/a_object.c +0 -128
  627. data/third_party/boringssl/crypto/asn1/asn1_locl.h +3 -0
  628. data/third_party/boringssl/crypto/asn1/tasn_fre.c +2 -4
  629. data/third_party/boringssl/crypto/asn1/tasn_new.c +3 -2
  630. data/third_party/boringssl/crypto/bn_extra/bn_asn1.c +0 -16
  631. data/third_party/boringssl/crypto/buf/buf.c +14 -0
  632. data/third_party/boringssl/crypto/bytestring/cbb.c +93 -0
  633. data/third_party/boringssl/crypto/conf/conf.c +2 -2
  634. data/third_party/boringssl/crypto/cpu-intel.c +17 -17
  635. data/third_party/boringssl/crypto/crypto.c +16 -4
  636. data/third_party/boringssl/crypto/curve25519/spake25519.c +11 -11
  637. data/third_party/boringssl/crypto/curve25519/x25519-x86_64.c +1 -1
  638. data/third_party/boringssl/crypto/dsa/dsa.c +9 -21
  639. data/third_party/boringssl/crypto/ec_extra/ec_asn1.c +2 -2
  640. data/third_party/boringssl/crypto/ecdsa_extra/ecdsa_asn1.c +1 -8
  641. data/third_party/boringssl/crypto/evp/p_rsa_asn1.c +2 -23
  642. data/third_party/boringssl/crypto/ex_data.c +0 -1
  643. data/third_party/boringssl/crypto/fipsmodule/bn/add.c +7 -11
  644. data/third_party/boringssl/crypto/fipsmodule/bn/asm/x86_64-gcc.c +19 -16
  645. data/third_party/boringssl/crypto/fipsmodule/bn/cmp.c +15 -0
  646. data/third_party/boringssl/crypto/fipsmodule/bn/div.c +53 -46
  647. data/third_party/boringssl/crypto/fipsmodule/bn/exponentiation.c +242 -85
  648. data/third_party/boringssl/crypto/fipsmodule/bn/generic.c +42 -47
  649. data/third_party/boringssl/crypto/fipsmodule/bn/internal.h +176 -34
  650. data/third_party/boringssl/crypto/fipsmodule/bn/montgomery.c +118 -65
  651. data/third_party/boringssl/crypto/fipsmodule/bn/mul.c +94 -61
  652. data/third_party/boringssl/crypto/fipsmodule/bn/random.c +79 -63
  653. data/third_party/boringssl/crypto/fipsmodule/bn/shift.c +26 -28
  654. data/third_party/boringssl/crypto/fipsmodule/cipher/cipher.c +2 -0
  655. data/third_party/boringssl/crypto/fipsmodule/ec/ec.c +250 -149
  656. data/third_party/boringssl/crypto/fipsmodule/ec/ec_montgomery.c +0 -27
  657. data/third_party/boringssl/crypto/fipsmodule/ec/internal.h +54 -20
  658. data/third_party/boringssl/crypto/fipsmodule/ec/oct.c +3 -3
  659. data/third_party/boringssl/crypto/fipsmodule/ec/p224-64.c +7 -41
  660. data/third_party/boringssl/crypto/fipsmodule/ec/p256-64.c +6 -40
  661. data/third_party/boringssl/crypto/fipsmodule/ec/p256-x86_64.c +17 -122
  662. data/third_party/boringssl/crypto/fipsmodule/ec/simple.c +3 -64
  663. data/third_party/boringssl/crypto/fipsmodule/ec/wnaf.c +27 -9
  664. data/third_party/boringssl/crypto/fipsmodule/ecdsa/ecdsa.c +203 -205
  665. data/third_party/boringssl/crypto/fipsmodule/modes/cbc.c +14 -15
  666. data/third_party/boringssl/crypto/fipsmodule/modes/cfb.c +12 -8
  667. data/third_party/boringssl/crypto/fipsmodule/modes/ctr.c +4 -3
  668. data/third_party/boringssl/crypto/fipsmodule/modes/gcm.c +25 -36
  669. data/third_party/boringssl/crypto/fipsmodule/modes/internal.h +10 -0
  670. data/third_party/boringssl/crypto/fipsmodule/rsa/internal.h +0 -4
  671. data/third_party/boringssl/crypto/fipsmodule/rsa/rsa.c +2 -0
  672. data/third_party/boringssl/crypto/fipsmodule/rsa/rsa_impl.c +9 -19
  673. data/third_party/boringssl/crypto/lhash/lhash.c +19 -0
  674. data/third_party/boringssl/crypto/obj/obj.c +29 -69
  675. data/third_party/boringssl/crypto/pem/pem_lib.c +2 -2
  676. data/third_party/boringssl/crypto/poly1305/poly1305_vec.c +4 -55
  677. data/third_party/boringssl/crypto/rsa_extra/rsa_asn1.c +3 -22
  678. data/third_party/boringssl/crypto/x509/by_dir.c +1 -3
  679. data/third_party/boringssl/crypto/x509/by_file.c +0 -1
  680. data/third_party/boringssl/crypto/x509/x509_lu.c +0 -1
  681. data/third_party/boringssl/crypto/x509/x509_obj.c +1 -3
  682. data/third_party/boringssl/crypto/x509/x509_txt.c +0 -6
  683. data/third_party/boringssl/crypto/x509/x509_vfy.c +0 -1
  684. data/third_party/boringssl/crypto/x509/x509_vpm.c +0 -1
  685. data/third_party/boringssl/crypto/x509/x_algor.c +2 -2
  686. data/third_party/boringssl/crypto/x509v3/v3_alt.c +3 -4
  687. data/third_party/boringssl/crypto/x509v3/v3_genn.c +1 -0
  688. data/third_party/boringssl/crypto/x509v3/v3_info.c +1 -2
  689. data/third_party/boringssl/crypto/x509v3/v3_lib.c +15 -7
  690. data/third_party/boringssl/crypto/x509v3/v3_utl.c +41 -2
  691. data/third_party/boringssl/include/openssl/asn1.h +0 -1
  692. data/third_party/boringssl/include/openssl/base.h +1 -1
  693. data/third_party/boringssl/include/openssl/bio.h +5 -2
  694. data/third_party/boringssl/include/openssl/bn.h +2 -17
  695. data/third_party/boringssl/include/openssl/buf.h +4 -0
  696. data/third_party/boringssl/include/openssl/bytestring.h +11 -0
  697. data/third_party/boringssl/include/openssl/chacha.h +5 -1
  698. data/third_party/boringssl/include/openssl/cipher.h +10 -0
  699. data/third_party/boringssl/include/openssl/conf.h +4 -8
  700. data/third_party/boringssl/include/openssl/dsa.h +2 -18
  701. data/third_party/boringssl/include/openssl/ec.h +5 -5
  702. data/third_party/boringssl/include/openssl/ecdsa.h +10 -28
  703. data/third_party/boringssl/include/openssl/evp.h +0 -4
  704. data/third_party/boringssl/include/openssl/lhash.h +1 -18
  705. data/third_party/boringssl/include/openssl/obj.h +1 -0
  706. data/third_party/boringssl/include/openssl/rsa.h +3 -4
  707. data/third_party/boringssl/include/openssl/ssl.h +35 -54
  708. data/third_party/boringssl/include/openssl/ssl3.h +2 -0
  709. data/third_party/boringssl/include/openssl/stack.h +1 -1
  710. data/third_party/boringssl/include/openssl/tls1.h +1 -16
  711. data/third_party/boringssl/include/openssl/x509.h +3 -2
  712. data/third_party/boringssl/include/openssl/x509_vfy.h +0 -2
  713. data/third_party/boringssl/include/openssl/x509v3.h +1 -0
  714. data/third_party/boringssl/ssl/custom_extensions.cc +1 -1
  715. data/third_party/boringssl/ssl/d1_both.cc +120 -129
  716. data/third_party/boringssl/ssl/d1_lib.cc +23 -21
  717. data/third_party/boringssl/ssl/d1_pkt.cc +39 -143
  718. data/third_party/boringssl/ssl/dtls_method.cc +16 -23
  719. data/third_party/boringssl/ssl/dtls_record.cc +11 -4
  720. data/third_party/boringssl/ssl/handshake.cc +109 -40
  721. data/third_party/boringssl/ssl/handshake_client.cc +104 -96
  722. data/third_party/boringssl/ssl/handshake_server.cc +62 -72
  723. data/third_party/boringssl/ssl/internal.h +397 -318
  724. data/third_party/boringssl/ssl/s3_both.cc +173 -191
  725. data/third_party/boringssl/ssl/s3_lib.cc +26 -34
  726. data/third_party/boringssl/ssl/s3_pkt.cc +105 -247
  727. data/third_party/boringssl/ssl/ssl_asn1.cc +22 -22
  728. data/third_party/boringssl/ssl/ssl_buffer.cc +98 -108
  729. data/third_party/boringssl/ssl/ssl_cert.cc +12 -1
  730. data/third_party/boringssl/ssl/ssl_cipher.cc +23 -28
  731. data/third_party/boringssl/ssl/ssl_key_share.cc +11 -6
  732. data/third_party/boringssl/ssl/ssl_lib.cc +190 -113
  733. data/third_party/boringssl/ssl/ssl_privkey.cc +76 -106
  734. data/third_party/boringssl/ssl/ssl_session.cc +3 -3
  735. data/third_party/boringssl/ssl/ssl_stat.cc +3 -3
  736. data/third_party/boringssl/ssl/ssl_transcript.cc +38 -22
  737. data/third_party/boringssl/ssl/ssl_versions.cc +64 -31
  738. data/third_party/boringssl/ssl/t1_enc.cc +137 -154
  739. data/third_party/boringssl/ssl/t1_lib.cc +463 -478
  740. data/third_party/boringssl/ssl/tls13_both.cc +57 -58
  741. data/third_party/boringssl/ssl/tls13_client.cc +256 -121
  742. data/third_party/boringssl/ssl/tls13_enc.cc +187 -72
  743. data/third_party/boringssl/ssl/tls13_server.cc +187 -86
  744. data/third_party/boringssl/ssl/tls_method.cc +20 -30
  745. data/third_party/boringssl/ssl/tls_record.cc +77 -40
  746. data/third_party/boringssl/third_party/fiat/curve25519.c +5062 -0
  747. data/third_party/boringssl/{crypto/curve25519 → third_party/fiat}/internal.h +40 -27
  748. data/third_party/nanopb/pb.h +1 -1
  749. metadata +147 -45
  750. data/src/core/lib/gpr/thd.cc +0 -49
  751. data/src/core/lib/gpr/thd.h +0 -71
  752. data/src/core/lib/gpr/thd_posix.cc +0 -154
  753. data/src/core/lib/gpr/thd_windows.cc +0 -107
  754. data/src/core/lib/iomgr/iomgr_uv.h +0 -37
  755. data/src/core/lib/iomgr/pollset_set_uv.cc +0 -43
  756. data/src/core/lib/iomgr/resolve_address_uv.cc +0 -284
  757. data/src/core/lib/iomgr/tcp_client_uv.cc +0 -175
  758. data/src/core/lib/iomgr/tcp_server_uv.cc +0 -471
  759. data/src/core/lib/iomgr/tcp_uv.h +0 -51
  760. data/src/core/lib/security/transport/lb_targets_info.cc +0 -59
  761. data/src/core/lib/slice/slice_hash_table.cc +0 -145
  762. data/third_party/boringssl/crypto/curve25519/curve25519.c +0 -4938
@@ -299,6 +299,7 @@ OPENSSL_COMPILE_ASSERT(
299
299
  #define SSL3_MT_CLIENT_HELLO 1
300
300
  #define SSL3_MT_SERVER_HELLO 2
301
301
  #define SSL3_MT_NEW_SESSION_TICKET 4
302
+ #define SSL3_MT_END_OF_EARLY_DATA 5
302
303
  #define SSL3_MT_HELLO_RETRY_REQUEST 6
303
304
  #define SSL3_MT_ENCRYPTED_EXTENSIONS 8
304
305
  #define SSL3_MT_CERTIFICATE 11
@@ -313,6 +314,7 @@ OPENSSL_COMPILE_ASSERT(
313
314
  #define SSL3_MT_KEY_UPDATE 24
314
315
  #define SSL3_MT_NEXT_PROTO 67
315
316
  #define SSL3_MT_CHANNEL_ID 203
317
+ #define SSL3_MT_MESSAGE_HASH 254
316
318
  #define DTLS1_MT_HELLO_VERIFY_REQUEST 3
317
319
 
318
320
  // The following are legacy aliases for consumers which use
@@ -245,7 +245,7 @@ struct StackTraits {};
245
245
  // are defined in a header.
246
246
 
247
247
  #define BORINGSSL_DEFINE_STACK_OF_IMPL(name, ptrtype, constptrtype) \
248
- DECLARE_STACK_OF(name); \
248
+ DECLARE_STACK_OF(name) \
249
249
  \
250
250
  typedef int (*stack_##name##_cmp_func)(constptrtype *a, constptrtype *b); \
251
251
  \
@@ -214,6 +214,7 @@ extern "C" {
214
214
  #define TLSEXT_TYPE_cookie 44
215
215
  #define TLSEXT_TYPE_psk_key_exchange_modes 45
216
216
  #define TLSEXT_TYPE_ticket_early_data_info 46
217
+ #define TLSEXT_TYPE_certificate_authorities 47
217
218
 
218
219
  // ExtensionType value from RFC5746
219
220
  #define TLSEXT_TYPE_renegotiate 0xff01
@@ -600,22 +601,6 @@ extern "C" {
600
601
  #define TLS_CT_ECDSA_FIXED_ECDH 66
601
602
 
602
603
  #define TLS_MD_MAX_CONST_SIZE 20
603
- #define TLS_MD_CLIENT_FINISH_CONST "client finished"
604
- #define TLS_MD_CLIENT_FINISH_CONST_SIZE 15
605
- #define TLS_MD_SERVER_FINISH_CONST "server finished"
606
- #define TLS_MD_SERVER_FINISH_CONST_SIZE 15
607
- #define TLS_MD_KEY_EXPANSION_CONST "key expansion"
608
- #define TLS_MD_KEY_EXPANSION_CONST_SIZE 13
609
- #define TLS_MD_CLIENT_WRITE_KEY_CONST "client write key"
610
- #define TLS_MD_CLIENT_WRITE_KEY_CONST_SIZE 16
611
- #define TLS_MD_SERVER_WRITE_KEY_CONST "server write key"
612
- #define TLS_MD_SERVER_WRITE_KEY_CONST_SIZE 16
613
- #define TLS_MD_IV_BLOCK_CONST "IV block"
614
- #define TLS_MD_IV_BLOCK_CONST_SIZE 8
615
- #define TLS_MD_MASTER_SECRET_CONST "master secret"
616
- #define TLS_MD_MASTER_SECRET_CONST_SIZE 13
617
- #define TLS_MD_EXTENDED_MASTER_SECRET_CONST "extended master secret"
618
- #define TLS_MD_EXTENDED_MASTER_SECRET_CONST_SIZE 22
619
604
 
620
605
 
621
606
  #ifdef __cplusplus
@@ -680,8 +680,9 @@ OPENSSL_EXPORT X509_REVOKED *X509_REVOKED_dup(X509_REVOKED *rev);
680
680
  OPENSSL_EXPORT X509_REQ *X509_REQ_dup(X509_REQ *req);
681
681
  OPENSSL_EXPORT X509_ALGOR *X509_ALGOR_dup(X509_ALGOR *xn);
682
682
  OPENSSL_EXPORT int X509_ALGOR_set0(X509_ALGOR *alg, const ASN1_OBJECT *aobj, int ptype, void *pval);
683
- OPENSSL_EXPORT void X509_ALGOR_get0(ASN1_OBJECT **paobj, int *pptype, void **ppval,
684
- X509_ALGOR *algor);
683
+ OPENSSL_EXPORT void X509_ALGOR_get0(const ASN1_OBJECT **paobj, int *pptype,
684
+ const void **ppval,
685
+ const X509_ALGOR *algor);
685
686
  OPENSSL_EXPORT void X509_ALGOR_set_md(X509_ALGOR *alg, const EVP_MD *md);
686
687
  OPENSSL_EXPORT int X509_ALGOR_cmp(const X509_ALGOR *a, const X509_ALGOR *b);
687
688
 
@@ -64,8 +64,6 @@
64
64
  #ifndef HEADER_X509_VFY_H
65
65
  #define HEADER_X509_VFY_H
66
66
 
67
- #include <openssl/bio.h>
68
- #include <openssl/lhash.h>
69
67
  #include <openssl/thread.h>
70
68
 
71
69
  #ifdef __cplusplus
@@ -57,6 +57,7 @@
57
57
 
58
58
  #include <openssl/bio.h>
59
59
  #include <openssl/conf.h>
60
+ #include <openssl/lhash.h>
60
61
  #include <openssl/x509.h>
61
62
 
62
63
  #ifdef __cplusplus
@@ -114,7 +114,7 @@ static int custom_ext_add_hello(SSL_HANDSHAKE *hs, CBB *extensions) {
114
114
  break;
115
115
 
116
116
  default:
117
- ssl3_send_alert(ssl, SSL3_AL_FATAL, alert);
117
+ ssl_send_alert(ssl, SSL3_AL_FATAL, alert);
118
118
  OPENSSL_PUT_ERROR(SSL, SSL_R_CUSTOM_EXTENSION_ERROR);
119
119
  ERR_add_error_dataf("extension %u", (unsigned) ext->value);
120
120
  return 0;
@@ -144,23 +144,18 @@ static const unsigned int kDefaultMTU = 1500 - 28;
144
144
 
145
145
  // Receiving handshake messages.
146
146
 
147
- static void dtls1_hm_fragment_free(hm_fragment *frag) {
148
- if (frag == NULL) {
149
- return;
150
- }
151
- OPENSSL_free(frag->data);
152
- OPENSSL_free(frag->reassembly);
153
- OPENSSL_free(frag);
147
+ hm_fragment::~hm_fragment() {
148
+ OPENSSL_free(data);
149
+ OPENSSL_free(reassembly);
154
150
  }
155
151
 
156
- static hm_fragment *dtls1_hm_fragment_new(const struct hm_header_st *msg_hdr) {
152
+ static UniquePtr<hm_fragment> dtls1_hm_fragment_new(
153
+ const struct hm_header_st *msg_hdr) {
157
154
  ScopedCBB cbb;
158
- hm_fragment *frag = (hm_fragment *)OPENSSL_malloc(sizeof(hm_fragment));
159
- if (frag == NULL) {
160
- OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
161
- return NULL;
155
+ UniquePtr<hm_fragment> frag = MakeUnique<hm_fragment>();
156
+ if (!frag) {
157
+ return nullptr;
162
158
  }
163
- OPENSSL_memset(frag, 0, sizeof(hm_fragment));
164
159
  frag->type = msg_hdr->type;
165
160
  frag->seq = msg_hdr->seq;
166
161
  frag->msg_len = msg_hdr->msg_len;
@@ -170,7 +165,7 @@ static hm_fragment *dtls1_hm_fragment_new(const struct hm_header_st *msg_hdr) {
170
165
  (uint8_t *)OPENSSL_malloc(DTLS1_HM_HEADER_LENGTH + msg_hdr->msg_len);
171
166
  if (frag->data == NULL) {
172
167
  OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
173
- goto err;
168
+ return nullptr;
174
169
  }
175
170
 
176
171
  if (!CBB_init_fixed(cbb.get(), frag->data, DTLS1_HM_HEADER_LENGTH) ||
@@ -181,7 +176,7 @@ static hm_fragment *dtls1_hm_fragment_new(const struct hm_header_st *msg_hdr) {
181
176
  !CBB_add_u24(cbb.get(), msg_hdr->msg_len) ||
182
177
  !CBB_finish(cbb.get(), NULL, NULL)) {
183
178
  OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
184
- goto err;
179
+ return nullptr;
185
180
  }
186
181
 
187
182
  // If the handshake message is empty, |frag->reassembly| is NULL.
@@ -189,22 +184,18 @@ static hm_fragment *dtls1_hm_fragment_new(const struct hm_header_st *msg_hdr) {
189
184
  // Initialize reassembly bitmask.
190
185
  if (msg_hdr->msg_len + 7 < msg_hdr->msg_len) {
191
186
  OPENSSL_PUT_ERROR(SSL, ERR_R_OVERFLOW);
192
- goto err;
187
+ return nullptr;
193
188
  }
194
189
  size_t bitmask_len = (msg_hdr->msg_len + 7) / 8;
195
190
  frag->reassembly = (uint8_t *)OPENSSL_malloc(bitmask_len);
196
191
  if (frag->reassembly == NULL) {
197
192
  OPENSSL_PUT_ERROR(SSL, ERR_R_MALLOC_FAILURE);
198
- goto err;
193
+ return nullptr;
199
194
  }
200
195
  OPENSSL_memset(frag->reassembly, 0, bitmask_len);
201
196
  }
202
197
 
203
198
  return frag;
204
-
205
- err:
206
- dtls1_hm_fragment_free(frag);
207
- return NULL;
208
199
  }
209
200
 
210
201
  // bit_range returns a |uint8_t| with bits |start|, inclusive, to |end|,
@@ -259,11 +250,11 @@ static void dtls1_hm_fragment_mark(hm_fragment *frag, size_t start,
259
250
  frag->reassembly = NULL;
260
251
  }
261
252
 
262
- // dtls1_is_current_message_complete returns one if the current handshake
263
- // message is complete and zero otherwise.
264
- static int dtls1_is_current_message_complete(const SSL *ssl) {
265
- hm_fragment *frag = ssl->d1->incoming_messages[ssl->d1->handshake_read_seq %
266
- SSL_MAX_HANDSHAKE_FLIGHT];
253
+ // dtls1_is_current_message_complete returns whether the current handshake
254
+ // message is complete.
255
+ static bool dtls1_is_current_message_complete(const SSL *ssl) {
256
+ size_t idx = ssl->d1->handshake_read_seq % SSL_MAX_HANDSHAKE_FLIGHT;
257
+ hm_fragment *frag = ssl->d1->incoming_messages[idx].get();
267
258
  return frag != NULL && frag->reassembly == NULL;
268
259
  }
269
260
 
@@ -272,14 +263,15 @@ static int dtls1_is_current_message_complete(const SSL *ssl) {
272
263
  // queue. Otherwise, it checks |msg_hdr| is consistent with the existing one. It
273
264
  // returns NULL on failure. The caller does not take ownership of the result.
274
265
  static hm_fragment *dtls1_get_incoming_message(
275
- SSL *ssl, const struct hm_header_st *msg_hdr) {
266
+ SSL *ssl, uint8_t *out_alert, const struct hm_header_st *msg_hdr) {
276
267
  if (msg_hdr->seq < ssl->d1->handshake_read_seq ||
277
268
  msg_hdr->seq - ssl->d1->handshake_read_seq >= SSL_MAX_HANDSHAKE_FLIGHT) {
269
+ *out_alert = SSL_AD_INTERNAL_ERROR;
278
270
  return NULL;
279
271
  }
280
272
 
281
273
  size_t idx = msg_hdr->seq % SSL_MAX_HANDSHAKE_FLIGHT;
282
- hm_fragment *frag = ssl->d1->incoming_messages[idx];
274
+ hm_fragment *frag = ssl->d1->incoming_messages[idx].get();
283
275
  if (frag != NULL) {
284
276
  assert(frag->seq == msg_hdr->seq);
285
277
  // The new fragment must be compatible with the previous fragments from this
@@ -287,90 +279,84 @@ static hm_fragment *dtls1_get_incoming_message(
287
279
  if (frag->type != msg_hdr->type ||
288
280
  frag->msg_len != msg_hdr->msg_len) {
289
281
  OPENSSL_PUT_ERROR(SSL, SSL_R_FRAGMENT_MISMATCH);
290
- ssl3_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_ILLEGAL_PARAMETER);
282
+ *out_alert = SSL_AD_ILLEGAL_PARAMETER;
291
283
  return NULL;
292
284
  }
293
285
  return frag;
294
286
  }
295
287
 
296
288
  // This is the first fragment from this message.
297
- frag = dtls1_hm_fragment_new(msg_hdr);
298
- if (frag == NULL) {
289
+ ssl->d1->incoming_messages[idx] = dtls1_hm_fragment_new(msg_hdr);
290
+ if (!ssl->d1->incoming_messages[idx]) {
291
+ *out_alert = SSL_AD_INTERNAL_ERROR;
299
292
  return NULL;
300
293
  }
301
- ssl->d1->incoming_messages[idx] = frag;
302
- return frag;
294
+ return ssl->d1->incoming_messages[idx].get();
303
295
  }
304
296
 
305
- int dtls1_read_message(SSL *ssl) {
306
- SSL3_RECORD *rr = &ssl->s3->rrec;
307
- if (rr->length == 0) {
308
- int ret = dtls1_get_record(ssl);
309
- if (ret <= 0) {
310
- return ret;
311
- }
297
+ ssl_open_record_t dtls1_open_handshake(SSL *ssl, size_t *out_consumed,
298
+ uint8_t *out_alert, Span<uint8_t> in) {
299
+ uint8_t type;
300
+ Span<uint8_t> record;
301
+ auto ret = dtls_open_record(ssl, &type, &record, out_consumed, out_alert, in);
302
+ if (ret != ssl_open_record_success) {
303
+ return ret;
312
304
  }
313
305
 
314
- switch (rr->type) {
306
+ switch (type) {
315
307
  case SSL3_RT_APPLICATION_DATA:
316
308
  // Unencrypted application data records are always illegal.
317
309
  if (ssl->s3->aead_read_ctx->is_null_cipher()) {
318
- ssl3_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_UNEXPECTED_MESSAGE);
319
310
  OPENSSL_PUT_ERROR(SSL, SSL_R_UNEXPECTED_RECORD);
320
- return -1;
311
+ *out_alert = SSL_AD_UNEXPECTED_MESSAGE;
312
+ return ssl_open_record_error;
321
313
  }
322
314
 
323
315
  // Out-of-order application data may be received between ChangeCipherSpec
324
316
  // and finished. Discard it.
325
- rr->length = 0;
326
- ssl_read_buffer_discard(ssl);
327
- return 1;
317
+ return ssl_open_record_discard;
328
318
 
329
319
  case SSL3_RT_CHANGE_CIPHER_SPEC:
330
320
  // We do not support renegotiation, so encrypted ChangeCipherSpec records
331
321
  // are illegal.
332
322
  if (!ssl->s3->aead_read_ctx->is_null_cipher()) {
333
- ssl3_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_UNEXPECTED_MESSAGE);
334
323
  OPENSSL_PUT_ERROR(SSL, SSL_R_UNEXPECTED_RECORD);
335
- return -1;
324
+ *out_alert = SSL_AD_UNEXPECTED_MESSAGE;
325
+ return ssl_open_record_error;
336
326
  }
337
327
 
338
- if (rr->length != 1 || rr->data[0] != SSL3_MT_CCS) {
328
+ if (record.size() != 1u || record[0] != SSL3_MT_CCS) {
339
329
  OPENSSL_PUT_ERROR(SSL, SSL_R_BAD_CHANGE_CIPHER_SPEC);
340
- ssl3_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_ILLEGAL_PARAMETER);
341
- return -1;
330
+ *out_alert = SSL_AD_ILLEGAL_PARAMETER;
331
+ return ssl_open_record_error;
342
332
  }
343
333
 
344
334
  // Flag the ChangeCipherSpec for later.
345
335
  ssl->d1->has_change_cipher_spec = true;
346
336
  ssl_do_msg_callback(ssl, 0 /* read */, SSL3_RT_CHANGE_CIPHER_SPEC,
347
- MakeSpan(rr->data, rr->length));
348
-
349
- rr->length = 0;
350
- ssl_read_buffer_discard(ssl);
351
- return 1;
337
+ record);
338
+ return ssl_open_record_success;
352
339
 
353
340
  case SSL3_RT_HANDSHAKE:
354
341
  // Break out to main processing.
355
342
  break;
356
343
 
357
344
  default:
358
- ssl3_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_UNEXPECTED_MESSAGE);
359
345
  OPENSSL_PUT_ERROR(SSL, SSL_R_UNEXPECTED_RECORD);
360
- return -1;
346
+ *out_alert = SSL_AD_UNEXPECTED_MESSAGE;
347
+ return ssl_open_record_error;
361
348
  }
362
349
 
363
350
  CBS cbs;
364
- CBS_init(&cbs, rr->data, rr->length);
365
-
351
+ CBS_init(&cbs, record.data(), record.size());
366
352
  while (CBS_len(&cbs) > 0) {
367
353
  // Read a handshake fragment.
368
354
  struct hm_header_st msg_hdr;
369
355
  CBS body;
370
356
  if (!dtls1_parse_fragment(&cbs, &msg_hdr, &body)) {
371
357
  OPENSSL_PUT_ERROR(SSL, SSL_R_BAD_HANDSHAKE_RECORD);
372
- ssl3_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_DECODE_ERROR);
373
- return -1;
358
+ *out_alert = SSL_AD_DECODE_ERROR;
359
+ return ssl_open_record_error;
374
360
  }
375
361
 
376
362
  const size_t frag_off = msg_hdr.frag_off;
@@ -380,15 +366,15 @@ int dtls1_read_message(SSL *ssl) {
380
366
  frag_off + frag_len > msg_len ||
381
367
  msg_len > ssl_max_handshake_message_len(ssl)) {
382
368
  OPENSSL_PUT_ERROR(SSL, SSL_R_EXCESSIVE_MESSAGE_SIZE);
383
- ssl3_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_ILLEGAL_PARAMETER);
384
- return -1;
369
+ *out_alert = SSL_AD_ILLEGAL_PARAMETER;
370
+ return ssl_open_record_error;
385
371
  }
386
372
 
387
373
  // The encrypted epoch in DTLS has only one handshake message.
388
374
  if (ssl->d1->r_epoch == 1 && msg_hdr.seq != ssl->d1->handshake_read_seq) {
389
375
  OPENSSL_PUT_ERROR(SSL, SSL_R_UNEXPECTED_RECORD);
390
- ssl3_send_alert(ssl, SSL3_AL_FATAL, SSL_AD_UNEXPECTED_MESSAGE);
391
- return -1;
376
+ *out_alert = SSL_AD_UNEXPECTED_MESSAGE;
377
+ return ssl_open_record_error;
392
378
  }
393
379
 
394
380
  if (msg_hdr.seq < ssl->d1->handshake_read_seq ||
@@ -398,9 +384,9 @@ int dtls1_read_message(SSL *ssl) {
398
384
  continue;
399
385
  }
400
386
 
401
- hm_fragment *frag = dtls1_get_incoming_message(ssl, &msg_hdr);
387
+ hm_fragment *frag = dtls1_get_incoming_message(ssl, out_alert, &msg_hdr);
402
388
  if (frag == NULL) {
403
- return -1;
389
+ return ssl_open_record_error;
404
390
  }
405
391
  assert(frag->msg_len == msg_len);
406
392
 
@@ -416,9 +402,7 @@ int dtls1_read_message(SSL *ssl) {
416
402
  dtls1_hm_fragment_mark(frag, frag_off, frag_off + frag_len);
417
403
  }
418
404
 
419
- rr->length = 0;
420
- ssl_read_buffer_discard(ssl);
421
- return 1;
405
+ return ssl_open_record_success;
422
406
  }
423
407
 
424
408
  bool dtls1_get_message(SSL *ssl, SSLMessage *out) {
@@ -426,8 +410,8 @@ bool dtls1_get_message(SSL *ssl, SSLMessage *out) {
426
410
  return false;
427
411
  }
428
412
 
429
- hm_fragment *frag = ssl->d1->incoming_messages[ssl->d1->handshake_read_seq %
430
- SSL_MAX_HANDSHAKE_FLIGHT];
413
+ size_t idx = ssl->d1->handshake_read_seq % SSL_MAX_HANDSHAKE_FLIGHT;
414
+ hm_fragment *frag = ssl->d1->incoming_messages[idx].get();
431
415
  out->type = frag->type;
432
416
  CBS_init(&out->body, frag->data + DTLS1_HM_HEADER_LENGTH, frag->msg_len);
433
417
  CBS_init(&out->raw, frag->data, DTLS1_HM_HEADER_LENGTH + frag->msg_len);
@@ -443,8 +427,7 @@ void dtls1_next_message(SSL *ssl) {
443
427
  assert(ssl->s3->has_message);
444
428
  assert(dtls1_is_current_message_complete(ssl));
445
429
  size_t index = ssl->d1->handshake_read_seq % SSL_MAX_HANDSHAKE_FLIGHT;
446
- dtls1_hm_fragment_free(ssl->d1->incoming_messages[index]);
447
- ssl->d1->incoming_messages[index] = NULL;
430
+ ssl->d1->incoming_messages[index].reset();
448
431
  ssl->d1->handshake_read_seq++;
449
432
  ssl->s3->has_message = false;
450
433
  // If we previously sent a flight, mark it as having a reply, so
@@ -454,14 +437,11 @@ void dtls1_next_message(SSL *ssl) {
454
437
  }
455
438
  }
456
439
 
457
- void dtls_clear_incoming_messages(SSL *ssl) {
458
- for (size_t i = 0; i < SSL_MAX_HANDSHAKE_FLIGHT; i++) {
459
- dtls1_hm_fragment_free(ssl->d1->incoming_messages[i]);
460
- ssl->d1->incoming_messages[i] = NULL;
440
+ bool dtls_has_unprocessed_handshake_data(const SSL *ssl) {
441
+ if (ssl->d1->has_change_cipher_spec) {
442
+ return true;
461
443
  }
462
- }
463
444
 
464
- int dtls_has_incoming_messages(const SSL *ssl) {
465
445
  size_t current = ssl->d1->handshake_read_seq % SSL_MAX_HANDSHAKE_FLIGHT;
466
446
  for (size_t i = 0; i < SSL_MAX_HANDSHAKE_FLIGHT; i++) {
467
447
  // Skip the current message.
@@ -469,15 +449,15 @@ int dtls_has_incoming_messages(const SSL *ssl) {
469
449
  assert(dtls1_is_current_message_complete(ssl));
470
450
  continue;
471
451
  }
472
- if (ssl->d1->incoming_messages[i] != NULL) {
473
- return 1;
452
+ if (ssl->d1->incoming_messages[i] != nullptr) {
453
+ return true;
474
454
  }
475
455
  }
476
- return 0;
456
+ return false;
477
457
  }
478
458
 
479
- int dtls1_parse_fragment(CBS *cbs, struct hm_header_st *out_hdr,
480
- CBS *out_body) {
459
+ bool dtls1_parse_fragment(CBS *cbs, struct hm_header_st *out_hdr,
460
+ CBS *out_body) {
481
461
  OPENSSL_memset(out_hdr, 0x00, sizeof(struct hm_header_st));
482
462
 
483
463
  if (!CBS_get_u8(cbs, &out_hdr->type) ||
@@ -486,32 +466,40 @@ int dtls1_parse_fragment(CBS *cbs, struct hm_header_st *out_hdr,
486
466
  !CBS_get_u24(cbs, &out_hdr->frag_off) ||
487
467
  !CBS_get_u24(cbs, &out_hdr->frag_len) ||
488
468
  !CBS_get_bytes(cbs, out_body, out_hdr->frag_len)) {
489
- return 0;
469
+ return false;
490
470
  }
491
471
 
492
- return 1;
472
+ return true;
493
473
  }
494
474
 
495
- int dtls1_read_change_cipher_spec(SSL *ssl) {
496
- // Process handshake records until there is a ChangeCipherSpec.
497
- while (!ssl->d1->has_change_cipher_spec) {
498
- int ret = dtls1_read_message(ssl);
499
- if (ret <= 0) {
475
+ ssl_open_record_t dtls1_open_change_cipher_spec(SSL *ssl, size_t *out_consumed,
476
+ uint8_t *out_alert,
477
+ Span<uint8_t> in) {
478
+ if (!ssl->d1->has_change_cipher_spec) {
479
+ // dtls1_open_handshake processes both handshake and ChangeCipherSpec.
480
+ auto ret = dtls1_open_handshake(ssl, out_consumed, out_alert, in);
481
+ if (ret != ssl_open_record_success) {
500
482
  return ret;
501
483
  }
502
484
  }
503
-
504
- ssl->d1->has_change_cipher_spec = false;
505
- return 1;
485
+ if (ssl->d1->has_change_cipher_spec) {
486
+ ssl->d1->has_change_cipher_spec = false;
487
+ return ssl_open_record_success;
488
+ }
489
+ return ssl_open_record_discard;
506
490
  }
507
491
 
508
492
 
509
493
  // Sending handshake messages.
510
494
 
495
+ void DTLS_OUTGOING_MESSAGE::Clear() {
496
+ OPENSSL_free(data);
497
+ data = nullptr;
498
+ }
499
+
511
500
  void dtls_clear_outgoing_messages(SSL *ssl) {
512
501
  for (size_t i = 0; i < ssl->d1->outgoing_messages_len; i++) {
513
- OPENSSL_free(ssl->d1->outgoing_messages[i].data);
514
- ssl->d1->outgoing_messages[i].data = NULL;
502
+ ssl->d1->outgoing_messages[i].Clear();
515
503
  }
516
504
  ssl->d1->outgoing_messages_len = 0;
517
505
  ssl->d1->outgoing_written = 0;
@@ -520,7 +508,7 @@ void dtls_clear_outgoing_messages(SSL *ssl) {
520
508
  ssl->d1->flight_has_reply = false;
521
509
  }
522
510
 
523
- int dtls1_init_message(SSL *ssl, CBB *cbb, CBB *body, uint8_t type) {
511
+ bool dtls1_init_message(SSL *ssl, CBB *cbb, CBB *body, uint8_t type) {
524
512
  // Pick a modest size hint to save most of the |realloc| calls.
525
513
  if (!CBB_init(cbb, 64) ||
526
514
  !CBB_add_u8(cbb, type) ||
@@ -528,31 +516,29 @@ int dtls1_init_message(SSL *ssl, CBB *cbb, CBB *body, uint8_t type) {
528
516
  !CBB_add_u16(cbb, ssl->d1->handshake_write_seq) ||
529
517
  !CBB_add_u24(cbb, 0 /* offset */) ||
530
518
  !CBB_add_u24_length_prefixed(cbb, body)) {
531
- return 0;
519
+ return false;
532
520
  }
533
521
 
534
- return 1;
522
+ return true;
535
523
  }
536
524
 
537
- int dtls1_finish_message(SSL *ssl, CBB *cbb, Array<uint8_t> *out_msg) {
525
+ bool dtls1_finish_message(SSL *ssl, CBB *cbb, Array<uint8_t> *out_msg) {
538
526
  if (!CBBFinishArray(cbb, out_msg) ||
539
527
  out_msg->size() < DTLS1_HM_HEADER_LENGTH) {
540
528
  OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR);
541
- return 0;
529
+ return false;
542
530
  }
543
531
 
544
532
  // Fix up the header. Copy the fragment length into the total message
545
533
  // length.
546
534
  OPENSSL_memcpy(out_msg->data() + 1,
547
535
  out_msg->data() + DTLS1_HM_HEADER_LENGTH - 3, 3);
548
- return 1;
536
+ return true;
549
537
  }
550
538
 
551
539
  // add_outgoing adds a new handshake message or ChangeCipherSpec to the current
552
- // outgoing flight. It returns one on success and zero on error. In both cases,
553
- // it takes ownership of |data| and releases it with |OPENSSL_free| when
554
- // done.
555
- static int add_outgoing(SSL *ssl, int is_ccs, Array<uint8_t> data) {
540
+ // outgoing flight. It returns true on success and false on error.
541
+ static bool add_outgoing(SSL *ssl, bool is_ccs, Array<uint8_t> data) {
556
542
  if (ssl->d1->outgoing_messages_complete) {
557
543
  // If we've begun writing a new flight, we received the peer flight. Discard
558
544
  // the timer and the our flight.
@@ -565,18 +551,18 @@ static int add_outgoing(SSL *ssl, int is_ccs, Array<uint8_t> data) {
565
551
  "outgoing_messages_len is too small");
566
552
  if (ssl->d1->outgoing_messages_len >= SSL_MAX_HANDSHAKE_FLIGHT ||
567
553
  data.size() > 0xffffffff) {
568
- assert(0);
554
+ assert(false);
569
555
  OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR);
570
- return 0;
556
+ return false;
571
557
  }
572
558
 
573
559
  if (!is_ccs) {
574
560
  // TODO(svaldez): Move this up a layer to fix abstraction for SSLTranscript
575
561
  // on hs.
576
562
  if (ssl->s3->hs != NULL &&
577
- !ssl->s3->hs->transcript.Update(data.data(), data.size())) {
563
+ !ssl->s3->hs->transcript.Update(data)) {
578
564
  OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR);
579
- return 0;
565
+ return false;
580
566
  }
581
567
  ssl->d1->handshake_write_seq++;
582
568
  }
@@ -590,24 +576,24 @@ static int add_outgoing(SSL *ssl, int is_ccs, Array<uint8_t> data) {
590
576
  msg->is_ccs = is_ccs;
591
577
 
592
578
  ssl->d1->outgoing_messages_len++;
593
- return 1;
579
+ return true;
594
580
  }
595
581
 
596
- int dtls1_add_message(SSL *ssl, Array<uint8_t> data) {
597
- return add_outgoing(ssl, 0 /* handshake */, std::move(data));
582
+ bool dtls1_add_message(SSL *ssl, Array<uint8_t> data) {
583
+ return add_outgoing(ssl, false /* handshake */, std::move(data));
598
584
  }
599
585
 
600
- int dtls1_add_change_cipher_spec(SSL *ssl) {
601
- return add_outgoing(ssl, 1 /* ChangeCipherSpec */, Array<uint8_t>());
586
+ bool dtls1_add_change_cipher_spec(SSL *ssl) {
587
+ return add_outgoing(ssl, true /* ChangeCipherSpec */, Array<uint8_t>());
602
588
  }
603
589
 
604
- int dtls1_add_alert(SSL *ssl, uint8_t level, uint8_t desc) {
590
+ bool dtls1_add_alert(SSL *ssl, uint8_t level, uint8_t desc) {
605
591
  // The |add_alert| path is only used for warning alerts for now, which DTLS
606
592
  // never sends. This will be implemented later once closure alerts are
607
593
  // converted.
608
- assert(0);
594
+ assert(false);
609
595
  OPENSSL_PUT_ERROR(SSL, ERR_R_INTERNAL_ERROR);
610
- return 0;
596
+ return false;
611
597
  }
612
598
 
613
599
  // dtls1_update_mtu updates the current MTU from the BIO, ensuring it is above
@@ -736,9 +722,9 @@ static enum seal_result_t seal_next_message(SSL *ssl, uint8_t *out,
736
722
  // seal_next_packet writes as much of the next flight as possible to |out| and
737
723
  // advances |ssl->d1->outgoing_written| and |ssl->d1->outgoing_offset| as
738
724
  // appropriate.
739
- static int seal_next_packet(SSL *ssl, uint8_t *out, size_t *out_len,
740
- size_t max_out) {
741
- int made_progress = 0;
725
+ static bool seal_next_packet(SSL *ssl, uint8_t *out, size_t *out_len,
726
+ size_t max_out) {
727
+ bool made_progress = false;
742
728
  size_t total = 0;
743
729
  assert(ssl->d1->outgoing_written < ssl->d1->outgoing_messages_len);
744
730
  for (; ssl->d1->outgoing_written < ssl->d1->outgoing_messages_len;
@@ -749,7 +735,7 @@ static int seal_next_packet(SSL *ssl, uint8_t *out, size_t *out_len,
749
735
  enum seal_result_t ret = seal_next_message(ssl, out, &len, max_out, msg);
750
736
  switch (ret) {
751
737
  case seal_error:
752
- return 0;
738
+ return false;
753
739
 
754
740
  case seal_no_progress:
755
741
  goto packet_full;
@@ -759,7 +745,7 @@ static int seal_next_packet(SSL *ssl, uint8_t *out, size_t *out_len,
759
745
  out += len;
760
746
  max_out -= len;
761
747
  total += len;
762
- made_progress = 1;
748
+ made_progress = true;
763
749
 
764
750
  if (ret == seal_partial) {
765
751
  goto packet_full;
@@ -772,14 +758,19 @@ packet_full:
772
758
  // The MTU was too small to make any progress.
773
759
  if (!made_progress) {
774
760
  OPENSSL_PUT_ERROR(SSL, SSL_R_MTU_TOO_SMALL);
775
- return 0;
761
+ return false;
776
762
  }
777
763
 
778
764
  *out_len = total;
779
- return 1;
765
+ return true;
780
766
  }
781
767
 
782
768
  static int send_flight(SSL *ssl) {
769
+ if (ssl->s3->write_shutdown != ssl_shutdown_none) {
770
+ OPENSSL_PUT_ERROR(SSL, SSL_R_PROTOCOL_IS_SHUTDOWN);
771
+ return -1;
772
+ }
773
+
783
774
  dtls1_update_mtu(ssl);
784
775
 
785
776
  int ret = -1;
@@ -803,14 +794,14 @@ static int send_flight(SSL *ssl) {
803
794
  // Retry this packet the next time around.
804
795
  ssl->d1->outgoing_written = old_written;
805
796
  ssl->d1->outgoing_offset = old_offset;
806
- ssl->rwstate = SSL_WRITING;
797
+ ssl->s3->rwstate = SSL_WRITING;
807
798
  ret = bio_ret;
808
799
  goto err;
809
800
  }
810
801
  }
811
802
 
812
803
  if (BIO_flush(ssl->wbio) <= 0) {
813
- ssl->rwstate = SSL_WRITING;
804
+ ssl->s3->rwstate = SSL_WRITING;
814
805
  goto err;
815
806
  }
816
807