grpc 1.37.1 → 1.38.0.pre1

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 (544) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +64 -58
  3. data/include/grpc/event_engine/README.md +38 -0
  4. data/include/grpc/event_engine/channel_args.h +28 -0
  5. data/include/grpc/event_engine/event_engine.h +336 -0
  6. data/include/grpc/event_engine/port.h +39 -0
  7. data/include/grpc/event_engine/slice_allocator.h +81 -0
  8. data/include/grpc/grpc.h +2 -2
  9. data/include/grpc/grpc_security_constants.h +14 -0
  10. data/include/grpc/impl/codegen/grpc_types.h +11 -0
  11. data/include/grpc/impl/codegen/port_platform.h +5 -0
  12. data/include/grpc/module.modulemap +14 -14
  13. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
  14. data/src/core/ext/filters/client_channel/channel_connectivity.cc +177 -202
  15. data/src/core/ext/filters/client_channel/client_channel.cc +628 -3101
  16. data/src/core/ext/filters/client_channel/client_channel.h +489 -55
  17. data/src/core/ext/filters/client_channel/client_channel_channelz.h +1 -1
  18. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +4 -1
  19. data/src/core/ext/filters/client_channel/config_selector.h +1 -1
  20. data/src/core/ext/filters/client_channel/connector.h +1 -1
  21. data/src/core/ext/filters/client_channel/dynamic_filters.cc +9 -10
  22. data/src/core/ext/filters/client_channel/dynamic_filters.h +3 -3
  23. data/src/core/ext/filters/client_channel/health/health_check_client.cc +26 -27
  24. data/src/core/ext/filters/client_channel/health/health_check_client.h +27 -26
  25. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +24 -21
  26. data/src/core/ext/filters/client_channel/lb_policy.cc +1 -1
  27. data/src/core/ext/filters/client_channel/lb_policy.h +4 -4
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +6 -6
  29. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +46 -43
  30. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -1
  31. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +2 -1
  32. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +5 -5
  33. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +14 -12
  34. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +4 -4
  35. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +1 -1
  36. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +15 -15
  37. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +36 -30
  38. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +23 -23
  39. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +31 -46
  40. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +84 -61
  41. data/src/core/ext/filters/client_channel/lb_policy_factory.h +1 -1
  42. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -4
  43. data/src/core/ext/filters/client_channel/lb_policy_registry.h +1 -1
  44. data/src/core/ext/filters/client_channel/resolver.h +2 -2
  45. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +23 -15
  46. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -1
  47. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +3 -3
  48. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
  49. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +14 -14
  50. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +33 -24
  51. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
  52. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
  53. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  54. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +17 -9
  55. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +20 -28
  56. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +7 -5
  57. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +13 -11
  58. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
  59. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +43 -28
  60. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +32 -239
  61. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +20 -49
  62. data/src/core/ext/filters/client_channel/retry_filter.cc +2188 -0
  63. data/src/core/ext/filters/client_channel/retry_filter.h +30 -0
  64. data/src/core/ext/filters/client_channel/retry_service_config.cc +287 -0
  65. data/src/core/ext/filters/client_channel/retry_service_config.h +90 -0
  66. data/src/core/ext/filters/client_channel/server_address.cc +1 -1
  67. data/src/core/ext/filters/client_channel/service_config.cc +15 -14
  68. data/src/core/ext/filters/client_channel/service_config.h +7 -6
  69. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +5 -4
  70. data/src/core/ext/filters/client_channel/service_config_parser.cc +6 -6
  71. data/src/core/ext/filters/client_channel/service_config_parser.h +7 -4
  72. data/src/core/ext/filters/client_channel/subchannel.cc +17 -16
  73. data/src/core/ext/filters/client_channel/subchannel.h +7 -6
  74. data/src/core/ext/filters/client_idle/client_idle_filter.cc +16 -15
  75. data/src/core/ext/filters/deadline/deadline_filter.cc +10 -10
  76. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +19 -18
  77. data/src/core/ext/filters/fault_injection/service_config_parser.cc +5 -5
  78. data/src/core/ext/filters/fault_injection/service_config_parser.h +1 -1
  79. data/src/core/ext/filters/http/client/http_client_filter.cc +28 -21
  80. data/src/core/ext/filters/http/client_authority_filter.cc +3 -3
  81. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +23 -22
  82. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +21 -21
  83. data/src/core/ext/filters/http/server/http_server_filter.cc +27 -23
  84. data/src/core/ext/filters/max_age/max_age_filter.cc +12 -10
  85. data/src/core/ext/filters/message_size/message_size_filter.cc +14 -11
  86. data/src/core/ext/filters/message_size/message_size_filter.h +1 -1
  87. data/src/core/ext/filters/workarounds/workaround_cronet_compression_filter.cc +4 -3
  88. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +7 -7
  89. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +7 -7
  90. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +2 -2
  91. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +1 -1
  92. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +3 -3
  93. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +44 -45
  94. data/src/core/ext/transport/chttp2/server/chttp2_server.h +2 -2
  95. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -4
  96. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +2 -2
  97. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +3 -4
  98. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +129 -116
  99. data/src/core/ext/transport/chttp2/transport/context_list.cc +4 -5
  100. data/src/core/ext/transport/chttp2/transport/context_list.h +4 -4
  101. data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
  102. data/src/core/ext/transport/chttp2/transport/flow_control.h +8 -8
  103. data/src/core/ext/transport/chttp2/transport/frame_data.cc +8 -8
  104. data/src/core/ext/transport/chttp2/transport/frame_data.h +10 -10
  105. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +7 -8
  106. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +6 -6
  107. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +7 -8
  108. data/src/core/ext/transport/chttp2/transport/frame_ping.h +7 -6
  109. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +7 -7
  110. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +6 -6
  111. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -5
  112. data/src/core/ext/transport/chttp2/transport/frame_settings.h +6 -6
  113. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +4 -6
  114. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +4 -6
  115. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +237 -208
  116. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +10 -10
  117. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +4 -3
  118. data/src/core/ext/transport/chttp2/transport/hpack_table.h +4 -4
  119. data/src/core/ext/transport/chttp2/transport/incoming_metadata.cc +2 -2
  120. data/src/core/ext/transport/chttp2/transport/incoming_metadata.h +2 -2
  121. data/src/core/ext/transport/chttp2/transport/internal.h +31 -27
  122. data/src/core/ext/transport/chttp2/transport/parsing.cc +63 -56
  123. data/src/core/ext/transport/chttp2/transport/writing.cc +7 -3
  124. data/src/core/ext/transport/inproc/inproc_transport.cc +30 -29
  125. data/src/core/ext/xds/certificate_provider_factory.h +1 -1
  126. data/src/core/ext/xds/certificate_provider_store.h +3 -3
  127. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +3 -3
  128. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +2 -2
  129. data/src/core/ext/xds/xds_api.cc +101 -93
  130. data/src/core/ext/xds/xds_api.h +6 -6
  131. data/src/core/ext/xds/xds_bootstrap.cc +97 -159
  132. data/src/core/ext/xds/xds_bootstrap.h +19 -24
  133. data/src/core/ext/xds/xds_certificate_provider.cc +4 -4
  134. data/src/core/ext/xds/xds_certificate_provider.h +4 -4
  135. data/src/core/ext/xds/xds_channel_args.h +5 -2
  136. data/src/core/ext/xds/xds_client.cc +310 -178
  137. data/src/core/ext/xds/xds_client.h +41 -27
  138. data/src/core/ext/xds/xds_client_stats.h +3 -2
  139. data/src/core/ext/xds/xds_server_config_fetcher.cc +34 -20
  140. data/src/core/lib/{iomgr → address_utils}/parse_address.cc +17 -17
  141. data/src/core/lib/{iomgr → address_utils}/parse_address.h +7 -7
  142. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.cc +3 -20
  143. data/src/core/lib/{iomgr → address_utils}/sockaddr_utils.h +6 -11
  144. data/src/core/lib/channel/channel_stack.cc +10 -9
  145. data/src/core/lib/channel/channel_stack.h +10 -9
  146. data/src/core/lib/channel/channel_stack_builder.cc +2 -2
  147. data/src/core/lib/channel/channel_stack_builder.h +1 -1
  148. data/src/core/lib/channel/channelz.cc +21 -13
  149. data/src/core/lib/channel/connected_channel.cc +4 -4
  150. data/src/core/lib/channel/handshaker.cc +7 -6
  151. data/src/core/lib/channel/handshaker.h +5 -5
  152. data/src/core/lib/event_engine/slice_allocator.cc +59 -0
  153. data/src/core/lib/event_engine/sockaddr.cc +38 -0
  154. data/src/core/lib/gprpp/ref_counted.h +28 -14
  155. data/src/core/lib/gprpp/status_helper.cc +407 -0
  156. data/src/core/lib/gprpp/status_helper.h +180 -0
  157. data/src/core/lib/http/httpcli.cc +11 -11
  158. data/src/core/lib/http/httpcli_security_connector.cc +11 -7
  159. data/src/core/lib/http/parser.cc +16 -16
  160. data/src/core/lib/http/parser.h +4 -4
  161. data/src/core/lib/iomgr/buffer_list.cc +7 -9
  162. data/src/core/lib/iomgr/buffer_list.h +4 -5
  163. data/src/core/lib/iomgr/call_combiner.cc +15 -12
  164. data/src/core/lib/iomgr/call_combiner.h +12 -14
  165. data/src/core/lib/iomgr/cfstream_handle.cc +3 -3
  166. data/src/core/lib/iomgr/cfstream_handle.h +1 -1
  167. data/src/core/lib/iomgr/closure.h +7 -6
  168. data/src/core/lib/iomgr/combiner.cc +14 -12
  169. data/src/core/lib/iomgr/combiner.h +2 -2
  170. data/src/core/lib/iomgr/endpoint.cc +1 -1
  171. data/src/core/lib/iomgr/endpoint.h +2 -2
  172. data/src/core/lib/iomgr/endpoint_cfstream.cc +11 -13
  173. data/src/core/lib/iomgr/endpoint_pair_windows.cc +1 -1
  174. data/src/core/lib/iomgr/error.cc +167 -61
  175. data/src/core/lib/iomgr/error.h +217 -106
  176. data/src/core/lib/iomgr/error_cfstream.cc +3 -2
  177. data/src/core/lib/iomgr/error_cfstream.h +2 -2
  178. data/src/core/lib/iomgr/error_internal.h +5 -1
  179. data/src/core/lib/iomgr/ev_apple.cc +5 -5
  180. data/src/core/lib/iomgr/ev_epoll1_linux.cc +19 -19
  181. data/src/core/lib/iomgr/ev_epollex_linux.cc +48 -45
  182. data/src/core/lib/iomgr/ev_poll_posix.cc +26 -23
  183. data/src/core/lib/iomgr/ev_posix.cc +9 -8
  184. data/src/core/lib/iomgr/ev_posix.h +9 -9
  185. data/src/core/lib/iomgr/exec_ctx.cc +4 -4
  186. data/src/core/lib/iomgr/exec_ctx.h +1 -1
  187. data/src/core/lib/iomgr/executor.cc +8 -8
  188. data/src/core/lib/iomgr/executor.h +2 -2
  189. data/src/core/lib/iomgr/iomgr.cc +1 -1
  190. data/src/core/lib/iomgr/iomgr.h +1 -1
  191. data/src/core/lib/iomgr/iomgr_custom.cc +1 -1
  192. data/src/core/lib/iomgr/iomgr_internal.cc +2 -2
  193. data/src/core/lib/iomgr/iomgr_internal.h +3 -3
  194. data/src/core/lib/iomgr/iomgr_posix.cc +1 -1
  195. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -2
  196. data/src/core/lib/iomgr/iomgr_windows.cc +1 -1
  197. data/src/core/lib/iomgr/load_file.cc +4 -4
  198. data/src/core/lib/iomgr/load_file.h +2 -2
  199. data/src/core/lib/iomgr/lockfree_event.cc +5 -5
  200. data/src/core/lib/iomgr/lockfree_event.h +1 -1
  201. data/src/core/lib/iomgr/pollset.cc +5 -5
  202. data/src/core/lib/iomgr/pollset.h +9 -9
  203. data/src/core/lib/iomgr/pollset_custom.cc +5 -5
  204. data/src/core/lib/iomgr/pollset_windows.cc +5 -5
  205. data/src/core/lib/iomgr/port.h +1 -1
  206. data/src/core/lib/iomgr/python_util.h +1 -1
  207. data/src/core/lib/iomgr/resolve_address.cc +3 -3
  208. data/src/core/lib/iomgr/resolve_address.h +6 -6
  209. data/src/core/lib/iomgr/resolve_address_custom.cc +10 -9
  210. data/src/core/lib/iomgr/resolve_address_custom.h +3 -3
  211. data/src/core/lib/iomgr/resolve_address_posix.cc +3 -3
  212. data/src/core/lib/iomgr/resolve_address_windows.cc +4 -4
  213. data/src/core/lib/iomgr/resource_quota.cc +11 -10
  214. data/src/core/lib/iomgr/socket_utils_common_posix.cc +22 -20
  215. data/src/core/lib/iomgr/socket_utils_posix.h +20 -20
  216. data/src/core/lib/iomgr/tcp_client_cfstream.cc +4 -4
  217. data/src/core/lib/iomgr/tcp_client_custom.cc +5 -6
  218. data/src/core/lib/iomgr/tcp_client_posix.cc +15 -17
  219. data/src/core/lib/iomgr/tcp_client_posix.h +3 -4
  220. data/src/core/lib/iomgr/tcp_client_windows.cc +5 -5
  221. data/src/core/lib/iomgr/tcp_custom.cc +14 -16
  222. data/src/core/lib/iomgr/tcp_custom.h +13 -12
  223. data/src/core/lib/iomgr/tcp_posix.cc +36 -34
  224. data/src/core/lib/iomgr/tcp_server.cc +6 -6
  225. data/src/core/lib/iomgr/tcp_server.h +12 -11
  226. data/src/core/lib/iomgr/tcp_server_custom.cc +23 -21
  227. data/src/core/lib/iomgr/tcp_server_posix.cc +22 -21
  228. data/src/core/lib/iomgr/tcp_server_utils_posix.h +13 -12
  229. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +19 -17
  230. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +9 -9
  231. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +4 -4
  232. data/src/core/lib/iomgr/tcp_server_windows.cc +26 -25
  233. data/src/core/lib/iomgr/tcp_uv.cc +25 -23
  234. data/src/core/lib/iomgr/tcp_windows.cc +13 -13
  235. data/src/core/lib/iomgr/tcp_windows.h +2 -2
  236. data/src/core/lib/iomgr/timer_custom.cc +2 -1
  237. data/src/core/lib/iomgr/timer_custom.h +1 -1
  238. data/src/core/lib/iomgr/timer_generic.cc +6 -6
  239. data/src/core/lib/iomgr/udp_server.cc +21 -20
  240. data/src/core/lib/iomgr/unix_sockets_posix.cc +3 -3
  241. data/src/core/lib/iomgr/unix_sockets_posix.h +2 -2
  242. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +10 -7
  243. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +3 -3
  244. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +4 -4
  245. data/src/core/lib/iomgr/wakeup_fd_posix.cc +3 -3
  246. data/src/core/lib/iomgr/wakeup_fd_posix.h +8 -6
  247. data/src/core/lib/iomgr/work_serializer.h +17 -1
  248. data/src/core/lib/json/json.h +1 -1
  249. data/src/core/lib/json/json_reader.cc +4 -4
  250. data/src/core/lib/matchers/matchers.cc +39 -39
  251. data/src/core/lib/matchers/matchers.h +28 -28
  252. data/src/core/lib/security/credentials/composite/composite_credentials.cc +4 -4
  253. data/src/core/lib/security/credentials/composite/composite_credentials.h +2 -2
  254. data/src/core/lib/security/credentials/credentials.h +2 -2
  255. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +17 -13
  256. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +13 -11
  257. data/src/core/lib/security/credentials/external/aws_request_signer.cc +2 -1
  258. data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -1
  259. data/src/core/lib/security/credentials/external/external_account_credentials.cc +15 -12
  260. data/src/core/lib/security/credentials/external/external_account_credentials.h +9 -8
  261. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -4
  262. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +4 -3
  263. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +8 -8
  264. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +9 -7
  265. data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -2
  266. data/src/core/lib/security/credentials/fake/fake_credentials.h +2 -2
  267. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +9 -9
  268. data/src/core/lib/security/credentials/iam/iam_credentials.cc +2 -2
  269. data/src/core/lib/security/credentials/iam/iam_credentials.h +2 -2
  270. data/src/core/lib/security/credentials/jwt/json_token.cc +2 -2
  271. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +3 -3
  272. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +2 -2
  273. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +7 -5
  274. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +21 -19
  275. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -5
  276. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +5 -5
  277. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -2
  278. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +8 -7
  279. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +9 -9
  280. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +19 -13
  281. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +4 -0
  282. data/src/core/lib/security/credentials/xds/xds_credentials.cc +3 -3
  283. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +13 -3
  284. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +13 -3
  285. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
  286. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +12 -2
  287. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +1 -1
  288. data/src/core/lib/security/security_connector/local/local_security_connector.cc +14 -4
  289. data/src/core/lib/security/security_connector/security_connector.h +9 -4
  290. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +16 -6
  291. data/src/core/lib/security/security_connector/ssl_utils.cc +22 -4
  292. data/src/core/lib/security/security_connector/ssl_utils.h +4 -4
  293. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +56 -60
  294. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +66 -48
  295. data/src/core/lib/security/transport/client_auth_filter.cc +18 -10
  296. data/src/core/lib/security/transport/secure_endpoint.cc +4 -4
  297. data/src/core/lib/security/transport/security_handshaker.cc +33 -32
  298. data/src/core/lib/security/transport/server_auth_filter.cc +19 -13
  299. data/src/core/lib/security/transport/tsi_error.cc +2 -1
  300. data/src/core/lib/security/transport/tsi_error.h +2 -1
  301. data/src/core/lib/security/util/json_util.cc +2 -2
  302. data/src/core/lib/security/util/json_util.h +1 -1
  303. data/src/core/lib/surface/call.cc +46 -45
  304. data/src/core/lib/surface/call.h +2 -2
  305. data/src/core/lib/surface/channel.cc +6 -6
  306. data/src/core/lib/surface/channel.h +3 -2
  307. data/src/core/lib/surface/channel_ping.cc +1 -1
  308. data/src/core/lib/surface/completion_queue.cc +46 -47
  309. data/src/core/lib/surface/completion_queue.h +2 -1
  310. data/src/core/lib/surface/lame_client.cc +11 -11
  311. data/src/core/lib/surface/lame_client.h +1 -1
  312. data/src/core/lib/surface/server.cc +28 -22
  313. data/src/core/lib/surface/server.h +16 -15
  314. data/src/core/lib/surface/validate_metadata.cc +7 -7
  315. data/src/core/lib/surface/validate_metadata.h +3 -2
  316. data/src/core/lib/surface/version.cc +4 -2
  317. data/src/core/lib/transport/byte_stream.cc +5 -5
  318. data/src/core/lib/transport/byte_stream.h +8 -8
  319. data/src/core/lib/transport/connectivity_state.cc +1 -1
  320. data/src/core/lib/transport/error_utils.cc +19 -8
  321. data/src/core/lib/transport/error_utils.h +11 -5
  322. data/src/core/lib/transport/metadata_batch.cc +37 -37
  323. data/src/core/lib/transport/metadata_batch.h +19 -18
  324. data/src/core/lib/transport/transport.cc +4 -3
  325. data/src/core/lib/transport/transport.h +4 -4
  326. data/src/core/lib/transport/transport_op_string.cc +5 -5
  327. data/src/core/tsi/alts/crypt/gsec.h +4 -0
  328. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +5 -4
  329. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +7 -6
  330. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker_private.h +2 -1
  331. data/src/core/tsi/ssl_transport_security.cc +32 -14
  332. data/src/core/tsi/ssl_transport_security.h +3 -4
  333. data/src/ruby/bin/math_services_pb.rb +1 -1
  334. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
  335. data/src/ruby/lib/grpc/version.rb +1 -1
  336. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +1 -1
  337. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +6 -6
  338. data/third_party/abseil-cpp/absl/algorithm/container.h +3 -3
  339. data/third_party/abseil-cpp/absl/base/attributes.h +24 -4
  340. data/third_party/abseil-cpp/absl/base/call_once.h +2 -9
  341. data/third_party/abseil-cpp/absl/base/config.h +37 -9
  342. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +24 -10
  343. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +4 -1
  344. data/third_party/abseil-cpp/absl/base/internal/endian.h +61 -0
  345. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +2 -3
  346. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +34 -32
  347. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +16 -6
  348. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +11 -2
  349. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +14 -5
  350. data/third_party/abseil-cpp/absl/base/internal/spinlock_akaros.inc +2 -2
  351. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +3 -3
  352. data/third_party/abseil-cpp/absl/base/internal/spinlock_posix.inc +2 -2
  353. data/third_party/abseil-cpp/absl/base/internal/spinlock_wait.h +11 -11
  354. data/third_party/abseil-cpp/absl/base/internal/spinlock_win32.inc +5 -5
  355. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +1 -1
  356. data/third_party/abseil-cpp/absl/base/internal/thread_identity.cc +5 -2
  357. data/third_party/abseil-cpp/absl/base/internal/thread_identity.h +43 -42
  358. data/third_party/abseil-cpp/absl/base/internal/throw_delegate.cc +111 -7
  359. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +0 -76
  360. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.cc +1 -3
  361. data/third_party/abseil-cpp/absl/base/log_severity.h +4 -4
  362. data/third_party/abseil-cpp/absl/base/macros.h +11 -0
  363. data/third_party/abseil-cpp/absl/base/optimization.h +10 -7
  364. data/third_party/abseil-cpp/absl/base/options.h +1 -1
  365. data/third_party/abseil-cpp/absl/base/port.h +0 -1
  366. data/third_party/abseil-cpp/absl/base/thread_annotations.h +1 -1
  367. data/third_party/abseil-cpp/absl/container/fixed_array.h +2 -2
  368. data/third_party/abseil-cpp/absl/container/inlined_vector.h +5 -3
  369. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +1 -1
  370. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +5 -1
  371. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +2 -1
  372. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +2 -1
  373. data/third_party/abseil-cpp/absl/container/internal/inlined_vector.h +141 -66
  374. data/third_party/abseil-cpp/absl/container/internal/layout.h +4 -4
  375. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +14 -1
  376. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +136 -136
  377. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +16 -12
  378. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +5 -2
  379. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +3 -12
  380. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +6 -1
  381. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +3 -5
  382. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +2 -2
  383. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +2 -2
  384. data/third_party/abseil-cpp/absl/hash/internal/city.cc +15 -12
  385. data/third_party/abseil-cpp/absl/hash/internal/city.h +1 -19
  386. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +25 -10
  387. data/third_party/abseil-cpp/absl/hash/internal/hash.h +86 -37
  388. data/third_party/abseil-cpp/absl/hash/internal/wyhash.cc +111 -0
  389. data/third_party/abseil-cpp/absl/hash/internal/wyhash.h +48 -0
  390. data/third_party/abseil-cpp/absl/meta/type_traits.h +16 -2
  391. data/third_party/abseil-cpp/absl/numeric/bits.h +177 -0
  392. data/third_party/abseil-cpp/absl/numeric/int128.cc +3 -3
  393. data/third_party/abseil-cpp/absl/numeric/internal/bits.h +358 -0
  394. data/third_party/abseil-cpp/absl/numeric/internal/representation.h +55 -0
  395. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +18 -0
  396. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +4 -7
  397. data/third_party/abseil-cpp/absl/status/status.cc +29 -22
  398. data/third_party/abseil-cpp/absl/status/status.h +81 -20
  399. data/third_party/abseil-cpp/absl/status/statusor.h +3 -3
  400. data/third_party/abseil-cpp/absl/strings/charconv.cc +5 -5
  401. data/third_party/abseil-cpp/absl/strings/cord.cc +326 -371
  402. data/third_party/abseil-cpp/absl/strings/cord.h +182 -64
  403. data/third_party/abseil-cpp/absl/strings/escaping.cc +4 -4
  404. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +6 -6
  405. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.cc +83 -0
  406. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +387 -17
  407. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_flat.h +146 -0
  408. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.cc +897 -0
  409. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring.h +589 -0
  410. data/third_party/abseil-cpp/absl/strings/internal/cord_rep_ring_reader.h +114 -0
  411. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +14 -0
  412. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +14 -0
  413. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +15 -1
  414. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +19 -4
  415. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +14 -0
  416. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +36 -18
  417. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +14 -0
  418. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +14 -0
  419. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +14 -0
  420. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +15 -40
  421. data/third_party/abseil-cpp/absl/strings/internal/string_constant.h +64 -0
  422. data/third_party/abseil-cpp/absl/strings/match.cc +6 -3
  423. data/third_party/abseil-cpp/absl/strings/match.h +16 -6
  424. data/third_party/abseil-cpp/absl/strings/numbers.cc +132 -4
  425. data/third_party/abseil-cpp/absl/strings/numbers.h +10 -10
  426. data/third_party/abseil-cpp/absl/strings/str_join.h +1 -1
  427. data/third_party/abseil-cpp/absl/strings/str_split.h +38 -4
  428. data/third_party/abseil-cpp/absl/synchronization/internal/futex.h +154 -0
  429. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +2 -1
  430. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +2 -2
  431. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +4 -4
  432. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +1 -65
  433. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -6
  434. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +71 -59
  435. data/third_party/abseil-cpp/absl/synchronization/mutex.h +79 -62
  436. data/third_party/abseil-cpp/absl/time/clock.cc +146 -130
  437. data/third_party/abseil-cpp/absl/time/clock.h +2 -2
  438. data/third_party/abseil-cpp/absl/time/duration.cc +3 -2
  439. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +7 -11
  440. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +7 -1
  441. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +4 -4
  442. data/third_party/abseil-cpp/absl/time/time.cc +4 -3
  443. data/third_party/abseil-cpp/absl/time/time.h +26 -24
  444. data/third_party/abseil-cpp/absl/types/internal/variant.h +1 -1
  445. data/third_party/abseil-cpp/absl/types/variant.h +9 -4
  446. data/third_party/boringssl-with-bazel/err_data.c +477 -461
  447. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bool.c +1 -1
  448. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +1 -1
  449. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +18 -8
  450. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -2
  451. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_locl.h +5 -0
  452. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_enc.c +1 -1
  453. data/third_party/boringssl-with-bazel/src/crypto/asn1/tasn_fre.c +1 -1
  454. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/e_tls.c +1 -88
  455. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/internal.h +14 -3
  456. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +119 -273
  457. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +87 -80
  458. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +1 -0
  459. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +1 -1
  460. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/cipher.c +11 -3
  461. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +25 -2
  462. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +10 -2
  463. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +4 -43
  464. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +4 -0
  465. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +0 -1
  466. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +0 -4
  467. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +104 -93
  468. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/internal.h +39 -0
  469. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +43 -46
  470. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +43 -46
  471. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cbc.c +33 -22
  472. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/cfb.c +9 -8
  473. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ctr.c +9 -8
  474. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/gcm.c +17 -13
  475. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/internal.h +1 -22
  476. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/modes/ofb.c +2 -1
  477. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +26 -7
  478. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/fips.c +79 -0
  479. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +14 -9
  480. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +45 -48
  481. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +38 -43
  482. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +37 -45
  483. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +103 -42
  484. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +58 -37
  485. data/third_party/boringssl-with-bazel/src/crypto/internal.h +65 -0
  486. data/third_party/boringssl-with-bazel/src/crypto/mem.c +14 -0
  487. data/third_party/boringssl-with-bazel/src/crypto/obj/obj.c +3 -3
  488. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +1 -1
  489. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +95 -48
  490. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/rand_extra.c +1 -1
  491. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +0 -28
  492. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +19 -0
  493. data/third_party/boringssl-with-bazel/src/crypto/x509/t_req.c +2 -0
  494. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_att.c +19 -25
  495. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +3 -2
  496. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +39 -89
  497. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +9 -16
  498. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +1 -1
  499. data/third_party/boringssl-with-bazel/src/crypto/x509/x_algor.c +21 -17
  500. data/third_party/boringssl-with-bazel/src/crypto/x509/x_attrib.c +7 -25
  501. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +5 -0
  502. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +25 -22
  503. data/third_party/boringssl-with-bazel/src/crypto/x509/x_val.c +2 -0
  504. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_cpols.c +2 -4
  505. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
  506. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_skey.c +1 -0
  507. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +0 -3
  508. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +120 -41
  509. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +9 -0
  510. data/third_party/boringssl-with-bazel/src/include/openssl/cipher.h +0 -8
  511. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +24 -4
  512. data/third_party/boringssl-with-bazel/src/include/openssl/ec.h +5 -2
  513. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +19 -0
  514. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +3 -2
  515. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +1 -38
  516. data/third_party/boringssl-with-bazel/src/{crypto/x509/x509_r2x.c → include/openssl/evp_errors.h} +41 -58
  517. data/third_party/boringssl-with-bazel/src/include/openssl/obj.h +24 -5
  518. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +2 -0
  519. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs8.h +9 -1
  520. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +2 -2
  521. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +185 -17
  522. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +1 -0
  523. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +416 -121
  524. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +2 -0
  525. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +5 -0
  526. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +444 -0
  527. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +244 -1
  528. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +43 -12
  529. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +149 -8
  530. data/third_party/boringssl-with-bazel/src/ssl/internal.h +220 -46
  531. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +7 -1
  532. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -6
  533. data/third_party/boringssl-with-bazel/src/ssl/ssl_key_share.cc +23 -26
  534. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +74 -15
  535. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +98 -64
  536. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +34 -4
  537. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +205 -100
  538. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +4 -2
  539. metadata +68 -45
  540. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +0 -88
  541. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +0 -88
  542. data/third_party/abseil-cpp/absl/base/internal/bits.h +0 -219
  543. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +0 -249
  544. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/is_fips.c +0 -29
@@ -74,9 +74,9 @@ void grpc_metadata_batch_remove(grpc_metadata_batch* batch,
74
74
  grpc_metadata_batch_callouts_index idx);
75
75
 
76
76
  /** Substitute a new mdelem for an old value */
77
- grpc_error* grpc_metadata_batch_substitute(grpc_metadata_batch* batch,
78
- grpc_linked_mdelem* storage,
79
- grpc_mdelem new_mdelem);
77
+ grpc_error_handle grpc_metadata_batch_substitute(grpc_metadata_batch* batch,
78
+ grpc_linked_mdelem* storage,
79
+ grpc_mdelem new_mdelem);
80
80
 
81
81
  void grpc_metadata_batch_set_value(grpc_linked_mdelem* storage,
82
82
  const grpc_slice& value);
@@ -97,10 +97,10 @@ absl::optional<absl::string_view> grpc_metadata_batch_get_value(
97
97
  \a storage is owned by the caller and must survive for the
98
98
  lifetime of batch. This usually means it should be around
99
99
  for the lifetime of the call. */
100
- grpc_error* grpc_metadata_batch_link_head(grpc_metadata_batch* batch,
101
- grpc_linked_mdelem* storage)
100
+ grpc_error_handle grpc_metadata_batch_link_head(grpc_metadata_batch* batch,
101
+ grpc_linked_mdelem* storage)
102
102
  GRPC_MUST_USE_RESULT;
103
- grpc_error* grpc_metadata_batch_link_head(
103
+ grpc_error_handle grpc_metadata_batch_link_head(
104
104
  grpc_metadata_batch* batch, grpc_linked_mdelem* storage,
105
105
  grpc_metadata_batch_callouts_index idx) GRPC_MUST_USE_RESULT;
106
106
 
@@ -109,10 +109,10 @@ grpc_error* grpc_metadata_batch_link_head(
109
109
  \a storage is owned by the caller and must survive for the
110
110
  lifetime of batch. This usually means it should be around
111
111
  for the lifetime of the call. */
112
- grpc_error* grpc_metadata_batch_link_tail(grpc_metadata_batch* batch,
113
- grpc_linked_mdelem* storage)
112
+ grpc_error_handle grpc_metadata_batch_link_tail(grpc_metadata_batch* batch,
113
+ grpc_linked_mdelem* storage)
114
114
  GRPC_MUST_USE_RESULT;
115
- grpc_error* grpc_metadata_batch_link_tail(
115
+ grpc_error_handle grpc_metadata_batch_link_tail(
116
116
  grpc_metadata_batch* batch, grpc_linked_mdelem* storage,
117
117
  grpc_metadata_batch_callouts_index idx) GRPC_MUST_USE_RESULT;
118
118
 
@@ -122,19 +122,19 @@ grpc_error* grpc_metadata_batch_link_tail(
122
122
  lifetime of batch. This usually means it should be around
123
123
  for the lifetime of the call.
124
124
  Takes ownership of \a elem_to_add */
125
- grpc_error* grpc_metadata_batch_add_head(
125
+ grpc_error_handle grpc_metadata_batch_add_head(
126
126
  grpc_metadata_batch* batch, grpc_linked_mdelem* storage,
127
127
  grpc_mdelem elem_to_add) GRPC_MUST_USE_RESULT;
128
128
 
129
129
  // TODO(arjunroy, roth): Remove redundant methods.
130
130
  // add/link_head/tail are almost identical.
131
- inline grpc_error* GRPC_MUST_USE_RESULT grpc_metadata_batch_add_head(
131
+ inline grpc_error_handle GRPC_MUST_USE_RESULT grpc_metadata_batch_add_head(
132
132
  grpc_metadata_batch* batch, grpc_linked_mdelem* storage,
133
133
  grpc_metadata_batch_callouts_index idx) {
134
134
  return grpc_metadata_batch_link_head(batch, storage, idx);
135
135
  }
136
136
 
137
- inline grpc_error* GRPC_MUST_USE_RESULT grpc_metadata_batch_add_head(
137
+ inline grpc_error_handle GRPC_MUST_USE_RESULT grpc_metadata_batch_add_head(
138
138
  grpc_metadata_batch* batch, grpc_linked_mdelem* storage,
139
139
  grpc_mdelem elem_to_add, grpc_metadata_batch_callouts_index idx) {
140
140
  GPR_DEBUG_ASSERT(!GRPC_MDISNULL(elem_to_add));
@@ -148,17 +148,17 @@ inline grpc_error* GRPC_MUST_USE_RESULT grpc_metadata_batch_add_head(
148
148
  lifetime of batch. This usually means it should be around
149
149
  for the lifetime of the call.
150
150
  Takes ownership of \a elem_to_add */
151
- grpc_error* grpc_metadata_batch_add_tail(
151
+ grpc_error_handle grpc_metadata_batch_add_tail(
152
152
  grpc_metadata_batch* batch, grpc_linked_mdelem* storage,
153
153
  grpc_mdelem elem_to_add) GRPC_MUST_USE_RESULT;
154
154
 
155
- inline grpc_error* GRPC_MUST_USE_RESULT grpc_metadata_batch_add_tail(
155
+ inline grpc_error_handle GRPC_MUST_USE_RESULT grpc_metadata_batch_add_tail(
156
156
  grpc_metadata_batch* batch, grpc_linked_mdelem* storage,
157
157
  grpc_metadata_batch_callouts_index idx) {
158
158
  return grpc_metadata_batch_link_tail(batch, storage, idx);
159
159
  }
160
160
 
161
- inline grpc_error* GRPC_MUST_USE_RESULT grpc_metadata_batch_add_tail(
161
+ inline grpc_error_handle GRPC_MUST_USE_RESULT grpc_metadata_batch_add_tail(
162
162
  grpc_metadata_batch* batch, grpc_linked_mdelem* storage,
163
163
  grpc_mdelem elem_to_add, grpc_metadata_batch_callouts_index idx) {
164
164
  GPR_DEBUG_ASSERT(!GRPC_MDISNULL(elem_to_add));
@@ -166,10 +166,11 @@ inline grpc_error* GRPC_MUST_USE_RESULT grpc_metadata_batch_add_tail(
166
166
  return grpc_metadata_batch_add_tail(batch, storage, idx);
167
167
  }
168
168
 
169
- grpc_error* grpc_attach_md_to_error(grpc_error* src, grpc_mdelem md);
169
+ grpc_error_handle grpc_attach_md_to_error(grpc_error_handle src,
170
+ grpc_mdelem md);
170
171
 
171
172
  struct grpc_filtered_mdelem {
172
- grpc_error* error;
173
+ grpc_error_handle error;
173
174
  grpc_mdelem md;
174
175
  };
175
176
  #define GRPC_FILTERED_ERROR(error) \
@@ -181,7 +182,7 @@ struct grpc_filtered_mdelem {
181
182
 
182
183
  typedef grpc_filtered_mdelem (*grpc_metadata_batch_filter_func)(
183
184
  void* user_data, grpc_mdelem elem);
184
- grpc_error* grpc_metadata_batch_filter(
185
+ grpc_error_handle grpc_metadata_batch_filter(
185
186
  grpc_metadata_batch* batch, grpc_metadata_batch_filter_func func,
186
187
  void* user_data, const char* composite_error_string) GRPC_MUST_USE_RESULT;
187
188
 
@@ -177,7 +177,7 @@ grpc_endpoint* grpc_transport_get_endpoint(grpc_transport* transport) {
177
177
  // though it lives in lib, it handles transport stream ops sure
178
178
  // it's grpc_transport_stream_op_batch_finish_with_failure
179
179
  void grpc_transport_stream_op_batch_finish_with_failure(
180
- grpc_transport_stream_op_batch* batch, grpc_error* error,
180
+ grpc_transport_stream_op_batch* batch, grpc_error_handle error,
181
181
  grpc_core::CallCombiner* call_combiner) {
182
182
  if (batch->send_message) {
183
183
  batch->payload->send_message.send_message.reset();
@@ -219,7 +219,7 @@ struct made_transport_op {
219
219
  }
220
220
  };
221
221
 
222
- static void destroy_made_transport_op(void* arg, grpc_error* error) {
222
+ static void destroy_made_transport_op(void* arg, grpc_error_handle error) {
223
223
  made_transport_op* op = static_cast<made_transport_op*>(arg);
224
224
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, op->inner_on_complete,
225
225
  GRPC_ERROR_REF(error));
@@ -241,7 +241,8 @@ struct made_transport_stream_op {
241
241
  grpc_transport_stream_op_batch op;
242
242
  grpc_transport_stream_op_batch_payload payload;
243
243
  };
244
- static void destroy_made_transport_stream_op(void* arg, grpc_error* error) {
244
+ static void destroy_made_transport_stream_op(void* arg,
245
+ grpc_error_handle error) {
245
246
  made_transport_stream_op* op = static_cast<made_transport_stream_op*>(arg);
246
247
  grpc_closure* c = op->inner_on_complete;
247
248
  gpr_free(op);
@@ -319,7 +319,7 @@ struct grpc_transport_stream_op_batch_payload {
319
319
  struct {
320
320
  // Error contract: the transport that gets this op must cause cancel_error
321
321
  // to be unref'ed after processing it
322
- grpc_error* cancel_error = GRPC_ERROR_NONE;
322
+ grpc_error_handle cancel_error = GRPC_ERROR_NONE;
323
323
  } cancel_stream;
324
324
 
325
325
  /* Indexes correspond to grpc_context_index enum values */
@@ -339,11 +339,11 @@ typedef struct grpc_transport_op {
339
339
  /** should the transport be disconnected
340
340
  * Error contract: the transport that gets this op must cause
341
341
  * disconnect_with_error to be unref'ed after processing it */
342
- grpc_error* disconnect_with_error = nullptr;
342
+ grpc_error_handle disconnect_with_error = GRPC_ERROR_NONE;
343
343
  /** what should the goaway contain?
344
344
  * Error contract: the transport that gets this op must cause
345
345
  * goaway_error to be unref'ed after processing it */
346
- grpc_error* goaway_error = nullptr;
346
+ grpc_error_handle goaway_error = GRPC_ERROR_NONE;
347
347
  /** set the callback for accepting new streams;
348
348
  this is a permanent callback, unlike the other one-shot closures.
349
349
  If true, the callback is set to set_accept_stream_fn, with its
@@ -411,7 +411,7 @@ void grpc_transport_destroy_stream(grpc_transport* transport,
411
411
  grpc_closure* then_schedule_closure);
412
412
 
413
413
  void grpc_transport_stream_op_batch_finish_with_failure(
414
- grpc_transport_stream_op_batch* batch, grpc_error* error,
414
+ grpc_transport_stream_op_batch* batch, grpc_error_handle error,
415
415
  grpc_core::CallCombiner* call_combiner);
416
416
 
417
417
  std::string grpc_transport_stream_op_batch_string(
@@ -109,7 +109,7 @@ std::string grpc_transport_stream_op_batch_string(
109
109
  if (op->cancel_stream) {
110
110
  out.push_back(absl::StrCat(
111
111
  " CANCEL:",
112
- grpc_error_string(op->payload->cancel_stream.cancel_error)));
112
+ grpc_error_std_string(op->payload->cancel_stream.cancel_error)));
113
113
  }
114
114
 
115
115
  return absl::StrJoin(out, "");
@@ -131,13 +131,13 @@ std::string grpc_transport_op_string(grpc_transport_op* op) {
131
131
  }
132
132
 
133
133
  if (op->disconnect_with_error != GRPC_ERROR_NONE) {
134
- out.push_back(absl::StrCat(" DISCONNECT:",
135
- grpc_error_string(op->disconnect_with_error)));
134
+ out.push_back(absl::StrCat(
135
+ " DISCONNECT:", grpc_error_std_string(op->disconnect_with_error)));
136
136
  }
137
137
 
138
138
  if (op->goaway_error) {
139
- out.push_back(
140
- absl::StrCat(" SEND_GOAWAY:%s", grpc_error_string(op->goaway_error)));
139
+ out.push_back(absl::StrCat(" SEND_GOAWAY:%s",
140
+ grpc_error_std_string(op->goaway_error)));
141
141
  }
142
142
 
143
143
  if (op->set_accept_stream) {
@@ -21,16 +21,20 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
+ #include <grpc/event_engine/port.h>
25
+
24
26
  #include <assert.h>
25
27
  #include <stdint.h>
26
28
  #include <stdlib.h>
27
29
 
28
30
  #include <grpc/grpc.h>
29
31
 
32
+ #ifndef GRPC_EVENT_ENGINE_POSIX
30
33
  struct iovec {
31
34
  void* iov_base;
32
35
  size_t iov_len;
33
36
  };
37
+ #endif // GRPC_EVENT_ENGINE_POSIX
34
38
 
35
39
  /**
36
40
  * A gsec interface for AEAD encryption schemes. The API is thread-compatible.
@@ -439,7 +439,7 @@ static tsi_result make_grpc_call(alts_handshaker_client* c, bool is_start) {
439
439
  }
440
440
  }
441
441
 
442
- static void on_status_received(void* arg, grpc_error* error) {
442
+ static void on_status_received(void* arg, grpc_error_handle error) {
443
443
  alts_grpc_handshaker_client* client =
444
444
  static_cast<alts_grpc_handshaker_client*>(arg);
445
445
  if (client->handshake_status_code != GRPC_STATUS_OK) {
@@ -451,7 +451,7 @@ static void on_status_received(void* arg, grpc_error* error) {
451
451
  "alts_grpc_handshaker_client:%p on_status_received "
452
452
  "status:%d details:|%s| error:|%s|",
453
453
  client, client->handshake_status_code, status_details,
454
- grpc_error_string(error));
454
+ grpc_error_std_string(error).c_str());
455
455
  gpr_free(status_details);
456
456
  }
457
457
  maybe_complete_tsi_next(client, true /* receive_status_finished */,
@@ -642,7 +642,7 @@ static void handshaker_client_shutdown(alts_handshaker_client* c) {
642
642
  }
643
643
  }
644
644
 
645
- static void handshaker_call_unref(void* arg, grpc_error* /* error */) {
645
+ static void handshaker_call_unref(void* arg, grpc_error_handle /* error */) {
646
646
  grpc_call* call = static_cast<grpc_call*>(arg);
647
647
  grpc_call_unref(call);
648
648
  }
@@ -838,7 +838,8 @@ void alts_handshaker_client_ref_for_testing(alts_handshaker_client* c) {
838
838
  }
839
839
 
840
840
  void alts_handshaker_client_on_status_received_for_testing(
841
- alts_handshaker_client* c, grpc_status_code status, grpc_error* error) {
841
+ alts_handshaker_client* c, grpc_status_code status,
842
+ grpc_error_handle error) {
842
843
  // We first make sure that the handshake queue has been initialized
843
844
  // here because there are tests that use this API that mock out
844
845
  // other parts of the alts_handshaker_client in such a way that the
@@ -372,7 +372,8 @@ tsi_result alts_tsi_handshaker_result_create(grpc_gcp_HandshakerResp* resp,
372
372
  }
373
373
 
374
374
  /* gRPC provided callback used when gRPC thread model is applied. */
375
- static void on_handshaker_service_resp_recv(void* arg, grpc_error* error) {
375
+ static void on_handshaker_service_resp_recv(void* arg,
376
+ grpc_error_handle error) {
376
377
  alts_handshaker_client* client = static_cast<alts_handshaker_client*>(arg);
377
378
  if (client == nullptr) {
378
379
  gpr_log(GPR_ERROR, "ALTS handshaker client is nullptr");
@@ -382,7 +383,7 @@ static void on_handshaker_service_resp_recv(void* arg, grpc_error* error) {
382
383
  if (error != GRPC_ERROR_NONE) {
383
384
  gpr_log(GPR_ERROR,
384
385
  "ALTS handshaker on_handshaker_service_resp_recv error: %s",
385
- grpc_error_string(error));
386
+ grpc_error_std_string(error).c_str());
386
387
  success = false;
387
388
  }
388
389
  alts_handshaker_client_handle_response(client, success);
@@ -390,8 +391,8 @@ static void on_handshaker_service_resp_recv(void* arg, grpc_error* error) {
390
391
 
391
392
  /* gRPC provided callback used when dedicatd CQ and thread are used.
392
393
  * It serves to safely bring the control back to application. */
393
- static void on_handshaker_service_resp_recv_dedicated(void* arg,
394
- grpc_error* /*error*/) {
394
+ static void on_handshaker_service_resp_recv_dedicated(
395
+ void* arg, grpc_error_handle /*error*/) {
395
396
  alts_shared_resource_dedicated* resource =
396
397
  grpc_alts_get_shared_resource_dedicated();
397
398
  grpc_cq_end_op(
@@ -480,8 +481,8 @@ struct alts_tsi_handshaker_continue_handshaker_next_args {
480
481
  grpc_closure closure;
481
482
  };
482
483
 
483
- static void alts_tsi_handshaker_create_channel(void* arg,
484
- grpc_error* /* unused_error */) {
484
+ static void alts_tsi_handshaker_create_channel(
485
+ void* arg, grpc_error_handle /* unused_error */) {
485
486
  alts_tsi_handshaker_continue_handshaker_next_args* next_args =
486
487
  static_cast<alts_tsi_handshaker_continue_handshaker_next_args*>(arg);
487
488
  alts_tsi_handshaker* handshaker = next_args->handshaker;
@@ -78,7 +78,8 @@ grpc_closure* alts_handshaker_client_get_closure_for_testing(
78
78
  alts_handshaker_client* client);
79
79
 
80
80
  void alts_handshaker_client_on_status_received_for_testing(
81
- alts_handshaker_client* client, grpc_status_code status, grpc_error* error);
81
+ alts_handshaker_client* client, grpc_status_code status,
82
+ grpc_error_handle error);
82
83
 
83
84
  void alts_handshaker_client_ref_for_testing(alts_handshaker_client* c);
84
85
 
@@ -357,13 +357,17 @@ static tsi_result add_subject_alt_names_properties_to_peer(
357
357
  subject_alt_name->type == GEN_URI) {
358
358
  unsigned char* name = nullptr;
359
359
  int name_size;
360
+ std::string property_name;
360
361
  if (subject_alt_name->type == GEN_DNS) {
361
362
  name_size = ASN1_STRING_to_UTF8(&name, subject_alt_name->d.dNSName);
363
+ property_name = TSI_X509_DNS_PEER_PROPERTY;
362
364
  } else if (subject_alt_name->type == GEN_EMAIL) {
363
365
  name_size = ASN1_STRING_to_UTF8(&name, subject_alt_name->d.rfc822Name);
366
+ property_name = TSI_X509_EMAIL_PEER_PROPERTY;
364
367
  } else {
365
368
  name_size = ASN1_STRING_to_UTF8(
366
369
  &name, subject_alt_name->d.uniformResourceIdentifier);
370
+ property_name = TSI_X509_URI_PEER_PROPERTY;
367
371
  }
368
372
  if (name_size < 0) {
369
373
  gpr_log(GPR_ERROR, "Could not get utf8 from asn1 string.");
@@ -378,12 +382,10 @@ static tsi_result add_subject_alt_names_properties_to_peer(
378
382
  OPENSSL_free(name);
379
383
  break;
380
384
  }
381
- if (subject_alt_name->type == GEN_URI) {
382
- result = tsi_construct_string_peer_property(
383
- TSI_X509_URI_PEER_PROPERTY, reinterpret_cast<const char*>(name),
384
- static_cast<size_t>(name_size),
385
- &peer->properties[(*current_insert_index)++]);
386
- }
385
+ result = tsi_construct_string_peer_property(
386
+ property_name.c_str(), reinterpret_cast<const char*>(name),
387
+ static_cast<size_t>(name_size),
388
+ &peer->properties[(*current_insert_index)++]);
387
389
  OPENSSL_free(name);
388
390
  } else if (subject_alt_name->type == GEN_IPADD) {
389
391
  char ntop_buf[INET6_ADDRSTRLEN];
@@ -409,6 +411,10 @@ static tsi_result add_subject_alt_names_properties_to_peer(
409
411
  result = tsi_construct_string_peer_property_from_cstring(
410
412
  TSI_X509_SUBJECT_ALTERNATIVE_NAME_PEER_PROPERTY, name,
411
413
  &peer->properties[(*current_insert_index)++]);
414
+ if (result != TSI_OK) break;
415
+ result = tsi_construct_string_peer_property_from_cstring(
416
+ TSI_X509_IP_PEER_PROPERTY, name,
417
+ &peer->properties[(*current_insert_index)++]);
412
418
  } else {
413
419
  result = tsi_construct_string_peer_property_from_cstring(
414
420
  TSI_X509_SUBJECT_ALTERNATIVE_NAME_PEER_PROPERTY, "other types of SAN",
@@ -438,7 +444,14 @@ static tsi_result peer_from_x509(X509* cert, int include_certificate_type,
438
444
  for (int i = 0; i < subject_alt_name_count; i++) {
439
445
  GENERAL_NAME* subject_alt_name =
440
446
  sk_GENERAL_NAME_value(subject_alt_names, TSI_SIZE_AS_SIZE(i));
441
- if (subject_alt_name->type == GEN_URI) {
447
+ // TODO(zhenlian): Clean up tsi_peer to avoid duplicate entries.
448
+ // URI, DNS, email and ip address SAN fields are plumbed to tsi_peer, in
449
+ // addition to all SAN fields (results in duplicate values). This code
450
+ // snippet updates property_count accordingly.
451
+ if (subject_alt_name->type == GEN_URI ||
452
+ subject_alt_name->type == GEN_DNS ||
453
+ subject_alt_name->type == GEN_EMAIL ||
454
+ subject_alt_name->type == GEN_IPADD) {
442
455
  property_count += 1;
443
456
  }
444
457
  }
@@ -1911,14 +1924,16 @@ tsi_result tsi_create_ssl_client_handshaker_factory_with_options(
1911
1924
  #else
1912
1925
  ssl_context = SSL_CTX_new(TLSv1_2_method());
1913
1926
  #endif
1914
- result = tsi_set_min_and_max_tls_versions(
1915
- ssl_context, options->min_tls_version, options->max_tls_version);
1916
- if (result != TSI_OK) return result;
1917
1927
  if (ssl_context == nullptr) {
1928
+ log_ssl_error_stack();
1918
1929
  gpr_log(GPR_ERROR, "Could not create ssl context.");
1919
1930
  return TSI_INVALID_ARGUMENT;
1920
1931
  }
1921
1932
 
1933
+ result = tsi_set_min_and_max_tls_versions(
1934
+ ssl_context, options->min_tls_version, options->max_tls_version);
1935
+ if (result != TSI_OK) return result;
1936
+
1922
1937
  impl = static_cast<tsi_ssl_client_handshaker_factory*>(
1923
1938
  gpr_zalloc(sizeof(*impl)));
1924
1939
  tsi_ssl_handshaker_factory_init(&impl->base);
@@ -2078,15 +2093,18 @@ tsi_result tsi_create_ssl_server_handshaker_factory_with_options(
2078
2093
  #else
2079
2094
  impl->ssl_contexts[i] = SSL_CTX_new(TLSv1_2_method());
2080
2095
  #endif
2081
- result = tsi_set_min_and_max_tls_versions(impl->ssl_contexts[i],
2082
- options->min_tls_version,
2083
- options->max_tls_version);
2084
- if (result != TSI_OK) return result;
2085
2096
  if (impl->ssl_contexts[i] == nullptr) {
2097
+ log_ssl_error_stack();
2086
2098
  gpr_log(GPR_ERROR, "Could not create ssl context.");
2087
2099
  result = TSI_OUT_OF_RESOURCES;
2088
2100
  break;
2089
2101
  }
2102
+
2103
+ result = tsi_set_min_and_max_tls_versions(impl->ssl_contexts[i],
2104
+ options->min_tls_version,
2105
+ options->max_tls_version);
2106
+ if (result != TSI_OK) return result;
2107
+
2090
2108
  result = populate_ssl_context(impl->ssl_contexts[i],
2091
2109
  &options->pem_key_cert_pairs[i],
2092
2110
  options->cipher_suites);
@@ -37,14 +37,13 @@ extern "C" {
37
37
  #define TSI_X509_SUBJECT_ALTERNATIVE_NAME_PEER_PROPERTY \
38
38
  "x509_subject_alternative_name"
39
39
  #define TSI_SSL_SESSION_REUSED_PEER_PROPERTY "ssl_session_reused"
40
-
41
40
  #define TSI_X509_PEM_CERT_PROPERTY "x509_pem_cert"
42
-
43
41
  #define TSI_X509_PEM_CERT_CHAIN_PROPERTY "x509_pem_cert_chain"
44
-
45
42
  #define TSI_SSL_ALPN_SELECTED_PROTOCOL "ssl_alpn_selected_protocol"
46
-
43
+ #define TSI_X509_DNS_PEER_PROPERTY "x509_dns"
47
44
  #define TSI_X509_URI_PEER_PROPERTY "x509_uri"
45
+ #define TSI_X509_EMAIL_PEER_PROPERTY "x509_email"
46
+ #define TSI_X509_IP_PEER_PROPERTY "x509_ip"
48
47
 
49
48
  /* --- tsi_ssl_root_certs_store object ---
50
49
 
@@ -23,7 +23,7 @@ module Math
23
23
  module Math
24
24
  class Service
25
25
 
26
- include GRPC::GenericService
26
+ include ::GRPC::GenericService
27
27
 
28
28
  self.marshal_class_method = :encode
29
29
  self.unmarshal_class_method = :decode
@@ -215,7 +215,7 @@ extern grpc_server_create_type grpc_server_create_import;
215
215
  typedef void(*grpc_server_register_completion_queue_type)(grpc_server* server, grpc_completion_queue* cq, void* reserved);
216
216
  extern grpc_server_register_completion_queue_type grpc_server_register_completion_queue_import;
217
217
  #define grpc_server_register_completion_queue grpc_server_register_completion_queue_import
218
- typedef grpc_server_config_fetcher*(*grpc_server_config_fetcher_xds_create_type)(grpc_server_xds_status_notifier notifier);
218
+ typedef grpc_server_config_fetcher*(*grpc_server_config_fetcher_xds_create_type)(grpc_server_xds_status_notifier notifier, const grpc_channel_args* args);
219
219
  extern grpc_server_config_fetcher_xds_create_type grpc_server_config_fetcher_xds_create_import;
220
220
  #define grpc_server_config_fetcher_xds_create grpc_server_config_fetcher_xds_create_import
221
221
  typedef void(*grpc_server_config_fetcher_destroy_type)(grpc_server_config_fetcher* config_fetcher);
@@ -14,5 +14,5 @@
14
14
 
15
15
  # GRPC contains the General RPC module.
16
16
  module GRPC
17
- VERSION = '1.37.1'
17
+ VERSION = '1.38.0.pre1'
18
18
  end