grpc 1.28.0.pre2 → 1.31.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 (660) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +8313 -11862
  3. data/include/grpc/grpc.h +2 -2
  4. data/include/grpc/grpc_security.h +30 -9
  5. data/include/grpc/grpc_security_constants.h +4 -0
  6. data/include/grpc/impl/codegen/grpc_types.h +23 -23
  7. data/include/grpc/impl/codegen/port_platform.h +6 -34
  8. data/include/grpc/module.modulemap +24 -39
  9. data/src/core/ext/filters/client_channel/backend_metric.cc +18 -12
  10. data/src/core/ext/filters/client_channel/client_channel.cc +618 -482
  11. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +3 -2
  12. data/src/core/ext/filters/client_channel/config_selector.cc +62 -0
  13. data/src/core/ext/filters/client_channel/config_selector.h +93 -0
  14. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -2
  15. data/src/core/ext/filters/client_channel/health/health_check_client.cc +9 -22
  16. data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
  17. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +6 -5
  18. data/src/core/ext/filters/client_channel/http_proxy.cc +23 -14
  19. data/src/core/ext/filters/client_channel/lb_policy.cc +19 -18
  20. data/src/core/ext/filters/client_channel/lb_policy.h +44 -33
  21. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +83 -0
  22. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +99 -0
  23. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +297 -0
  24. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +83 -0
  25. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +311 -497
  26. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +89 -0
  27. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +40 -0
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +11 -9
  29. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +3 -2
  30. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +871 -0
  31. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +1 -1
  32. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +9 -17
  33. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +734 -0
  34. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +117 -41
  35. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +938 -0
  36. data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +528 -0
  37. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -2
  38. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +1142 -0
  39. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +10 -7
  40. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +2 -1
  41. data/src/core/ext/filters/client_channel/parse_address.cc +22 -21
  42. data/src/core/ext/filters/client_channel/resolver.cc +5 -8
  43. data/src/core/ext/filters/client_channel/resolver.h +12 -14
  44. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +78 -61
  45. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +41 -40
  46. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -7
  47. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +22 -24
  48. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +12 -10
  49. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +79 -122
  50. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +199 -163
  51. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -3
  52. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +7 -4
  53. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +46 -45
  54. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +93 -102
  55. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +0 -4
  56. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +2 -2
  57. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +64 -12
  58. data/src/core/ext/filters/client_channel/resolver_factory.h +2 -2
  59. data/src/core/ext/filters/client_channel/resolver_registry.cc +19 -17
  60. data/src/core/ext/filters/client_channel/resolver_registry.h +8 -8
  61. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +21 -22
  62. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +19 -16
  63. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +73 -217
  64. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +45 -27
  65. data/src/core/ext/filters/client_channel/server_address.cc +6 -9
  66. data/src/core/ext/filters/client_channel/server_address.h +6 -12
  67. data/src/core/ext/filters/client_channel/service_config.cc +104 -144
  68. data/src/core/ext/filters/client_channel/service_config.h +28 -98
  69. data/src/core/ext/filters/client_channel/service_config_call_data.h +68 -0
  70. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +142 -0
  71. data/src/core/ext/filters/client_channel/service_config_parser.cc +87 -0
  72. data/src/core/ext/filters/client_channel/service_config_parser.h +89 -0
  73. data/src/core/ext/filters/client_channel/subchannel.cc +55 -25
  74. data/src/core/ext/filters/client_channel/subchannel.h +35 -11
  75. data/src/core/ext/filters/client_channel/xds/xds_api.cc +1200 -246
  76. data/src/core/ext/filters/client_channel/xds/xds_api.h +130 -44
  77. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +90 -29
  78. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +9 -4
  79. data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +4 -2
  80. data/src/core/ext/filters/client_channel/xds/xds_client.cc +839 -431
  81. data/src/core/ext/filters/client_channel/xds/xds_client.h +84 -33
  82. data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +11 -12
  83. data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +40 -28
  84. data/src/core/ext/filters/http/client/http_client_filter.cc +28 -33
  85. data/src/core/ext/filters/http/client_authority_filter.cc +4 -4
  86. data/src/core/ext/filters/http/http_filters_plugin.cc +28 -12
  87. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +258 -221
  88. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +399 -0
  89. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +31 -0
  90. data/src/core/ext/filters/message_size/message_size_filter.cc +61 -88
  91. data/src/core/ext/filters/message_size/message_size_filter.h +10 -4
  92. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +386 -350
  93. data/src/core/ext/transport/chttp2/server/chttp2_server.h +6 -2
  94. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +1 -1
  95. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +7 -13
  96. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +7 -8
  97. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +4 -6
  98. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +42 -26
  99. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -0
  100. data/src/core/ext/transport/chttp2/transport/flow_control.cc +25 -30
  101. data/src/core/ext/transport/chttp2/transport/flow_control.h +14 -16
  102. data/src/core/ext/transport/chttp2/transport/frame_data.cc +9 -12
  103. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +4 -6
  104. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +2 -3
  105. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -6
  106. data/src/core/ext/transport/chttp2/transport/frame_ping.h +2 -3
  107. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +12 -13
  108. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -3
  109. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -7
  110. data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -3
  111. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +9 -12
  112. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +2 -3
  113. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +29 -16
  114. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -3
  115. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +25 -29
  116. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
  117. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +13 -17
  118. data/src/core/ext/transport/chttp2/transport/hpack_table.h +2 -2
  119. data/src/core/ext/transport/chttp2/transport/http2_settings.h +4 -5
  120. data/src/core/ext/transport/chttp2/transport/huffsyms.h +2 -3
  121. data/src/core/ext/transport/chttp2/transport/internal.h +27 -21
  122. data/src/core/ext/transport/chttp2/transport/parsing.cc +33 -43
  123. data/src/core/ext/transport/chttp2/transport/stream_map.h +2 -3
  124. data/src/core/ext/transport/chttp2/transport/writing.cc +24 -22
  125. data/src/core/ext/transport/inproc/inproc_transport.cc +54 -15
  126. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +0 -1
  127. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +3 -4
  128. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +4 -229
  129. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +5 -876
  130. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +114 -0
  131. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +429 -0
  132. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +72 -0
  133. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +198 -0
  134. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +105 -0
  135. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +388 -0
  136. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +1 -0
  137. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +1 -2
  138. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +23 -10
  139. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +352 -310
  140. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +1 -0
  141. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +42 -34
  142. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +1 -0
  143. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +7 -7
  144. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +1 -0
  145. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +79 -61
  146. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +2 -1
  147. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +55 -49
  148. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.c +35 -0
  149. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +79 -0
  150. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +48 -27
  151. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +258 -214
  152. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +1 -0
  153. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +51 -45
  154. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +34 -0
  155. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +71 -0
  156. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +2 -1
  157. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +107 -100
  158. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +24 -20
  159. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +157 -122
  160. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +1 -0
  161. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +9 -9
  162. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +38 -18
  163. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +173 -73
  164. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.c +34 -0
  165. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +88 -0
  166. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +2 -1
  167. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +95 -101
  168. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +1 -0
  169. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +1 -2
  170. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +2 -1
  171. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +49 -65
  172. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +1 -0
  173. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -1
  174. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +9 -6
  175. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +53 -38
  176. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +1 -0
  177. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +70 -62
  178. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +1 -0
  179. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +1 -2
  180. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +15 -10
  181. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +95 -63
  182. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +1 -0
  183. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -1
  184. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +3 -2
  185. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +91 -80
  186. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +1 -0
  187. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +9 -10
  188. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +1 -0
  189. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +1 -2
  190. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +1 -0
  191. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +36 -31
  192. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +1 -0
  193. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -1
  194. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +68 -46
  195. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +770 -722
  196. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +1 -0
  197. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +16 -15
  198. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.c +1 -0
  199. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +1 -2
  200. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +2 -1
  201. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +95 -88
  202. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +48 -28
  203. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +305 -210
  204. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +1 -0
  205. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +5 -5
  206. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +51 -0
  207. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +125 -0
  208. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c +1 -0
  209. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +1 -2
  210. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +4 -2
  211. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +22 -16
  212. data/src/core/ext/upb-generated/envoy/type/http.upb.c +1 -0
  213. data/src/core/ext/upb-generated/envoy/type/http.upb.h +0 -1
  214. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +16 -0
  215. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +48 -11
  216. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +1 -0
  217. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +14 -14
  218. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +1 -0
  219. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +23 -23
  220. data/src/core/ext/upb-generated/envoy/type/percent.upb.c +1 -0
  221. data/src/core/ext/upb-generated/envoy/type/percent.upb.h +8 -9
  222. data/src/core/ext/upb-generated/envoy/type/range.upb.c +1 -0
  223. data/src/core/ext/upb-generated/envoy/type/range.upb.h +15 -16
  224. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +1 -0
  225. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +7 -8
  226. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +1 -0
  227. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +36 -35
  228. data/src/core/ext/upb-generated/gogoproto/gogo.upb.h +0 -1
  229. data/src/core/ext/upb-generated/google/api/annotations.upb.h +0 -1
  230. data/src/core/ext/upb-generated/google/api/http.upb.h +29 -28
  231. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +5 -6
  232. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +12 -11
  233. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +421 -389
  234. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +5 -6
  235. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +1 -2
  236. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +1 -1
  237. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +33 -54
  238. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +5 -6
  239. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +27 -28
  240. data/src/core/ext/upb-generated/google/rpc/status.upb.h +8 -8
  241. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +1 -1
  242. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +32 -45
  243. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +4 -4
  244. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +157 -178
  245. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +14 -13
  246. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +6 -7
  247. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +59 -56
  248. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +11 -12
  249. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +0 -1
  250. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +28 -0
  251. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +64 -0
  252. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +6 -6
  253. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +41 -68
  254. data/src/core/ext/upb-generated/validate/validate.upb.c +21 -20
  255. data/src/core/ext/upb-generated/validate/validate.upb.h +569 -562
  256. data/src/core/lib/channel/channel_args.cc +15 -14
  257. data/src/core/lib/channel/channel_args.h +3 -1
  258. data/src/core/lib/channel/channel_stack.h +20 -13
  259. data/src/core/lib/channel/channel_trace.cc +2 -6
  260. data/src/core/lib/channel/channelz.cc +10 -21
  261. data/src/core/lib/channel/channelz.h +3 -2
  262. data/src/core/lib/channel/channelz_registry.cc +5 -3
  263. data/src/core/lib/channel/connected_channel.cc +7 -5
  264. data/src/core/lib/channel/context.h +1 -1
  265. data/src/core/lib/channel/handshaker.cc +11 -13
  266. data/src/core/lib/channel/handshaker.h +4 -2
  267. data/src/core/lib/channel/handshaker_registry.cc +5 -17
  268. data/src/core/lib/channel/status_util.cc +2 -3
  269. data/src/core/lib/compression/message_compress.cc +5 -1
  270. data/src/core/lib/debug/stats.cc +21 -27
  271. data/src/core/lib/debug/stats.h +3 -1
  272. data/src/core/lib/gpr/log_linux.cc +6 -8
  273. data/src/core/lib/gpr/log_posix.cc +6 -8
  274. data/src/core/lib/gpr/spinlock.h +2 -3
  275. data/src/core/lib/gpr/string.cc +10 -33
  276. data/src/core/lib/gpr/string.h +4 -18
  277. data/src/core/lib/gpr/sync_abseil.cc +2 -0
  278. data/src/core/lib/gpr/time.cc +4 -0
  279. data/src/core/lib/gpr/time_posix.cc +1 -1
  280. data/src/core/lib/gprpp/atomic.h +6 -6
  281. data/src/core/lib/gprpp/fork.cc +1 -1
  282. data/src/core/lib/gprpp/global_config_env.cc +8 -6
  283. data/src/core/lib/gprpp/host_port.cc +29 -35
  284. data/src/core/lib/gprpp/host_port.h +14 -17
  285. data/src/core/lib/gprpp/map.h +5 -11
  286. data/src/core/lib/gprpp/ref_counted_ptr.h +5 -0
  287. data/src/core/lib/gprpp/sync.h +9 -0
  288. data/src/core/lib/http/format_request.cc +46 -65
  289. data/src/core/lib/http/httpcli.cc +15 -13
  290. data/src/core/lib/http/httpcli.h +2 -3
  291. data/src/core/lib/http/httpcli_security_connector.cc +10 -10
  292. data/src/core/lib/http/parser.h +2 -3
  293. data/src/core/lib/iomgr/buffer_list.h +22 -21
  294. data/src/core/lib/iomgr/call_combiner.h +3 -2
  295. data/src/core/lib/iomgr/cfstream_handle.cc +4 -2
  296. data/src/core/lib/iomgr/closure.h +2 -3
  297. data/src/core/lib/iomgr/dualstack_socket_posix.cc +47 -0
  298. data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -3
  299. data/src/core/lib/iomgr/endpoint_pair.h +2 -3
  300. data/src/core/lib/iomgr/endpoint_pair_posix.cc +10 -10
  301. data/src/core/lib/iomgr/error.cc +6 -9
  302. data/src/core/lib/iomgr/error.h +0 -1
  303. data/src/core/lib/iomgr/error_cfstream.cc +9 -8
  304. data/src/core/lib/iomgr/ev_apple.cc +356 -0
  305. data/src/core/lib/iomgr/ev_apple.h +43 -0
  306. data/src/core/lib/iomgr/ev_epoll1_linux.cc +25 -29
  307. data/src/core/lib/iomgr/ev_epollex_linux.cc +17 -24
  308. data/src/core/lib/iomgr/ev_poll_posix.cc +9 -8
  309. data/src/core/lib/iomgr/ev_posix.cc +4 -3
  310. data/src/core/lib/iomgr/exec_ctx.h +14 -2
  311. data/src/core/lib/iomgr/iomgr.cc +10 -0
  312. data/src/core/lib/iomgr/iomgr.h +10 -0
  313. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +84 -20
  314. data/src/core/lib/iomgr/is_epollexclusive_available.cc +14 -0
  315. data/src/core/lib/iomgr/pollset_set_custom.cc +10 -10
  316. data/src/core/lib/{gprpp/optional.h → iomgr/pollset_uv.h} +11 -12
  317. data/src/core/lib/iomgr/port.h +2 -21
  318. data/src/core/lib/iomgr/python_util.h +46 -0
  319. data/src/core/lib/iomgr/resolve_address.h +4 -6
  320. data/src/core/lib/iomgr/resolve_address_custom.cc +42 -57
  321. data/src/core/lib/iomgr/resolve_address_custom.h +4 -2
  322. data/src/core/lib/iomgr/resolve_address_posix.cc +10 -11
  323. data/src/core/lib/iomgr/resolve_address_windows.cc +16 -25
  324. data/src/core/lib/iomgr/resource_quota.cc +38 -37
  325. data/src/core/lib/iomgr/sockaddr_utils.cc +29 -33
  326. data/src/core/lib/iomgr/sockaddr_utils.h +10 -15
  327. data/src/core/lib/iomgr/socket_factory_posix.h +2 -3
  328. data/src/core/lib/iomgr/socket_mutator.h +2 -3
  329. data/src/core/lib/iomgr/socket_utils_common_posix.cc +102 -81
  330. data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
  331. data/src/core/lib/iomgr/socket_windows.cc +4 -5
  332. data/src/core/lib/iomgr/tcp_client_cfstream.cc +14 -18
  333. data/src/core/lib/iomgr/tcp_client_custom.cc +6 -9
  334. data/src/core/lib/iomgr/tcp_client_posix.cc +30 -36
  335. data/src/core/lib/iomgr/tcp_client_windows.cc +10 -11
  336. data/src/core/lib/iomgr/tcp_custom.cc +3 -4
  337. data/src/core/lib/iomgr/tcp_custom.h +1 -1
  338. data/src/core/lib/iomgr/tcp_server.cc +3 -4
  339. data/src/core/lib/iomgr/tcp_server.h +7 -5
  340. data/src/core/lib/iomgr/tcp_server_custom.cc +11 -23
  341. data/src/core/lib/iomgr/tcp_server_posix.cc +38 -44
  342. data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -4
  343. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +7 -8
  344. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +10 -18
  345. data/src/core/lib/iomgr/tcp_server_windows.cc +16 -16
  346. data/src/core/lib/iomgr/tcp_uv.cc +3 -2
  347. data/src/core/lib/iomgr/time_averaged_stats.h +2 -3
  348. data/src/core/lib/iomgr/timer_generic.cc +15 -15
  349. data/src/core/lib/{gprpp/inlined_vector.h → iomgr/timer_generic.h} +19 -17
  350. data/src/core/lib/iomgr/timer_heap.h +2 -3
  351. data/src/core/lib/iomgr/udp_server.cc +32 -36
  352. data/src/core/lib/iomgr/udp_server.h +5 -2
  353. data/src/core/lib/iomgr/unix_sockets_posix.cc +9 -14
  354. data/src/core/lib/iomgr/unix_sockets_posix.h +3 -1
  355. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +5 -2
  356. data/src/core/lib/json/json.h +3 -2
  357. data/src/core/lib/json/json_reader.cc +25 -26
  358. data/src/core/lib/json/json_writer.cc +13 -12
  359. data/src/core/lib/security/credentials/composite/composite_credentials.cc +12 -0
  360. data/src/core/lib/security/credentials/composite/composite_credentials.h +6 -3
  361. data/src/core/lib/security/credentials/credentials.cc +0 -84
  362. data/src/core/lib/security/credentials/credentials.h +13 -62
  363. data/src/core/lib/security/credentials/fake/fake_credentials.h +4 -0
  364. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +8 -6
  365. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +15 -17
  366. data/src/core/lib/security/credentials/iam/iam_credentials.cc +8 -6
  367. data/src/core/lib/security/credentials/iam/iam_credentials.h +4 -0
  368. data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
  369. data/src/core/lib/security/credentials/jwt/json_token.h +2 -5
  370. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -4
  371. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +12 -0
  372. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +8 -15
  373. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -3
  374. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +73 -54
  375. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +9 -3
  376. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +19 -6
  377. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -0
  378. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +20 -0
  379. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +10 -0
  380. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +23 -13
  381. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +48 -11
  382. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +21 -6
  383. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +17 -17
  384. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +3 -2
  385. data/src/core/lib/security/security_connector/local/local_security_connector.cc +1 -1
  386. data/src/core/lib/security/security_connector/security_connector.cc +2 -0
  387. data/src/core/lib/security/security_connector/security_connector.h +2 -2
  388. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +38 -36
  389. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +8 -5
  390. data/src/core/lib/security/security_connector/ssl_utils.cc +89 -21
  391. data/src/core/lib/security/security_connector/ssl_utils.h +18 -12
  392. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +101 -72
  393. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +27 -5
  394. data/src/core/lib/security/transport/auth_filters.h +0 -5
  395. data/src/core/lib/security/transport/client_auth_filter.cc +11 -11
  396. data/src/core/lib/security/util/json_util.cc +12 -13
  397. data/src/core/lib/slice/slice.cc +38 -1
  398. data/src/core/lib/slice/slice_intern.cc +2 -3
  399. data/src/core/lib/slice/slice_internal.h +15 -0
  400. data/src/core/lib/slice/slice_utils.h +9 -0
  401. data/src/core/lib/surface/byte_buffer_reader.cc +2 -47
  402. data/src/core/lib/surface/call.cc +42 -44
  403. data/src/core/lib/surface/call_log_batch.cc +50 -58
  404. data/src/core/lib/surface/channel.cc +53 -31
  405. data/src/core/lib/surface/channel.h +35 -4
  406. data/src/core/lib/surface/channel_ping.cc +2 -3
  407. data/src/core/lib/surface/completion_queue.cc +304 -47
  408. data/src/core/lib/surface/completion_queue.h +8 -0
  409. data/src/core/lib/surface/event_string.cc +18 -25
  410. data/src/core/lib/surface/event_string.h +3 -1
  411. data/src/core/lib/surface/init.cc +2 -0
  412. data/src/core/lib/surface/init_secure.cc +1 -4
  413. data/src/core/lib/surface/server.cc +971 -837
  414. data/src/core/lib/surface/server.h +66 -12
  415. data/src/core/lib/surface/version.cc +2 -2
  416. data/src/core/lib/transport/byte_stream.h +7 -2
  417. data/src/core/lib/transport/connectivity_state.cc +7 -6
  418. data/src/core/lib/transport/connectivity_state.h +5 -3
  419. data/src/core/lib/transport/metadata.cc +3 -3
  420. data/src/core/lib/transport/metadata_batch.h +2 -3
  421. data/src/core/lib/transport/static_metadata.h +1 -1
  422. data/src/core/lib/transport/status_conversion.cc +6 -14
  423. data/src/core/lib/transport/transport.cc +2 -3
  424. data/src/core/lib/transport/transport.h +9 -2
  425. data/src/core/lib/transport/transport_op_string.cc +61 -102
  426. data/src/core/lib/uri/uri_parser.cc +8 -15
  427. data/src/core/lib/uri/uri_parser.h +2 -3
  428. data/src/core/plugin_registry/grpc_plugin_registry.cc +24 -4
  429. data/src/core/tsi/alts/crypt/aes_gcm.cc +0 -2
  430. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +31 -14
  431. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +8 -4
  432. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +34 -2
  433. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +9 -1
  434. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -0
  435. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +2 -3
  436. data/src/core/tsi/fake_transport_security.cc +10 -15
  437. data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -2
  438. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +0 -2
  439. data/src/core/tsi/ssl_transport_security.cc +154 -50
  440. data/src/core/tsi/ssl_transport_security.h +22 -10
  441. data/src/core/tsi/ssl_types.h +0 -2
  442. data/src/core/tsi/transport_security.h +6 -9
  443. data/src/core/tsi/transport_security_grpc.h +2 -3
  444. data/src/core/tsi/transport_security_interface.h +8 -3
  445. data/src/ruby/ext/grpc/extconf.rb +5 -2
  446. data/src/ruby/ext/grpc/rb_call.c +12 -3
  447. data/src/ruby/ext/grpc/rb_call.h +4 -0
  448. data/src/ruby/ext/grpc/rb_call_credentials.c +57 -12
  449. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
  450. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
  451. data/src/ruby/lib/grpc/errors.rb +103 -42
  452. data/src/ruby/lib/grpc/generic/active_call.rb +2 -3
  453. data/src/ruby/lib/grpc/generic/interceptors.rb +5 -5
  454. data/src/ruby/lib/grpc/generic/rpc_server.rb +9 -10
  455. data/src/ruby/lib/grpc/generic/service.rb +5 -4
  456. data/src/ruby/lib/grpc/structs.rb +1 -1
  457. data/src/ruby/lib/grpc/version.rb +1 -1
  458. data/src/ruby/pb/generate_proto_ruby.sh +5 -3
  459. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +11 -0
  460. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +16 -0
  461. data/src/ruby/spec/debug_message_spec.rb +134 -0
  462. data/src/ruby/spec/generic/service_spec.rb +2 -0
  463. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_import2.proto +23 -0
  464. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +7 -0
  465. data/src/ruby/spec/pb/codegen/package_option_spec.rb +7 -1
  466. data/src/ruby/spec/support/services.rb +10 -4
  467. data/src/ruby/spec/testdata/ca.pem +18 -13
  468. data/src/ruby/spec/testdata/client.key +26 -14
  469. data/src/ruby/spec/testdata/client.pem +18 -12
  470. data/src/ruby/spec/testdata/server1.key +26 -14
  471. data/src/ruby/spec/testdata/server1.pem +20 -14
  472. data/third_party/abseil-cpp/absl/time/civil_time.cc +175 -0
  473. data/third_party/abseil-cpp/absl/time/civil_time.h +538 -0
  474. data/third_party/abseil-cpp/absl/time/clock.cc +569 -0
  475. data/third_party/abseil-cpp/absl/time/clock.h +74 -0
  476. data/third_party/abseil-cpp/absl/time/duration.cc +922 -0
  477. data/third_party/abseil-cpp/absl/time/format.cc +153 -0
  478. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +332 -0
  479. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +622 -0
  480. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +384 -0
  481. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +102 -0
  482. data/third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +94 -0
  483. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +140 -0
  484. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +52 -0
  485. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +922 -0
  486. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +45 -0
  487. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +76 -0
  488. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +121 -0
  489. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +93 -0
  490. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +958 -0
  491. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +138 -0
  492. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +308 -0
  493. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +55 -0
  494. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +187 -0
  495. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +159 -0
  496. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +132 -0
  497. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +122 -0
  498. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +115 -0
  499. data/third_party/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +31 -0
  500. data/third_party/abseil-cpp/absl/time/internal/get_current_time_posix.inc +24 -0
  501. data/third_party/abseil-cpp/absl/time/time.cc +499 -0
  502. data/third_party/abseil-cpp/absl/time/time.h +1584 -0
  503. data/third_party/boringssl-with-bazel/err_data.c +335 -297
  504. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +3 -3
  505. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +3 -3
  506. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +1 -1
  507. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +3 -3
  508. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
  509. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +1 -1
  510. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -1
  511. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +1 -1
  512. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +1 -1
  513. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +1 -1
  514. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +1 -1
  515. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +1 -1
  516. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +1 -0
  517. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +7 -5
  518. data/third_party/boringssl-with-bazel/src/crypto/cpu-intel.c +13 -4
  519. data/third_party/boringssl-with-bazel/src/crypto/crypto.c +11 -0
  520. data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519.c +18 -26
  521. data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519_tables.h +13 -21
  522. data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/internal.h +14 -22
  523. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +1 -1
  524. data/third_party/boringssl-with-bazel/src/crypto/dh/dh.c +15 -0
  525. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +10 -0
  526. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +385 -0
  527. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +56 -0
  528. data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +2 -2
  529. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +33 -32
  530. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +143 -0
  531. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1 -1
  532. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +17 -1
  533. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +2 -1
  534. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +3 -3
  535. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +25 -12
  536. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +8 -8
  537. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +30 -154
  538. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +16 -0
  539. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +289 -117
  540. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +13 -27
  541. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +96 -55
  542. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +25 -7
  543. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +434 -161
  544. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +63 -71
  545. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +18 -25
  546. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h +9481 -9485
  547. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +104 -122
  548. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +740 -0
  549. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +297 -0
  550. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +90 -11
  551. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +125 -148
  552. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +189 -3
  553. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +3 -3
  554. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +61 -18
  555. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +2 -2
  556. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +20 -5
  557. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +137 -0
  558. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +49 -0
  559. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +64 -0
  560. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +41 -5
  561. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +32 -17
  562. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +24 -114
  563. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +4 -0
  564. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +1 -0
  565. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +51 -38
  566. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +15 -1
  567. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +62 -0
  568. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +44 -35
  569. data/third_party/boringssl-with-bazel/src/crypto/mem.c +47 -16
  570. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +15 -1
  571. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +7 -0
  572. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -5
  573. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +6 -10
  574. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +16 -0
  575. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +4 -0
  576. data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +4 -0
  577. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +249 -0
  578. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +1227 -0
  579. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +682 -0
  580. data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +4 -4
  581. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +8 -0
  582. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +4 -4
  583. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -67
  584. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +13 -6
  585. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +10 -0
  586. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +57 -0
  587. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +4 -1
  588. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +33 -9
  589. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +25 -0
  590. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +4 -3
  591. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +35 -13
  592. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +0 -154
  593. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +28 -6
  594. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +5 -0
  595. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +74 -35
  596. data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +16 -4
  597. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +22 -22
  598. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +6 -2
  599. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +9 -4
  600. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +20 -0
  601. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +1 -0
  602. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +16 -0
  603. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +6 -0
  604. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +2 -0
  605. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +69 -0
  606. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +5 -0
  607. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +3 -17
  608. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +31 -0
  609. data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +26 -0
  610. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +191 -79
  611. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +1 -0
  612. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +282 -0
  613. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +791 -715
  614. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +1 -0
  615. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +0 -4
  616. data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +3 -3
  617. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +13 -4
  618. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +146 -57
  619. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +23 -5
  620. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +30 -22
  621. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +21 -4
  622. data/third_party/boringssl-with-bazel/src/ssl/internal.h +74 -54
  623. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +10 -10
  624. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
  625. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +21 -21
  626. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +29 -0
  627. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -0
  628. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +34 -1
  629. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +13 -2
  630. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +44 -5
  631. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +6 -0
  632. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +5 -5
  633. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +51 -26
  634. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +47 -53
  635. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +1 -1
  636. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +129 -48
  637. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +23 -75
  638. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +55 -22
  639. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +63 -25
  640. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +245 -175
  641. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +135 -75
  642. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +1593 -1672
  643. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +512 -503
  644. data/third_party/upb/upb/decode.c +467 -504
  645. data/third_party/upb/upb/encode.c +163 -121
  646. data/third_party/upb/upb/msg.c +130 -64
  647. data/third_party/upb/upb/msg.h +418 -14
  648. data/third_party/upb/upb/port_def.inc +35 -6
  649. data/third_party/upb/upb/port_undef.inc +8 -1
  650. data/third_party/upb/upb/table.c +53 -75
  651. data/third_party/upb/upb/table.int.h +11 -43
  652. data/third_party/upb/upb/upb.c +148 -124
  653. data/third_party/upb/upb/upb.h +65 -147
  654. data/third_party/upb/upb/upb.hpp +86 -0
  655. metadata +122 -41
  656. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +0 -1908
  657. data/src/core/lib/gprpp/string_view.h +0 -60
  658. data/src/core/tsi/grpc_shadow_boringssl.h +0 -3311
  659. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256.c +0 -1063
  660. data/third_party/upb/upb/generated_util.h +0 -105
@@ -29,9 +29,10 @@
29
29
  #include <string.h>
30
30
  #include <unistd.h>
31
31
 
32
+ #include "absl/strings/str_cat.h"
33
+
32
34
  #include <grpc/support/alloc.h>
33
35
  #include <grpc/support/log.h>
34
- #include <grpc/support/string_util.h>
35
36
  #include <grpc/support/time.h>
36
37
 
37
38
  #include "src/core/lib/channel/channel_args.h"
@@ -49,7 +50,7 @@
49
50
 
50
51
  extern grpc_core::TraceFlag grpc_tcp_trace;
51
52
 
52
- typedef struct {
53
+ struct async_connect {
53
54
  gpr_mu mu;
54
55
  grpc_fd* fd;
55
56
  grpc_timer alarm;
@@ -57,11 +58,11 @@ typedef struct {
57
58
  int refs;
58
59
  grpc_closure write_closure;
59
60
  grpc_pollset_set* interested_parties;
60
- char* addr_str;
61
+ std::string addr_str;
61
62
  grpc_endpoint** ep;
62
63
  grpc_closure* closure;
63
64
  grpc_channel_args* channel_args;
64
- } async_connect;
65
+ };
65
66
 
66
67
  static grpc_error* prepare_socket(const grpc_resolved_address* addr, int fd,
67
68
  const grpc_channel_args* channel_args) {
@@ -103,8 +104,8 @@ static void tc_on_alarm(void* acp, grpc_error* error) {
103
104
  async_connect* ac = static_cast<async_connect*>(acp);
104
105
  if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
105
106
  const char* str = grpc_error_string(error);
106
- gpr_log(GPR_INFO, "CLIENT_CONNECT: %s: on_alarm: error=%s", ac->addr_str,
107
- str);
107
+ gpr_log(GPR_INFO, "CLIENT_CONNECT: %s: on_alarm: error=%s",
108
+ ac->addr_str.c_str(), str);
108
109
  }
109
110
  gpr_mu_lock(&ac->mu);
110
111
  if (ac->fd != nullptr) {
@@ -115,9 +116,8 @@ static void tc_on_alarm(void* acp, grpc_error* error) {
115
116
  gpr_mu_unlock(&ac->mu);
116
117
  if (done) {
117
118
  gpr_mu_destroy(&ac->mu);
118
- gpr_free(ac->addr_str);
119
119
  grpc_channel_args_destroy(ac->channel_args);
120
- gpr_free(ac);
120
+ delete ac;
121
121
  }
122
122
  }
123
123
 
@@ -140,8 +140,8 @@ static void on_writable(void* acp, grpc_error* error) {
140
140
 
141
141
  if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
142
142
  const char* str = grpc_error_string(error);
143
- gpr_log(GPR_INFO, "CLIENT_CONNECT: %s: on_writable: error=%s", ac->addr_str,
144
- str);
143
+ gpr_log(GPR_INFO, "CLIENT_CONNECT: %s: on_writable: error=%s",
144
+ ac->addr_str.c_str(), str);
145
145
  }
146
146
 
147
147
  gpr_mu_lock(&ac->mu);
@@ -173,7 +173,8 @@ static void on_writable(void* acp, grpc_error* error) {
173
173
  switch (so_error) {
174
174
  case 0:
175
175
  grpc_pollset_set_del_fd(ac->interested_parties, fd);
176
- *ep = grpc_tcp_client_create_from_fd(fd, ac->channel_args, ac->addr_str);
176
+ *ep = grpc_tcp_client_create_from_fd(fd, ac->channel_args,
177
+ ac->addr_str.c_str());
177
178
  fd = nullptr;
178
179
  break;
179
180
  case ENOBUFS:
@@ -215,19 +216,17 @@ finish:
215
216
  done = (--ac->refs == 0);
216
217
  // Create a copy of the data from "ac" to be accessed after the unlock, as
217
218
  // "ac" and its contents may be deallocated by the time they are read.
218
- const grpc_slice addr_str_slice = grpc_slice_from_copied_string(ac->addr_str);
219
+ const grpc_slice addr_str_slice = grpc_slice_from_cpp_string(ac->addr_str);
219
220
  gpr_mu_unlock(&ac->mu);
220
221
  if (error != GRPC_ERROR_NONE) {
221
- char* error_descr;
222
222
  grpc_slice str;
223
223
  bool ret = grpc_error_get_str(error, GRPC_ERROR_STR_DESCRIPTION, &str);
224
224
  GPR_ASSERT(ret);
225
- char* desc = grpc_slice_to_c_string(str);
226
- gpr_asprintf(&error_descr, "Failed to connect to remote host: %s", desc);
227
- error = grpc_error_set_str(error, GRPC_ERROR_STR_DESCRIPTION,
228
- grpc_slice_from_copied_string(error_descr));
229
- gpr_free(error_descr);
230
- gpr_free(desc);
225
+ std::string description = absl::StrCat("Failed to connect to remote host: ",
226
+ grpc_core::StringViewFromSlice(str));
227
+ error =
228
+ grpc_error_set_str(error, GRPC_ERROR_STR_DESCRIPTION,
229
+ grpc_slice_from_cpp_string(std::move(description)));
231
230
  error = grpc_error_set_str(error, GRPC_ERROR_STR_TARGET_ADDRESS,
232
231
  addr_str_slice /* takes ownership */);
233
232
  } else {
@@ -237,9 +236,8 @@ finish:
237
236
  // This is safe even outside the lock, because "done", the sentinel, is
238
237
  // populated *inside* the lock.
239
238
  gpr_mu_destroy(&ac->mu);
240
- gpr_free(ac->addr_str);
241
239
  grpc_channel_args_destroy(ac->channel_args);
242
- gpr_free(ac);
240
+ delete ac;
243
241
  }
244
242
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error);
245
243
  }
@@ -280,37 +278,33 @@ void grpc_tcp_client_create_from_prepared_fd(
280
278
  const grpc_channel_args* channel_args, const grpc_resolved_address* addr,
281
279
  grpc_millis deadline, grpc_endpoint** ep) {
282
280
  int err;
283
- async_connect* ac;
284
281
  do {
285
282
  err = connect(fd, reinterpret_cast<const grpc_sockaddr*>(addr->addr),
286
283
  addr->len);
287
284
  } while (err < 0 && errno == EINTR);
288
285
 
289
- char* name;
290
- char* addr_str;
291
- addr_str = grpc_sockaddr_to_uri(addr);
292
- gpr_asprintf(&name, "tcp-client:%s", addr_str);
293
- grpc_fd* fdobj = grpc_fd_create(fd, name, true);
294
- gpr_free(name);
295
- gpr_free(addr_str);
286
+ std::string name = absl::StrCat("tcp-client:", grpc_sockaddr_to_uri(addr));
287
+ grpc_fd* fdobj = grpc_fd_create(fd, name.c_str(), true);
296
288
 
297
289
  if (err >= 0) {
298
- char* addr_str = grpc_sockaddr_to_uri(addr);
299
- *ep = grpc_tcp_client_create_from_fd(fdobj, channel_args, addr_str);
300
- gpr_free(addr_str);
290
+ *ep = grpc_tcp_client_create_from_fd(fdobj, channel_args,
291
+ grpc_sockaddr_to_uri(addr).c_str());
301
292
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, GRPC_ERROR_NONE);
302
293
  return;
303
294
  }
304
295
  if (errno != EWOULDBLOCK && errno != EINPROGRESS) {
296
+ grpc_error* error = GRPC_OS_ERROR(errno, "connect");
297
+ error = grpc_error_set_str(
298
+ error, GRPC_ERROR_STR_TARGET_ADDRESS,
299
+ grpc_slice_from_cpp_string(grpc_sockaddr_to_uri(addr)));
305
300
  grpc_fd_orphan(fdobj, nullptr, nullptr, "tcp_client_connect_error");
306
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure,
307
- GRPC_OS_ERROR(errno, "connect"));
301
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error);
308
302
  return;
309
303
  }
310
304
 
311
305
  grpc_pollset_set_add_fd(interested_parties, fdobj);
312
306
 
313
- ac = static_cast<async_connect*>(gpr_malloc(sizeof(async_connect)));
307
+ async_connect* ac = new async_connect();
314
308
  ac->closure = closure;
315
309
  ac->ep = ep;
316
310
  ac->fd = fdobj;
@@ -324,7 +318,7 @@ void grpc_tcp_client_create_from_prepared_fd(
324
318
 
325
319
  if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
326
320
  gpr_log(GPR_INFO, "CLIENT_CONNECT: %s: asynchronously connecting fd %p",
327
- ac->addr_str, fdobj);
321
+ ac->addr_str.c_str(), fdobj);
328
322
  }
329
323
 
330
324
  gpr_mu_lock(&ac->mu);
@@ -39,19 +39,20 @@
39
39
  #include "src/core/lib/iomgr/tcp_client.h"
40
40
  #include "src/core/lib/iomgr/tcp_windows.h"
41
41
  #include "src/core/lib/iomgr/timer.h"
42
+ #include "src/core/lib/slice/slice_internal.h"
42
43
 
43
- typedef struct {
44
+ struct async_connect {
44
45
  grpc_closure* on_done;
45
46
  gpr_mu mu;
46
47
  grpc_winsocket* socket;
47
48
  grpc_timer alarm;
48
49
  grpc_closure on_alarm;
49
- char* addr_name;
50
+ std::string addr_name;
50
51
  int refs;
51
52
  grpc_closure on_connect;
52
53
  grpc_endpoint** endpoint;
53
54
  grpc_channel_args* channel_args;
54
- } async_connect;
55
+ };
55
56
 
56
57
  static void async_connect_unlock_and_cleanup(async_connect* ac,
57
58
  grpc_winsocket* socket) {
@@ -60,8 +61,7 @@ static void async_connect_unlock_and_cleanup(async_connect* ac,
60
61
  if (done) {
61
62
  grpc_channel_args_destroy(ac->channel_args);
62
63
  gpr_mu_destroy(&ac->mu);
63
- gpr_free(ac->addr_name);
64
- gpr_free(ac);
64
+ delete ac;
65
65
  }
66
66
  if (socket != NULL) grpc_winsocket_destroy(socket);
67
67
  }
@@ -106,7 +106,7 @@ static void on_connect(void* acp, grpc_error* error) {
106
106
  error = GRPC_WSA_ERROR(WSAGetLastError(), "ConnectEx");
107
107
  closesocket(socket->socket);
108
108
  } else {
109
- *ep = grpc_tcp_create(socket, ac->channel_args, ac->addr_name);
109
+ *ep = grpc_tcp_create(socket, ac->channel_args, ac->addr_name.c_str());
110
110
  socket = NULL;
111
111
  }
112
112
  } else {
@@ -132,13 +132,13 @@ static void tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
132
132
  int status;
133
133
  grpc_resolved_address addr6_v4mapped;
134
134
  grpc_resolved_address local_address;
135
- async_connect* ac;
136
135
  grpc_winsocket* socket = NULL;
137
136
  LPFN_CONNECTEX ConnectEx;
138
137
  GUID guid = WSAID_CONNECTEX;
139
138
  DWORD ioctl_num_bytes;
140
139
  grpc_winsocket_callback_info* info;
141
140
  grpc_error* error = GRPC_ERROR_NONE;
141
+ async_connect* ac = NULL;
142
142
 
143
143
  *endpoint = NULL;
144
144
 
@@ -195,7 +195,7 @@ static void tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
195
195
  }
196
196
  }
197
197
 
198
- ac = (async_connect*)gpr_malloc(sizeof(async_connect));
198
+ ac = new async_connect();
199
199
  ac->on_done = on_done;
200
200
  ac->socket = socket;
201
201
  gpr_mu_init(&ac->mu);
@@ -212,13 +212,12 @@ static void tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
212
212
 
213
213
  failure:
214
214
  GPR_ASSERT(error != GRPC_ERROR_NONE);
215
- char* target_uri = grpc_sockaddr_to_uri(addr);
215
+ std::string target_uri = grpc_sockaddr_to_uri(addr);
216
216
  grpc_error* final_error =
217
217
  grpc_error_set_str(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
218
218
  "Failed to connect", &error, 1),
219
219
  GRPC_ERROR_STR_TARGET_ADDRESS,
220
- grpc_slice_from_copied_string(
221
- target_uri == nullptr ? "NULL" : target_uri));
220
+ grpc_slice_from_cpp_string(std::move(target_uri)));
222
221
  GRPC_ERROR_UNREF(error);
223
222
  if (socket != NULL) {
224
223
  grpc_winsocket_destroy(socket);
@@ -52,7 +52,7 @@ void grpc_custom_endpoint_init(grpc_socket_vtable* impl) {
52
52
  grpc_set_tcp_server_impl(&custom_tcp_server_vtable);
53
53
  }
54
54
 
55
- typedef struct {
55
+ struct custom_tcp_endpoint {
56
56
  grpc_endpoint base;
57
57
  gpr_refcount refcount;
58
58
  grpc_custom_socket* socket;
@@ -69,8 +69,7 @@ typedef struct {
69
69
  bool shutting_down;
70
70
 
71
71
  char* peer_string;
72
- } custom_tcp_endpoint;
73
-
72
+ };
74
73
  static void tcp_free(grpc_custom_socket* s) {
75
74
  custom_tcp_endpoint* tcp = (custom_tcp_endpoint*)s->endpoint;
76
75
  grpc_resource_user_unref(tcp->resource_user);
@@ -346,7 +345,7 @@ static grpc_endpoint_vtable vtable = {endpoint_read,
346
345
 
347
346
  grpc_endpoint* custom_tcp_endpoint_create(grpc_custom_socket* socket,
348
347
  grpc_resource_quota* resource_quota,
349
- char* peer_string) {
348
+ const char* peer_string) {
350
349
  custom_tcp_endpoint* tcp =
351
350
  (custom_tcp_endpoint*)gpr_malloc(sizeof(custom_tcp_endpoint));
352
351
  grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
@@ -79,6 +79,6 @@ void grpc_custom_close_server_callback(grpc_tcp_listener* listener);
79
79
 
80
80
  grpc_endpoint* custom_tcp_endpoint_create(grpc_custom_socket* socket,
81
81
  grpc_resource_quota* resource_quota,
82
- char* peer_string);
82
+ const char* peer_string);
83
83
 
84
84
  #endif /* GRPC_CORE_LIB_IOMGR_TCP_CUSTOM_H */
@@ -28,11 +28,10 @@ grpc_error* grpc_tcp_server_create(grpc_closure* shutdown_complete,
28
28
  return grpc_tcp_server_impl->create(shutdown_complete, args, server);
29
29
  }
30
30
 
31
- void grpc_tcp_server_start(grpc_tcp_server* server, grpc_pollset** pollsets,
32
- size_t pollset_count,
31
+ void grpc_tcp_server_start(grpc_tcp_server* server,
32
+ const std::vector<grpc_pollset*>* pollsets,
33
33
  grpc_tcp_server_cb on_accept_cb, void* cb_arg) {
34
- grpc_tcp_server_impl->start(server, pollsets, pollset_count, on_accept_cb,
35
- cb_arg);
34
+ grpc_tcp_server_impl->start(server, pollsets, on_accept_cb, cb_arg);
36
35
  }
37
36
 
38
37
  grpc_error* grpc_tcp_server_add_port(grpc_tcp_server* s,
@@ -24,6 +24,8 @@
24
24
  #include <grpc/grpc.h>
25
25
  #include <grpc/impl/codegen/grpc_types.h>
26
26
 
27
+ #include <vector>
28
+
27
29
  #include "src/core/lib/iomgr/closure.h"
28
30
  #include "src/core/lib/iomgr/endpoint.h"
29
31
  #include "src/core/lib/iomgr/resolve_address.h"
@@ -64,9 +66,9 @@ typedef struct grpc_tcp_server_vtable {
64
66
  grpc_error* (*create)(grpc_closure* shutdown_complete,
65
67
  const grpc_channel_args* args,
66
68
  grpc_tcp_server** server);
67
- void (*start)(grpc_tcp_server* server, grpc_pollset** pollsets,
68
- size_t pollset_count, grpc_tcp_server_cb on_accept_cb,
69
- void* cb_arg);
69
+ void (*start)(grpc_tcp_server* server,
70
+ const std::vector<grpc_pollset*>* pollsets,
71
+ grpc_tcp_server_cb on_accept_cb, void* cb_arg);
70
72
  grpc_error* (*add_port)(grpc_tcp_server* s, const grpc_resolved_address* addr,
71
73
  int* out_port);
72
74
  grpc_core::TcpServerFdHandler* (*create_fd_handler)(grpc_tcp_server* s);
@@ -87,8 +89,8 @@ grpc_error* grpc_tcp_server_create(grpc_closure* shutdown_complete,
87
89
  grpc_tcp_server** server);
88
90
 
89
91
  /* Start listening to bound ports */
90
- void grpc_tcp_server_start(grpc_tcp_server* server, grpc_pollset** pollsets,
91
- size_t pollset_count,
92
+ void grpc_tcp_server_start(grpc_tcp_server* server,
93
+ const std::vector<grpc_pollset*>* pollsets,
92
94
  grpc_tcp_server_cb on_accept_cb, void* cb_arg);
93
95
 
94
96
  /* Add a port to the server, returning the newly allocated port on success, or
@@ -23,6 +23,8 @@
23
23
  #include <assert.h>
24
24
  #include <string.h>
25
25
 
26
+ #include <string>
27
+
26
28
  #include <grpc/support/alloc.h>
27
29
  #include <grpc/support/log.h>
28
30
 
@@ -214,10 +216,9 @@ static void finish_accept(grpc_tcp_listener* sp, grpc_custom_socket* socket) {
214
216
  (grpc_tcp_server_acceptor*)gpr_malloc(sizeof(*acceptor));
215
217
  grpc_endpoint* ep = nullptr;
216
218
  grpc_resolved_address peer_name;
217
- char* peer_name_string;
219
+ std::string peer_name_string;
218
220
  grpc_error* err;
219
221
 
220
- peer_name_string = nullptr;
221
222
  memset(&peer_name, 0, sizeof(grpc_resolved_address));
222
223
  peer_name.len = GRPC_MAX_SOCKADDR_SIZE;
223
224
  err = grpc_custom_socket_vtable->getpeername(
@@ -229,21 +230,16 @@ static void finish_accept(grpc_tcp_listener* sp, grpc_custom_socket* socket) {
229
230
  GRPC_ERROR_UNREF(err);
230
231
  }
231
232
  if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
232
- if (peer_name_string) {
233
- gpr_log(GPR_INFO, "SERVER_CONNECT: %p accepted connection: %s",
234
- sp->server, peer_name_string);
235
- } else {
236
- gpr_log(GPR_INFO, "SERVER_CONNECT: %p accepted connection", sp->server);
237
- }
233
+ gpr_log(GPR_INFO, "SERVER_CONNECT: %p accepted connection: %s", sp->server,
234
+ peer_name_string.c_str());
238
235
  }
239
236
  ep = custom_tcp_endpoint_create(socket, sp->server->resource_quota,
240
- peer_name_string);
237
+ peer_name_string.c_str());
241
238
  acceptor->from_server = sp->server;
242
239
  acceptor->port_index = sp->port_index;
243
240
  acceptor->fd_index = 0;
244
241
  acceptor->external_connection = false;
245
242
  sp->server->on_accept_cb(sp->server->on_accept_cb_arg, ep, nullptr, acceptor);
246
- gpr_free(peer_name_string);
247
243
  }
248
244
 
249
245
  static void custom_accept_callback(grpc_custom_socket* socket,
@@ -389,15 +385,9 @@ static grpc_error* tcp_server_add_port(grpc_tcp_server* s,
389
385
  }
390
386
 
391
387
  if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
392
- char* port_string;
393
- grpc_sockaddr_to_string(&port_string, addr, 0);
394
- const char* str = grpc_error_string(error);
395
- if (port_string) {
396
- gpr_log(GPR_INFO, "SERVER %p add_port %s error=%s", s, port_string, str);
397
- gpr_free(port_string);
398
- } else {
399
- gpr_log(GPR_INFO, "SERVER %p add_port error=%s", s, str);
400
- }
388
+ gpr_log(GPR_INFO, "SERVER %p add_port %s error=%s", s,
389
+ grpc_sockaddr_to_string(addr, false).c_str(),
390
+ grpc_error_string(error));
401
391
  }
402
392
 
403
393
  family = grpc_sockaddr_get_family(addr);
@@ -427,12 +417,10 @@ static grpc_error* tcp_server_add_port(grpc_tcp_server* s,
427
417
  return error;
428
418
  }
429
419
 
430
- static void tcp_server_start(grpc_tcp_server* server, grpc_pollset** pollsets,
431
- size_t pollset_count,
420
+ static void tcp_server_start(grpc_tcp_server* server,
421
+ const std::vector<grpc_pollset*>* /*pollsets*/,
432
422
  grpc_tcp_server_cb on_accept_cb, void* cb_arg) {
433
423
  grpc_tcp_listener* sp;
434
- (void)pollsets;
435
- (void)pollset_count;
436
424
  GRPC_CUSTOM_IOMGR_ASSERT_SAME_THREAD();
437
425
  if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
438
426
  gpr_log(GPR_INFO, "SERVER_START %p", server);
@@ -37,9 +37,13 @@
37
37
  #include <sys/types.h>
38
38
  #include <unistd.h>
39
39
 
40
+ #include <string>
41
+
42
+ #include "absl/strings/str_cat.h"
43
+ #include "absl/strings/str_format.h"
44
+
40
45
  #include <grpc/support/alloc.h>
41
46
  #include <grpc/support/log.h>
42
- #include <grpc/support/string_util.h>
43
47
  #include <grpc/support/sync.h>
44
48
  #include <grpc/support/time.h>
45
49
 
@@ -194,8 +198,6 @@ static void on_read(void* arg, grpc_error* err) {
194
198
  /* loop until accept4 returns EAGAIN, and then re-arm notification */
195
199
  for (;;) {
196
200
  grpc_resolved_address addr;
197
- char* addr_str;
198
- char* name;
199
201
  memset(&addr, 0, sizeof(addr));
200
202
  addr.len = static_cast<socklen_t>(sizeof(struct sockaddr_storage));
201
203
  /* Note: If we ever decide to return this address to the user, remember to
@@ -236,19 +238,19 @@ static void on_read(void* arg, grpc_error* err) {
236
238
 
237
239
  grpc_set_socket_no_sigpipe_if_possible(fd);
238
240
 
239
- addr_str = grpc_sockaddr_to_uri(&addr);
240
- gpr_asprintf(&name, "tcp-server-connection:%s", addr_str);
241
-
241
+ std::string addr_str = grpc_sockaddr_to_uri(&addr);
242
242
  if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
243
- gpr_log(GPR_INFO, "SERVER_CONNECT: incoming connection: %s", addr_str);
243
+ gpr_log(GPR_INFO, "SERVER_CONNECT: incoming connection: %s",
244
+ addr_str.c_str());
244
245
  }
245
246
 
246
- grpc_fd* fdobj = grpc_fd_create(fd, name, true);
247
+ std::string name = absl::StrCat("tcp-server-connection:", addr_str);
248
+ grpc_fd* fdobj = grpc_fd_create(fd, name.c_str(), true);
247
249
 
248
- read_notifier_pollset =
249
- sp->server->pollsets[static_cast<size_t>(gpr_atm_no_barrier_fetch_add(
250
- &sp->server->next_pollset_to_assign, 1)) %
251
- sp->server->pollset_count];
250
+ read_notifier_pollset = (*(sp->server->pollsets))
251
+ [static_cast<size_t>(gpr_atm_no_barrier_fetch_add(
252
+ &sp->server->next_pollset_to_assign, 1)) %
253
+ sp->server->pollsets->size()];
252
254
 
253
255
  grpc_pollset_add_fd(read_notifier_pollset, fdobj);
254
256
 
@@ -262,11 +264,8 @@ static void on_read(void* arg, grpc_error* err) {
262
264
 
263
265
  sp->server->on_accept_cb(
264
266
  sp->server->on_accept_cb_arg,
265
- grpc_tcp_create(fdobj, sp->server->channel_args, addr_str),
267
+ grpc_tcp_create(fdobj, sp->server->channel_args, addr_str.c_str()),
266
268
  read_notifier_pollset, acceptor);
267
-
268
- gpr_free(name);
269
- gpr_free(addr_str);
270
269
  }
271
270
 
272
271
  GPR_UNREACHABLE_CODE(return );
@@ -349,8 +348,7 @@ static grpc_error* add_wildcard_addrs_to_server(grpc_tcp_server* s,
349
348
 
350
349
  static grpc_error* clone_port(grpc_tcp_listener* listener, unsigned count) {
351
350
  grpc_tcp_listener* sp = nullptr;
352
- char* addr_str;
353
- char* name;
351
+ std::string addr_str;
354
352
  grpc_error* err;
355
353
 
356
354
  for (grpc_tcp_listener* l = listener->next; l && l->is_sibling; l = l->next) {
@@ -368,8 +366,7 @@ static grpc_error* clone_port(grpc_tcp_listener* listener, unsigned count) {
368
366
  true, &port);
369
367
  if (err != GRPC_ERROR_NONE) return err;
370
368
  listener->server->nports++;
371
- grpc_sockaddr_to_string(&addr_str, &listener->addr, 1);
372
- gpr_asprintf(&name, "tcp-server-listener:%s/clone-%d", addr_str, i);
369
+ addr_str = grpc_sockaddr_to_string(&listener->addr, true);
373
370
  sp = static_cast<grpc_tcp_listener*>(gpr_malloc(sizeof(grpc_tcp_listener)));
374
371
  sp->next = listener->next;
375
372
  listener->next = sp;
@@ -380,7 +377,11 @@ static grpc_error* clone_port(grpc_tcp_listener* listener, unsigned count) {
380
377
  listener->sibling = sp;
381
378
  sp->server = listener->server;
382
379
  sp->fd = fd;
383
- sp->emfd = grpc_fd_create(fd, name, true);
380
+ sp->emfd = grpc_fd_create(
381
+ fd,
382
+ absl::StrFormat("tcp-server-listener:%s/clone-%d", addr_str.c_str(), i)
383
+ .c_str(),
384
+ true);
384
385
  memcpy(&sp->addr, &listener->addr, sizeof(grpc_resolved_address));
385
386
  sp->port = port;
386
387
  sp->port_index = listener->port_index;
@@ -389,8 +390,6 @@ static grpc_error* clone_port(grpc_tcp_listener* listener, unsigned count) {
389
390
  while (listener->server->tail->next != nullptr) {
390
391
  listener->server->tail = listener->server->tail->next;
391
392
  }
392
- gpr_free(addr_str);
393
- gpr_free(name);
394
393
  }
395
394
 
396
395
  return GRPC_ERROR_NONE;
@@ -488,8 +487,8 @@ static int tcp_server_port_fd(grpc_tcp_server* s, unsigned port_index,
488
487
  return -1;
489
488
  }
490
489
 
491
- static void tcp_server_start(grpc_tcp_server* s, grpc_pollset** pollsets,
492
- size_t pollset_count,
490
+ static void tcp_server_start(grpc_tcp_server* s,
491
+ const std::vector<grpc_pollset*>* pollsets,
493
492
  grpc_tcp_server_cb on_accept_cb,
494
493
  void* on_accept_cb_arg) {
495
494
  size_t i;
@@ -501,15 +500,14 @@ static void tcp_server_start(grpc_tcp_server* s, grpc_pollset** pollsets,
501
500
  s->on_accept_cb = on_accept_cb;
502
501
  s->on_accept_cb_arg = on_accept_cb_arg;
503
502
  s->pollsets = pollsets;
504
- s->pollset_count = pollset_count;
505
503
  sp = s->head;
506
504
  while (sp != nullptr) {
507
505
  if (s->so_reuseport && !grpc_is_unix_socket(&sp->addr) &&
508
- pollset_count > 1) {
506
+ pollsets->size() > 1) {
509
507
  GPR_ASSERT(GRPC_LOG_IF_ERROR(
510
- "clone_port", clone_port(sp, (unsigned)(pollset_count - 1))));
511
- for (i = 0; i < pollset_count; i++) {
512
- grpc_pollset_add_fd(pollsets[i], sp->emfd);
508
+ "clone_port", clone_port(sp, (unsigned)(pollsets->size() - 1))));
509
+ for (i = 0; i < pollsets->size(); i++) {
510
+ grpc_pollset_add_fd((*pollsets)[i], sp->emfd);
513
511
  GRPC_CLOSURE_INIT(&sp->read_closure, on_read, sp,
514
512
  grpc_schedule_on_exec_ctx);
515
513
  grpc_fd_notify_on_read(sp->emfd, &sp->read_closure);
@@ -517,8 +515,8 @@ static void tcp_server_start(grpc_tcp_server* s, grpc_pollset** pollsets,
517
515
  sp = sp->next;
518
516
  }
519
517
  } else {
520
- for (i = 0; i < pollset_count; i++) {
521
- grpc_pollset_add_fd(pollsets[i], sp->emfd);
518
+ for (i = 0; i < pollsets->size(); i++) {
519
+ grpc_pollset_add_fd((*pollsets)[i], sp->emfd);
522
520
  }
523
521
  GRPC_CLOSURE_INIT(&sp->read_closure, on_read, sp,
524
522
  grpc_schedule_on_exec_ctx);
@@ -576,8 +574,6 @@ class ExternalConnectionHandler : public grpc_core::TcpServerFdHandler {
576
574
  void Handle(int listener_fd, int fd, grpc_byte_buffer* buf) override {
577
575
  grpc_pollset* read_notifier_pollset;
578
576
  grpc_resolved_address addr;
579
- char* addr_str;
580
- char* name;
581
577
  memset(&addr, 0, sizeof(addr));
582
578
  addr.len = static_cast<socklen_t>(sizeof(struct sockaddr_storage));
583
579
  grpc_core::ExecCtx exec_ctx;
@@ -589,17 +585,17 @@ class ExternalConnectionHandler : public grpc_core::TcpServerFdHandler {
589
585
  return;
590
586
  }
591
587
  grpc_set_socket_no_sigpipe_if_possible(fd);
592
- addr_str = grpc_sockaddr_to_uri(&addr);
593
- gpr_asprintf(&name, "tcp-server-connection:%s", addr_str);
588
+ std::string addr_str = grpc_sockaddr_to_uri(&addr);
594
589
  if (grpc_tcp_trace.enabled()) {
595
590
  gpr_log(GPR_INFO, "SERVER_CONNECT: incoming external connection: %s",
596
- addr_str);
591
+ addr_str.c_str());
597
592
  }
598
- grpc_fd* fdobj = grpc_fd_create(fd, name, true);
593
+ std::string name = absl::StrCat("tcp-server-connection:", addr_str);
594
+ grpc_fd* fdobj = grpc_fd_create(fd, name.c_str(), true);
599
595
  read_notifier_pollset =
600
- s_->pollsets[static_cast<size_t>(gpr_atm_no_barrier_fetch_add(
601
- &s_->next_pollset_to_assign, 1)) %
602
- s_->pollset_count];
596
+ (*(s_->pollsets))[static_cast<size_t>(gpr_atm_no_barrier_fetch_add(
597
+ &s_->next_pollset_to_assign, 1)) %
598
+ s_->pollsets->size()];
603
599
  grpc_pollset_add_fd(read_notifier_pollset, fdobj);
604
600
  grpc_tcp_server_acceptor* acceptor =
605
601
  static_cast<grpc_tcp_server_acceptor*>(gpr_malloc(sizeof(*acceptor)));
@@ -610,10 +606,8 @@ class ExternalConnectionHandler : public grpc_core::TcpServerFdHandler {
610
606
  acceptor->listener_fd = listener_fd;
611
607
  acceptor->pending_data = buf;
612
608
  s_->on_accept_cb(s_->on_accept_cb_arg,
613
- grpc_tcp_create(fdobj, s_->channel_args, addr_str),
609
+ grpc_tcp_create(fdobj, s_->channel_args, addr_str.c_str()),
614
610
  read_notifier_pollset, acceptor);
615
- gpr_free(name);
616
- gpr_free(addr_str);
617
611
  }
618
612
 
619
613
  private: