grpc 1.28.0 → 1.30.2

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 (503) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +7694 -11190
  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 +1 -0
  6. data/include/grpc/impl/codegen/grpc_types.h +19 -21
  7. data/include/grpc/impl/codegen/port_platform.h +6 -2
  8. data/include/grpc/module.modulemap +24 -39
  9. data/src/core/ext/filters/client_channel/backend_metric.cc +7 -4
  10. data/src/core/ext/filters/client_channel/client_channel.cc +212 -241
  11. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +3 -2
  12. data/src/core/ext/filters/client_channel/health/health_check_client.cc +7 -22
  13. data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
  14. data/src/core/ext/filters/client_channel/http_proxy.cc +17 -10
  15. data/src/core/ext/filters/client_channel/lb_policy.cc +19 -18
  16. data/src/core/ext/filters/client_channel/lb_policy.h +42 -33
  17. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +83 -0
  18. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +99 -0
  19. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +10 -4
  20. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +240 -301
  21. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +89 -0
  22. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +40 -0
  23. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +11 -9
  24. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +3 -2
  25. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +871 -0
  26. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +1 -1
  27. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +5 -11
  28. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +734 -0
  29. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +84 -37
  30. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +938 -0
  31. data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +528 -0
  32. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -2
  33. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +834 -0
  34. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +6 -2
  35. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +2 -1
  36. data/src/core/ext/filters/client_channel/parse_address.cc +22 -21
  37. data/src/core/ext/filters/client_channel/resolver.cc +5 -8
  38. data/src/core/ext/filters/client_channel/resolver.h +12 -14
  39. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +73 -59
  40. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +35 -35
  41. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -7
  42. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +16 -20
  43. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +4 -4
  44. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +72 -117
  45. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +184 -133
  46. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -3
  47. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +7 -4
  48. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +40 -43
  49. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +93 -102
  50. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +0 -4
  51. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +2 -2
  52. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +32 -5
  53. data/src/core/ext/filters/client_channel/resolver_factory.h +2 -2
  54. data/src/core/ext/filters/client_channel/resolver_registry.cc +6 -3
  55. data/src/core/ext/filters/client_channel/resolver_registry.h +8 -8
  56. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +16 -16
  57. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +19 -16
  58. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +20 -31
  59. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +4 -3
  60. data/src/core/ext/filters/client_channel/server_address.cc +6 -9
  61. data/src/core/ext/filters/client_channel/server_address.h +6 -12
  62. data/src/core/ext/filters/client_channel/service_config.cc +104 -144
  63. data/src/core/ext/filters/client_channel/service_config.h +28 -98
  64. data/src/core/ext/filters/client_channel/service_config_call_data.h +68 -0
  65. data/src/core/ext/filters/client_channel/service_config_parser.cc +87 -0
  66. data/src/core/ext/filters/client_channel/service_config_parser.h +89 -0
  67. data/src/core/ext/filters/client_channel/subchannel.cc +54 -24
  68. data/src/core/ext/filters/client_channel/subchannel.h +35 -11
  69. data/src/core/ext/filters/client_channel/xds/xds_api.cc +348 -221
  70. data/src/core/ext/filters/client_channel/xds/xds_api.h +37 -37
  71. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +44 -49
  72. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +4 -3
  73. data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +4 -2
  74. data/src/core/ext/filters/client_channel/xds/xds_client.cc +532 -339
  75. data/src/core/ext/filters/client_channel/xds/xds_client.h +57 -22
  76. data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +11 -12
  77. data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +31 -19
  78. data/src/core/ext/filters/http/client/http_client_filter.cc +23 -28
  79. data/src/core/ext/filters/http/client_authority_filter.cc +4 -4
  80. data/src/core/ext/filters/http/http_filters_plugin.cc +27 -12
  81. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +258 -221
  82. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +358 -0
  83. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +29 -0
  84. data/src/core/ext/filters/message_size/message_size_filter.cc +7 -10
  85. data/src/core/ext/filters/message_size/message_size_filter.h +4 -4
  86. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +4 -4
  87. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +4 -6
  88. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +23 -22
  89. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -0
  90. data/src/core/ext/transport/chttp2/transport/flow_control.cc +3 -3
  91. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +2 -3
  92. data/src/core/ext/transport/chttp2/transport/frame_ping.h +2 -3
  93. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -3
  94. data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -3
  95. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +2 -3
  96. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +29 -16
  97. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -3
  98. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
  99. data/src/core/ext/transport/chttp2/transport/hpack_table.h +2 -2
  100. data/src/core/ext/transport/chttp2/transport/http2_settings.h +4 -5
  101. data/src/core/ext/transport/chttp2/transport/huffsyms.h +2 -3
  102. data/src/core/ext/transport/chttp2/transport/internal.h +14 -21
  103. data/src/core/ext/transport/chttp2/transport/stream_map.h +2 -3
  104. data/src/core/ext/transport/chttp2/transport/writing.cc +15 -8
  105. data/src/core/ext/transport/inproc/inproc_transport.cc +19 -0
  106. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +4 -229
  107. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +5 -875
  108. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +114 -0
  109. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +418 -0
  110. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +72 -0
  111. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +197 -0
  112. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +105 -0
  113. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +378 -0
  114. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +1 -0
  115. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +21 -8
  116. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +43 -7
  117. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +1 -0
  118. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +1 -0
  119. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +1 -0
  120. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +2 -1
  121. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.c +35 -0
  122. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +78 -0
  123. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +47 -26
  124. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +115 -65
  125. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +1 -0
  126. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +34 -0
  127. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +72 -0
  128. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +2 -1
  129. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +24 -20
  130. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +28 -13
  131. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +1 -0
  132. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +38 -18
  133. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +88 -6
  134. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.c +34 -0
  135. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +89 -0
  136. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +1 -0
  137. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +1 -0
  138. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +1 -0
  139. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +1 -0
  140. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +9 -6
  141. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +12 -4
  142. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +1 -0
  143. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +1 -0
  144. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +15 -10
  145. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +16 -0
  146. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +1 -0
  147. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +2 -1
  148. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +1 -0
  149. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +1 -0
  150. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +1 -0
  151. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +1 -0
  152. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +63 -41
  153. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +173 -77
  154. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +1 -0
  155. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.c +1 -0
  156. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +1 -0
  157. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +48 -28
  158. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +90 -30
  159. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +1 -0
  160. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +51 -0
  161. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +125 -0
  162. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c +1 -0
  163. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +4 -2
  164. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +4 -0
  165. data/src/core/ext/upb-generated/envoy/type/http.upb.c +1 -0
  166. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +16 -0
  167. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +36 -0
  168. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +1 -0
  169. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +1 -0
  170. data/src/core/ext/upb-generated/envoy/type/percent.upb.c +1 -0
  171. data/src/core/ext/upb-generated/envoy/type/range.upb.c +1 -0
  172. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +1 -0
  173. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +1 -0
  174. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +9 -8
  175. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +30 -24
  176. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +28 -0
  177. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +65 -0
  178. data/src/core/ext/upb-generated/validate/validate.upb.c +21 -20
  179. data/src/core/ext/upb-generated/validate/validate.upb.h +69 -63
  180. data/src/core/lib/channel/channel_args.cc +15 -14
  181. data/src/core/lib/channel/channel_args.h +3 -1
  182. data/src/core/lib/channel/channel_stack.h +20 -13
  183. data/src/core/lib/channel/channelz.cc +5 -6
  184. data/src/core/lib/channel/channelz.h +3 -2
  185. data/src/core/lib/channel/channelz_registry.cc +5 -3
  186. data/src/core/lib/channel/connected_channel.cc +7 -5
  187. data/src/core/lib/channel/context.h +1 -1
  188. data/src/core/lib/channel/handshaker.cc +11 -13
  189. data/src/core/lib/channel/handshaker.h +4 -2
  190. data/src/core/lib/channel/handshaker_registry.cc +5 -17
  191. data/src/core/lib/channel/status_util.cc +2 -3
  192. data/src/core/lib/compression/message_compress.cc +5 -1
  193. data/src/core/lib/debug/stats.cc +21 -27
  194. data/src/core/lib/debug/stats.h +3 -1
  195. data/src/core/lib/gpr/spinlock.h +2 -3
  196. data/src/core/lib/gpr/string.cc +2 -26
  197. data/src/core/lib/gpr/string.h +0 -16
  198. data/src/core/lib/gpr/sync_abseil.cc +2 -0
  199. data/src/core/lib/gpr/time.cc +4 -0
  200. data/src/core/lib/gpr/time_posix.cc +1 -1
  201. data/src/core/lib/gprpp/atomic.h +6 -6
  202. data/src/core/lib/gprpp/fork.cc +1 -1
  203. data/src/core/lib/gprpp/host_port.cc +29 -35
  204. data/src/core/lib/gprpp/host_port.h +14 -17
  205. data/src/core/lib/gprpp/map.h +5 -11
  206. data/src/core/lib/gprpp/ref_counted_ptr.h +5 -0
  207. data/src/core/lib/http/format_request.cc +46 -65
  208. data/src/core/lib/http/httpcli.cc +2 -3
  209. data/src/core/lib/http/httpcli.h +2 -3
  210. data/src/core/lib/http/httpcli_security_connector.cc +5 -5
  211. data/src/core/lib/http/parser.h +2 -3
  212. data/src/core/lib/iomgr/buffer_list.h +22 -21
  213. data/src/core/lib/iomgr/call_combiner.h +3 -2
  214. data/src/core/lib/iomgr/cfstream_handle.cc +3 -2
  215. data/src/core/lib/iomgr/closure.h +2 -3
  216. data/src/core/lib/iomgr/dualstack_socket_posix.cc +47 -0
  217. data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -3
  218. data/src/core/lib/iomgr/endpoint_pair.h +2 -3
  219. data/src/core/lib/iomgr/error.cc +6 -9
  220. data/src/core/lib/iomgr/error.h +0 -1
  221. data/src/core/lib/iomgr/ev_apple.cc +356 -0
  222. data/src/core/lib/iomgr/ev_apple.h +43 -0
  223. data/src/core/lib/iomgr/ev_epoll1_linux.cc +20 -23
  224. data/src/core/lib/iomgr/ev_epollex_linux.cc +2 -3
  225. data/src/core/lib/iomgr/ev_poll_posix.cc +3 -3
  226. data/src/core/lib/iomgr/ev_posix.cc +2 -3
  227. data/src/core/lib/iomgr/exec_ctx.h +14 -2
  228. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +84 -20
  229. data/src/core/lib/iomgr/pollset_set_custom.cc +10 -10
  230. data/src/core/lib/{gprpp/optional.h → iomgr/pollset_uv.h} +11 -12
  231. data/src/core/lib/iomgr/port.h +1 -0
  232. data/src/core/lib/iomgr/python_util.h +46 -0
  233. data/src/core/lib/iomgr/resolve_address.h +4 -6
  234. data/src/core/lib/iomgr/resolve_address_custom.cc +29 -39
  235. data/src/core/lib/iomgr/resolve_address_custom.h +4 -2
  236. data/src/core/lib/iomgr/resolve_address_posix.cc +10 -11
  237. data/src/core/lib/iomgr/resolve_address_windows.cc +8 -17
  238. data/src/core/lib/iomgr/resource_quota.cc +4 -6
  239. data/src/core/lib/iomgr/sockaddr_utils.cc +23 -29
  240. data/src/core/lib/iomgr/sockaddr_utils.h +9 -14
  241. data/src/core/lib/iomgr/socket_factory_posix.h +2 -3
  242. data/src/core/lib/iomgr/socket_mutator.h +2 -3
  243. data/src/core/lib/iomgr/socket_utils_common_posix.cc +7 -26
  244. data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
  245. data/src/core/lib/iomgr/tcp_client_cfstream.cc +5 -7
  246. data/src/core/lib/iomgr/tcp_client_posix.cc +8 -5
  247. data/src/core/lib/iomgr/tcp_client_windows.cc +2 -3
  248. data/src/core/lib/iomgr/tcp_custom.cc +2 -3
  249. data/src/core/lib/iomgr/tcp_server_custom.cc +5 -9
  250. data/src/core/lib/iomgr/tcp_server_posix.cc +5 -4
  251. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -4
  252. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +8 -11
  253. data/src/core/lib/iomgr/tcp_uv.cc +3 -2
  254. data/src/core/lib/iomgr/time_averaged_stats.h +2 -3
  255. data/src/core/lib/iomgr/timer_generic.cc +2 -3
  256. data/src/core/lib/{gprpp/inlined_vector.h → iomgr/timer_generic.h} +19 -17
  257. data/src/core/lib/iomgr/timer_heap.h +2 -3
  258. data/src/core/lib/iomgr/udp_server.cc +9 -14
  259. data/src/core/lib/json/json.h +3 -2
  260. data/src/core/lib/json/json_reader.cc +5 -5
  261. data/src/core/lib/json/json_writer.cc +13 -12
  262. data/src/core/lib/security/credentials/composite/composite_credentials.cc +12 -0
  263. data/src/core/lib/security/credentials/composite/composite_credentials.h +6 -3
  264. data/src/core/lib/security/credentials/credentials.cc +0 -84
  265. data/src/core/lib/security/credentials/credentials.h +8 -59
  266. data/src/core/lib/security/credentials/fake/fake_credentials.h +4 -0
  267. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +3 -8
  268. data/src/core/lib/security/credentials/iam/iam_credentials.cc +8 -6
  269. data/src/core/lib/security/credentials/iam/iam_credentials.h +4 -0
  270. data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
  271. data/src/core/lib/security/credentials/jwt/json_token.h +2 -5
  272. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +12 -0
  273. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +8 -15
  274. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -3
  275. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +55 -27
  276. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +9 -3
  277. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +13 -0
  278. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -0
  279. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +23 -13
  280. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +38 -11
  281. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +21 -6
  282. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +7 -7
  283. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +3 -2
  284. data/src/core/lib/security/security_connector/local/local_security_connector.cc +1 -1
  285. data/src/core/lib/security/security_connector/security_connector.h +1 -1
  286. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +20 -25
  287. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +4 -6
  288. data/src/core/lib/security/security_connector/ssl_utils.cc +59 -12
  289. data/src/core/lib/security/security_connector/ssl_utils.h +12 -10
  290. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +77 -51
  291. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +27 -5
  292. data/src/core/lib/security/transport/auth_filters.h +0 -5
  293. data/src/core/lib/security/transport/client_auth_filter.cc +1 -2
  294. data/src/core/lib/slice/slice_intern.cc +2 -3
  295. data/src/core/lib/slice/slice_internal.h +14 -0
  296. data/src/core/lib/slice/slice_utils.h +9 -0
  297. data/src/core/lib/surface/byte_buffer_reader.cc +2 -47
  298. data/src/core/lib/surface/call.cc +2 -3
  299. data/src/core/lib/surface/call_log_batch.cc +50 -58
  300. data/src/core/lib/surface/channel.cc +53 -31
  301. data/src/core/lib/surface/channel.h +35 -4
  302. data/src/core/lib/surface/channel_ping.cc +2 -3
  303. data/src/core/lib/surface/completion_queue.cc +33 -33
  304. data/src/core/lib/surface/event_string.cc +18 -25
  305. data/src/core/lib/surface/event_string.h +3 -1
  306. data/src/core/lib/surface/init_secure.cc +1 -4
  307. data/src/core/lib/surface/server.cc +570 -369
  308. data/src/core/lib/surface/server.h +32 -0
  309. data/src/core/lib/surface/version.cc +2 -2
  310. data/src/core/lib/transport/byte_stream.h +7 -2
  311. data/src/core/lib/transport/connectivity_state.cc +7 -6
  312. data/src/core/lib/transport/connectivity_state.h +5 -3
  313. data/src/core/lib/transport/metadata.cc +3 -3
  314. data/src/core/lib/transport/metadata_batch.h +2 -3
  315. data/src/core/lib/transport/static_metadata.h +1 -1
  316. data/src/core/lib/transport/status_conversion.cc +6 -14
  317. data/src/core/lib/transport/transport.cc +2 -3
  318. data/src/core/lib/transport/transport.h +3 -2
  319. data/src/core/lib/transport/transport_op_string.cc +61 -102
  320. data/src/core/lib/uri/uri_parser.h +2 -3
  321. data/src/core/plugin_registry/grpc_plugin_registry.cc +20 -4
  322. data/src/core/tsi/alts/crypt/aes_gcm.cc +0 -2
  323. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +8 -1
  324. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +8 -4
  325. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +32 -2
  326. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +9 -1
  327. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +2 -3
  328. data/src/core/tsi/fake_transport_security.cc +10 -15
  329. data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -2
  330. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +0 -2
  331. data/src/core/tsi/ssl_transport_security.cc +52 -39
  332. data/src/core/tsi/ssl_transport_security.h +8 -8
  333. data/src/core/tsi/ssl_types.h +0 -2
  334. data/src/core/tsi/transport_security.h +6 -9
  335. data/src/core/tsi/transport_security_grpc.h +2 -3
  336. data/src/core/tsi/transport_security_interface.h +3 -3
  337. data/src/ruby/ext/grpc/rb_call.c +9 -1
  338. data/src/ruby/ext/grpc/rb_call_credentials.c +3 -2
  339. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
  340. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
  341. data/src/ruby/lib/grpc/errors.rb +103 -42
  342. data/src/ruby/lib/grpc/generic/active_call.rb +2 -3
  343. data/src/ruby/lib/grpc/generic/interceptors.rb +4 -4
  344. data/src/ruby/lib/grpc/generic/rpc_server.rb +9 -10
  345. data/src/ruby/lib/grpc/generic/service.rb +5 -4
  346. data/src/ruby/lib/grpc/structs.rb +1 -1
  347. data/src/ruby/lib/grpc/version.rb +1 -1
  348. data/src/ruby/pb/generate_proto_ruby.sh +5 -3
  349. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +11 -0
  350. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +16 -0
  351. data/src/ruby/spec/debug_message_spec.rb +134 -0
  352. data/src/ruby/spec/generic/service_spec.rb +2 -0
  353. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_import2.proto +23 -0
  354. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +7 -0
  355. data/src/ruby/spec/pb/codegen/package_option_spec.rb +7 -1
  356. data/src/ruby/spec/support/services.rb +10 -4
  357. data/src/ruby/spec/testdata/ca.pem +18 -13
  358. data/src/ruby/spec/testdata/client.key +26 -14
  359. data/src/ruby/spec/testdata/client.pem +18 -12
  360. data/src/ruby/spec/testdata/server1.key +26 -14
  361. data/src/ruby/spec/testdata/server1.pem +20 -14
  362. data/third_party/abseil-cpp/absl/time/civil_time.cc +175 -0
  363. data/third_party/abseil-cpp/absl/time/civil_time.h +538 -0
  364. data/third_party/abseil-cpp/absl/time/clock.cc +569 -0
  365. data/third_party/abseil-cpp/absl/time/clock.h +74 -0
  366. data/third_party/abseil-cpp/absl/time/duration.cc +922 -0
  367. data/third_party/abseil-cpp/absl/time/format.cc +153 -0
  368. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +332 -0
  369. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +622 -0
  370. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +384 -0
  371. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +102 -0
  372. data/third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +94 -0
  373. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +140 -0
  374. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +52 -0
  375. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +922 -0
  376. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +45 -0
  377. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +76 -0
  378. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +121 -0
  379. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +93 -0
  380. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +958 -0
  381. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +138 -0
  382. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +308 -0
  383. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +55 -0
  384. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +187 -0
  385. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +159 -0
  386. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +132 -0
  387. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +122 -0
  388. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +115 -0
  389. data/third_party/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +31 -0
  390. data/third_party/abseil-cpp/absl/time/internal/get_current_time_posix.inc +24 -0
  391. data/third_party/abseil-cpp/absl/time/time.cc +499 -0
  392. data/third_party/abseil-cpp/absl/time/time.h +1584 -0
  393. data/third_party/boringssl-with-bazel/err_data.c +329 -297
  394. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +1 -1
  395. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +7 -5
  396. data/third_party/boringssl-with-bazel/src/crypto/cpu-intel.c +13 -4
  397. data/third_party/boringssl-with-bazel/src/crypto/crypto.c +11 -0
  398. data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519.c +18 -26
  399. data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519_tables.h +13 -21
  400. data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/internal.h +14 -22
  401. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +1 -1
  402. data/third_party/boringssl-with-bazel/src/crypto/dh/dh.c +15 -0
  403. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +10 -0
  404. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +425 -0
  405. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +78 -0
  406. data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +2 -2
  407. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +33 -32
  408. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1 -1
  409. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +2 -1
  410. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +3 -3
  411. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +14 -11
  412. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +8 -8
  413. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +30 -154
  414. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +16 -0
  415. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +289 -117
  416. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +13 -27
  417. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +96 -55
  418. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +25 -7
  419. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +432 -160
  420. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +63 -71
  421. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +5 -14
  422. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h +9481 -9485
  423. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +80 -99
  424. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +736 -0
  425. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +297 -0
  426. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +90 -11
  427. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +125 -148
  428. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +189 -3
  429. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +61 -18
  430. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +2 -2
  431. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +20 -5
  432. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +137 -0
  433. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +49 -0
  434. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +64 -0
  435. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +41 -5
  436. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +32 -17
  437. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +24 -114
  438. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +4 -0
  439. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +1 -0
  440. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +51 -38
  441. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +15 -1
  442. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +44 -35
  443. data/third_party/boringssl-with-bazel/src/crypto/mem.c +29 -12
  444. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +15 -1
  445. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +6 -10
  446. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +16 -0
  447. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +4 -0
  448. data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +4 -0
  449. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +278 -0
  450. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +1474 -0
  451. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +720 -0
  452. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +16 -0
  453. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +5 -0
  454. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +4 -3
  455. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +5 -1
  456. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +9 -4
  457. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +20 -0
  458. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +1 -0
  459. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +16 -0
  460. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +6 -0
  461. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +2 -0
  462. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +5 -0
  463. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +3 -17
  464. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +31 -0
  465. data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +26 -0
  466. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +172 -77
  467. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +1 -0
  468. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +291 -0
  469. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +5 -3
  470. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +1 -0
  471. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +0 -4
  472. data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +3 -3
  473. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +13 -4
  474. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +146 -57
  475. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +14 -3
  476. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +28 -20
  477. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +12 -4
  478. data/third_party/boringssl-with-bazel/src/ssl/internal.h +64 -47
  479. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +10 -10
  480. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
  481. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +21 -21
  482. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +29 -0
  483. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -0
  484. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +6 -1
  485. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +13 -2
  486. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +64 -5
  487. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +6 -0
  488. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +6 -2
  489. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +47 -53
  490. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +1 -1
  491. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +98 -27
  492. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +23 -75
  493. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +50 -20
  494. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +63 -25
  495. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +245 -175
  496. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +135 -75
  497. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +1593 -1672
  498. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +512 -503
  499. metadata +115 -39
  500. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +0 -1754
  501. data/src/core/lib/gprpp/string_view.h +0 -60
  502. data/src/core/tsi/grpc_shadow_boringssl.h +0 -3311
  503. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256.c +0 -1063
@@ -41,16 +41,14 @@
41
41
 
42
42
  #define GRPC_MAX_SOCKADDR_SIZE 128
43
43
 
44
- typedef struct {
44
+ struct grpc_resolved_address {
45
45
  char addr[GRPC_MAX_SOCKADDR_SIZE];
46
46
  socklen_t len;
47
- } grpc_resolved_address;
48
-
49
- typedef struct {
47
+ };
48
+ struct grpc_resolved_addresses {
50
49
  size_t naddrs;
51
50
  grpc_resolved_address* addrs;
52
- } grpc_resolved_addresses;
53
-
51
+ };
54
52
  typedef struct grpc_address_resolver_vtable {
55
53
  void (*resolve_address)(const char* addr, const char* default_port,
56
54
  grpc_pollset_set* interested_parties,
@@ -34,12 +34,12 @@
34
34
 
35
35
  #include <string.h>
36
36
 
37
- typedef struct grpc_custom_resolver {
38
- grpc_closure* on_done;
39
- grpc_resolved_addresses** addresses;
40
- char* host;
41
- char* port;
42
- } grpc_custom_resolver;
37
+ struct grpc_custom_resolver {
38
+ grpc_closure* on_done = nullptr;
39
+ grpc_resolved_addresses** addresses = nullptr;
40
+ std::string host;
41
+ std::string port;
42
+ };
43
43
 
44
44
  static grpc_custom_resolver_vtable* resolve_address_vtable = nullptr;
45
45
 
@@ -48,18 +48,18 @@ static int retry_named_port_failure(grpc_custom_resolver* r,
48
48
  // This loop is copied from resolve_address_posix.c
49
49
  const char* svc[][2] = {{"http", "80"}, {"https", "443"}};
50
50
  for (size_t i = 0; i < GPR_ARRAY_SIZE(svc); i++) {
51
- if (strcmp(r->port, svc[i][0]) == 0) {
52
- gpr_free(r->port);
53
- r->port = gpr_strdup(svc[i][1]);
51
+ if (r->port == svc[i][0]) {
52
+ r->port = svc[i][1];
54
53
  if (res) {
55
- grpc_error* error =
56
- resolve_address_vtable->resolve(r->host, r->port, res);
54
+ grpc_error* error = resolve_address_vtable->resolve(
55
+ r->host.c_str(), r->port.c_str(), res);
57
56
  if (error != GRPC_ERROR_NONE) {
58
57
  GRPC_ERROR_UNREF(error);
59
58
  return 0;
60
59
  }
61
60
  } else {
62
- resolve_address_vtable->resolve_async(r, r->host, r->port);
61
+ resolve_address_vtable->resolve_async(r, r->host.c_str(),
62
+ r->port.c_str());
63
63
  }
64
64
  return 1;
65
65
  }
@@ -81,26 +81,23 @@ void grpc_custom_resolve_callback(grpc_custom_resolver* r,
81
81
  if (r->on_done) {
82
82
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, r->on_done, error);
83
83
  }
84
- gpr_free(r->host);
85
- gpr_free(r->port);
86
- gpr_free(r);
84
+ delete r;
87
85
  }
88
86
 
89
87
  static grpc_error* try_split_host_port(const char* name,
90
88
  const char* default_port,
91
- grpc_core::UniquePtr<char>* host,
92
- grpc_core::UniquePtr<char>* port) {
89
+ std::string* host, std::string* port) {
93
90
  /* parse name, splitting it into host and port parts */
94
91
  grpc_error* error;
95
92
  grpc_core::SplitHostPort(name, host, port);
96
- if (*host == nullptr) {
93
+ if (host->empty()) {
97
94
  char* msg;
98
95
  gpr_asprintf(&msg, "unparseable host:port: '%s'", name);
99
96
  error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
100
97
  gpr_free(msg);
101
98
  return error;
102
99
  }
103
- if (*port == nullptr) {
100
+ if (port->empty()) {
104
101
  // TODO(murgatroid99): add tests for this case
105
102
  if (default_port == nullptr) {
106
103
  char* msg;
@@ -109,7 +106,7 @@ static grpc_error* try_split_host_port(const char* name,
109
106
  gpr_free(msg);
110
107
  return error;
111
108
  }
112
- port->reset(gpr_strdup(default_port));
109
+ *port = default_port;
113
110
  }
114
111
  return GRPC_ERROR_NONE;
115
112
  }
@@ -117,26 +114,21 @@ static grpc_error* try_split_host_port(const char* name,
117
114
  static grpc_error* blocking_resolve_address_impl(
118
115
  const char* name, const char* default_port,
119
116
  grpc_resolved_addresses** addresses) {
120
- grpc_core::UniquePtr<char> host;
121
- grpc_core::UniquePtr<char> port;
122
- grpc_error* err;
123
-
124
117
  GRPC_CUSTOM_IOMGR_ASSERT_SAME_THREAD();
125
118
 
126
- err = try_split_host_port(name, default_port, &host, &port);
119
+ grpc_custom_resolver resolver;
120
+ grpc_error* err =
121
+ try_split_host_port(name, default_port, &resolver.host, &resolver.port);
127
122
  if (err != GRPC_ERROR_NONE) {
128
123
  return err;
129
124
  }
130
125
 
131
126
  /* Call getaddrinfo */
132
- grpc_custom_resolver resolver;
133
- resolver.host = host.get();
134
- resolver.port = port.get();
135
-
136
127
  grpc_resolved_addresses* addrs;
137
128
  grpc_core::ExecCtx* curr = grpc_core::ExecCtx::Get();
138
129
  grpc_core::ExecCtx::Set(nullptr);
139
- err = resolve_address_vtable->resolve(host.get(), port.get(), &addrs);
130
+ err = resolve_address_vtable->resolve(resolver.host.c_str(),
131
+ resolver.port.c_str(), &addrs);
140
132
  if (err != GRPC_ERROR_NONE) {
141
133
  if (retry_named_port_failure(&resolver, &addrs)) {
142
134
  GRPC_ERROR_UNREF(err);
@@ -154,24 +146,22 @@ static void resolve_address_impl(const char* name, const char* default_port,
154
146
  grpc_pollset_set* /*interested_parties*/,
155
147
  grpc_closure* on_done,
156
148
  grpc_resolved_addresses** addrs) {
157
- grpc_custom_resolver* r = nullptr;
158
- grpc_core::UniquePtr<char> host;
159
- grpc_core::UniquePtr<char> port;
160
- grpc_error* err;
161
149
  GRPC_CUSTOM_IOMGR_ASSERT_SAME_THREAD();
162
- err = try_split_host_port(name, default_port, &host, &port);
150
+ std::string host;
151
+ std::string port;
152
+ grpc_error* err = try_split_host_port(name, default_port, &host, &port);
163
153
  if (err != GRPC_ERROR_NONE) {
164
154
  grpc_core::ExecCtx::Run(DEBUG_LOCATION, on_done, err);
165
155
  return;
166
156
  }
167
- r = (grpc_custom_resolver*)gpr_malloc(sizeof(grpc_custom_resolver));
157
+ grpc_custom_resolver* r = new grpc_custom_resolver();
168
158
  r->on_done = on_done;
169
159
  r->addresses = addrs;
170
- r->host = host.release();
171
- r->port = port.release();
160
+ r->host = std::move(host);
161
+ r->port = std::move(port);
172
162
 
173
163
  /* Call getaddrinfo */
174
- resolve_address_vtable->resolve_async(r, r->host, r->port);
164
+ resolve_address_vtable->resolve_async(r, r->host.c_str(), r->port.c_str());
175
165
  }
176
166
 
177
167
  static grpc_address_resolver_vtable custom_resolver_vtable = {
@@ -29,8 +29,10 @@
29
29
  typedef struct grpc_custom_resolver grpc_custom_resolver;
30
30
 
31
31
  typedef struct grpc_custom_resolver_vtable {
32
- grpc_error* (*resolve)(char* host, char* port, grpc_resolved_addresses** res);
33
- void (*resolve_async)(grpc_custom_resolver* resolver, char* host, char* port);
32
+ grpc_error* (*resolve)(const char* host, const char* port,
33
+ grpc_resolved_addresses** res);
34
+ void (*resolve_async)(grpc_custom_resolver* resolver, const char* host,
35
+ const char* port);
34
36
  } grpc_custom_resolver_vtable;
35
37
 
36
38
  void grpc_custom_resolve_callback(grpc_custom_resolver* resolver,
@@ -57,24 +57,24 @@ static grpc_error* posix_blocking_resolve_address(
57
57
  return grpc_resolve_unix_domain_address(name + 5, addresses);
58
58
  }
59
59
 
60
- grpc_core::UniquePtr<char> host;
61
- grpc_core::UniquePtr<char> port;
60
+ std::string host;
61
+ std::string port;
62
62
  /* parse name, splitting it into host and port parts */
63
63
  grpc_core::SplitHostPort(name, &host, &port);
64
- if (host == nullptr) {
64
+ if (host.empty()) {
65
65
  err = grpc_error_set_str(
66
66
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("unparseable host:port"),
67
67
  GRPC_ERROR_STR_TARGET_ADDRESS, grpc_slice_from_copied_string(name));
68
68
  goto done;
69
69
  }
70
- if (port == nullptr) {
70
+ if (port.empty()) {
71
71
  if (default_port == nullptr) {
72
72
  err = grpc_error_set_str(
73
73
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("no port in name"),
74
74
  GRPC_ERROR_STR_TARGET_ADDRESS, grpc_slice_from_copied_string(name));
75
75
  goto done;
76
76
  }
77
- port.reset(gpr_strdup(default_port));
77
+ port = default_port;
78
78
  }
79
79
 
80
80
  /* Call getaddrinfo */
@@ -84,16 +84,16 @@ static grpc_error* posix_blocking_resolve_address(
84
84
  hints.ai_flags = AI_PASSIVE; /* for wildcard IP address */
85
85
 
86
86
  GRPC_SCHEDULING_START_BLOCKING_REGION;
87
- s = getaddrinfo(host.get(), port.get(), &hints, &result);
87
+ s = getaddrinfo(host.c_str(), port.c_str(), &hints, &result);
88
88
  GRPC_SCHEDULING_END_BLOCKING_REGION;
89
89
 
90
90
  if (s != 0) {
91
91
  /* Retry if well-known service name is recognized */
92
92
  const char* svc[][2] = {{"http", "80"}, {"https", "443"}};
93
93
  for (i = 0; i < GPR_ARRAY_SIZE(svc); i++) {
94
- if (strcmp(port.get(), svc[i][0]) == 0) {
94
+ if (port == svc[i][0]) {
95
95
  GRPC_SCHEDULING_START_BLOCKING_REGION;
96
- s = getaddrinfo(host.get(), svc[i][1], &hints, &result);
96
+ s = getaddrinfo(host.c_str(), svc[i][1], &hints, &result);
97
97
  GRPC_SCHEDULING_END_BLOCKING_REGION;
98
98
  break;
99
99
  }
@@ -139,15 +139,14 @@ done:
139
139
  return err;
140
140
  }
141
141
 
142
- typedef struct {
142
+ struct request {
143
143
  char* name;
144
144
  char* default_port;
145
145
  grpc_closure* on_done;
146
146
  grpc_resolved_addresses** addrs_out;
147
147
  grpc_closure request_closure;
148
148
  void* arg;
149
- } request;
150
-
149
+ };
151
150
  /* Callback to be passed to grpc Executor to asynch-ify
152
151
  * grpc_blocking_resolve_address */
153
152
  static void do_request_thread(void* rp, grpc_error* /*error*/) {
@@ -43,14 +43,13 @@
43
43
  #include "src/core/lib/iomgr/iomgr_internal.h"
44
44
  #include "src/core/lib/iomgr/sockaddr_utils.h"
45
45
 
46
- typedef struct {
46
+ struct request {
47
47
  char* name;
48
48
  char* default_port;
49
49
  grpc_closure request_closure;
50
50
  grpc_closure* on_done;
51
51
  grpc_resolved_addresses** addresses;
52
- } request;
53
-
52
+ };
54
53
  static grpc_error* windows_blocking_resolve_address(
55
54
  const char* name, const char* default_port,
56
55
  grpc_resolved_addresses** addresses) {
@@ -62,17 +61,17 @@ static grpc_error* windows_blocking_resolve_address(
62
61
  grpc_error* error = GRPC_ERROR_NONE;
63
62
 
64
63
  /* parse name, splitting it into host and port parts */
65
- grpc_core::UniquePtr<char> host;
66
- grpc_core::UniquePtr<char> port;
64
+ std::string host;
65
+ std::string port;
67
66
  grpc_core::SplitHostPort(name, &host, &port);
68
- if (host == NULL) {
67
+ if (host.empty()) {
69
68
  char* msg;
70
69
  gpr_asprintf(&msg, "unparseable host:port: '%s'", name);
71
70
  error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
72
71
  gpr_free(msg);
73
72
  goto done;
74
73
  }
75
- if (port == NULL) {
74
+ if (port.empty()) {
76
75
  if (default_port == NULL) {
77
76
  char* msg;
78
77
  gpr_asprintf(&msg, "no port in name '%s'", name);
@@ -80,7 +79,7 @@ static grpc_error* windows_blocking_resolve_address(
80
79
  gpr_free(msg);
81
80
  goto done;
82
81
  }
83
- port.reset(gpr_strdup(default_port));
82
+ port = default_port;
84
83
  }
85
84
 
86
85
  /* Call getaddrinfo */
@@ -90,7 +89,7 @@ static grpc_error* windows_blocking_resolve_address(
90
89
  hints.ai_flags = AI_PASSIVE; /* for wildcard IP address */
91
90
 
92
91
  GRPC_SCHEDULING_START_BLOCKING_REGION;
93
- s = getaddrinfo(host.get(), port.get(), &hints, &result);
92
+ s = getaddrinfo(host.c_str(), port.c_str(), &hints, &result);
94
93
  GRPC_SCHEDULING_END_BLOCKING_REGION;
95
94
  if (s != 0) {
96
95
  error = GRPC_WSA_ERROR(WSAGetLastError(), "getaddrinfo");
@@ -113,14 +112,6 @@ static grpc_error* windows_blocking_resolve_address(
113
112
  i++;
114
113
  }
115
114
 
116
- {
117
- for (i = 0; i < (*addresses)->naddrs; i++) {
118
- char* buf;
119
- grpc_sockaddr_to_string(&buf, &(*addresses)->addrs[i], 0);
120
- gpr_free(buf);
121
- }
122
- }
123
-
124
115
  done:
125
116
  if (result) {
126
117
  freeaddrinfo(result);
@@ -39,11 +39,10 @@ grpc_core::TraceFlag grpc_resource_quota_trace(false, "resource_quota");
39
39
  #define MEMORY_USAGE_ESTIMATION_MAX 65536
40
40
 
41
41
  /* Internal linked list pointers for a resource user */
42
- typedef struct {
42
+ struct grpc_resource_user_link {
43
43
  grpc_resource_user* next;
44
44
  grpc_resource_user* prev;
45
- } grpc_resource_user_link;
46
-
45
+ };
47
46
  /* Resource users are kept in (potentially) several intrusive linked lists
48
47
  at once. These are the list names. */
49
48
  typedef enum {
@@ -610,12 +609,11 @@ static void ru_allocated_slices(void* arg, grpc_error* error) {
610
609
  * combiner
611
610
  */
612
611
 
613
- typedef struct {
612
+ struct rq_resize_args {
614
613
  int64_t size;
615
614
  grpc_resource_quota* resource_quota;
616
615
  grpc_closure closure;
617
- } rq_resize_args;
618
-
616
+ };
619
617
  static void rq_resize(void* args, grpc_error* /*error*/) {
620
618
  rq_resize_args* a = static_cast<rq_resize_args*>(args);
621
619
  int64_t delta = a->size - a->resource_quota->size;
@@ -24,6 +24,8 @@
24
24
  #include <inttypes.h>
25
25
  #include <string.h>
26
26
 
27
+ #include "absl/strings/str_format.h"
28
+
27
29
  #include <grpc/support/alloc.h>
28
30
  #include <grpc/support/log.h>
29
31
  #include <grpc/support/string_util.h>
@@ -150,23 +152,18 @@ void grpc_sockaddr_make_wildcard6(int port,
150
152
  resolved_wild_out->len = static_cast<socklen_t>(sizeof(grpc_sockaddr_in6));
151
153
  }
152
154
 
153
- int grpc_sockaddr_to_string(char** out,
154
- const grpc_resolved_address* resolved_addr,
155
- int normalize) {
156
- const grpc_sockaddr* addr;
155
+ std::string grpc_sockaddr_to_string(const grpc_resolved_address* resolved_addr,
156
+ bool normalize) {
157
157
  const int save_errno = errno;
158
158
  grpc_resolved_address addr_normalized;
159
- char ntop_buf[GRPC_INET6_ADDRSTRLEN];
160
- const void* ip = nullptr;
161
- int port = 0;
162
- uint32_t sin6_scope_id = 0;
163
- int ret;
164
-
165
- *out = nullptr;
166
159
  if (normalize && grpc_sockaddr_is_v4mapped(resolved_addr, &addr_normalized)) {
167
160
  resolved_addr = &addr_normalized;
168
161
  }
169
- addr = reinterpret_cast<const grpc_sockaddr*>(resolved_addr->addr);
162
+ const grpc_sockaddr* addr =
163
+ reinterpret_cast<const grpc_sockaddr*>(resolved_addr->addr);
164
+ const void* ip = nullptr;
165
+ int port = 0;
166
+ uint32_t sin6_scope_id = 0;
170
167
  if (addr->sa_family == GRPC_AF_INET) {
171
168
  const grpc_sockaddr_in* addr4 =
172
169
  reinterpret_cast<const grpc_sockaddr_in*>(addr);
@@ -179,25 +176,24 @@ int grpc_sockaddr_to_string(char** out,
179
176
  port = grpc_ntohs(addr6->sin6_port);
180
177
  sin6_scope_id = addr6->sin6_scope_id;
181
178
  }
179
+ char ntop_buf[GRPC_INET6_ADDRSTRLEN];
180
+ std::string out;
182
181
  if (ip != nullptr && grpc_inet_ntop(addr->sa_family, ip, ntop_buf,
183
182
  sizeof(ntop_buf)) != nullptr) {
184
- grpc_core::UniquePtr<char> tmp_out;
185
183
  if (sin6_scope_id != 0) {
186
- char* host_with_scope;
187
- /* Enclose sin6_scope_id with the format defined in RFC 6784 section 2. */
188
- gpr_asprintf(&host_with_scope, "%s%%25%" PRIu32, ntop_buf, sin6_scope_id);
189
- ret = grpc_core::JoinHostPort(&tmp_out, host_with_scope, port);
190
- gpr_free(host_with_scope);
184
+ // Enclose sin6_scope_id with the format defined in RFC 6784 section 2.
185
+ std::string host_with_scope =
186
+ absl::StrFormat("%s%%25%" PRIu32, ntop_buf, sin6_scope_id);
187
+ out = grpc_core::JoinHostPort(host_with_scope, port);
191
188
  } else {
192
- ret = grpc_core::JoinHostPort(&tmp_out, ntop_buf, port);
189
+ out = grpc_core::JoinHostPort(ntop_buf, port);
193
190
  }
194
- *out = tmp_out.release();
195
191
  } else {
196
- ret = gpr_asprintf(out, "(sockaddr family=%d)", addr->sa_family);
192
+ out = absl::StrFormat("(sockaddr family=%d)", addr->sa_family);
197
193
  }
198
194
  /* This is probably redundant, but we wouldn't want to log the wrong error. */
199
195
  errno = save_errno;
200
- return ret;
196
+ return out;
201
197
  }
202
198
 
203
199
  void grpc_string_to_sockaddr(grpc_resolved_address* out, char* addr, int port) {
@@ -226,15 +222,13 @@ char* grpc_sockaddr_to_uri(const grpc_resolved_address* resolved_addr) {
226
222
  if (scheme == nullptr || strcmp("unix", scheme) == 0) {
227
223
  return grpc_sockaddr_to_uri_unix_if_possible(resolved_addr);
228
224
  }
229
- char* path = nullptr;
225
+ std::string path =
226
+ grpc_sockaddr_to_string(resolved_addr, false /* normalize */);
230
227
  char* uri_str = nullptr;
231
- if (grpc_sockaddr_to_string(&path, resolved_addr,
232
- false /* suppress errors */) &&
233
- scheme != nullptr) {
234
- gpr_asprintf(&uri_str, "%s:%s", scheme, path);
228
+ if (scheme != nullptr) {
229
+ gpr_asprintf(&uri_str, "%s:%s", scheme, path.c_str());
235
230
  }
236
- gpr_free(path);
237
- return uri_str != nullptr ? uri_str : nullptr;
231
+ return uri_str;
238
232
  }
239
233
 
240
234
  const char* grpc_sockaddr_get_uri_scheme(
@@ -21,6 +21,8 @@
21
21
 
22
22
  #include <grpc/support/port_platform.h>
23
23
 
24
+ #include <string>
25
+
24
26
  #include "src/core/lib/iomgr/resolve_address.h"
25
27
 
26
28
  /* Returns true if addr is an IPv4-mapped IPv6 address within the
@@ -56,20 +58,13 @@ int grpc_sockaddr_get_port(const grpc_resolved_address* addr);
56
58
  /* Set IP port number of a sockaddr */
57
59
  int grpc_sockaddr_set_port(const grpc_resolved_address* addr, int port);
58
60
 
59
- /* Converts a sockaddr into a newly-allocated human-readable string.
60
-
61
- Currently, only the AF_INET and AF_INET6 families are recognized.
62
- If the normalize flag is enabled, ::ffff:0.0.0.0/96 IPv6 addresses are
63
- displayed as plain IPv4.
64
-
65
- Usage is similar to gpr_asprintf: returns the number of bytes written
66
- (excluding the final '\0'), and *out points to a string which must later be
67
- destroyed using gpr_free().
68
-
69
- In the unlikely event of an error, returns -1 and sets *out to NULL.
70
- The existing value of errno is always preserved. */
71
- int grpc_sockaddr_to_string(char** out, const grpc_resolved_address* addr,
72
- int normalize);
61
+ // Converts a sockaddr into a newly-allocated human-readable string.
62
+ //
63
+ // Currently, only the AF_INET and AF_INET6 families are recognized.
64
+ // If the normalize flag is enabled, ::ffff:0.0.0.0/96 IPv6 addresses are
65
+ // displayed as plain IPv4.
66
+ std::string grpc_sockaddr_to_string(const grpc_resolved_address* addr,
67
+ bool normalize);
73
68
 
74
69
  void grpc_string_to_sockaddr(grpc_resolved_address* out, char* addr, int port);
75
70