grpc 1.30.2 → 1.32.0

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 (674) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +723 -15910
  3. data/include/grpc/grpc_security.h +31 -14
  4. data/include/grpc/grpc_security_constants.h +3 -0
  5. data/include/grpc/impl/codegen/README.md +22 -0
  6. data/include/grpc/impl/codegen/grpc_types.h +7 -5
  7. data/include/grpc/impl/codegen/port_platform.h +6 -33
  8. data/src/core/ext/filters/client_channel/backend_metric.cc +12 -9
  9. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -2
  10. data/src/core/ext/filters/client_channel/client_channel.cc +470 -285
  11. data/src/core/ext/filters/client_channel/client_channel.h +1 -1
  12. data/src/core/ext/filters/client_channel/client_channel_channelz.h +0 -3
  13. data/src/core/ext/filters/client_channel/config_selector.cc +62 -0
  14. data/src/core/ext/filters/client_channel/config_selector.h +93 -0
  15. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -2
  16. data/src/core/ext/filters/client_channel/health/health_check_client.cc +8 -1
  17. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +8 -8
  18. data/src/core/ext/filters/client_channel/http_proxy.cc +6 -4
  19. data/src/core/ext/filters/client_channel/lb_policy.h +4 -0
  20. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +6 -4
  21. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +59 -36
  22. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -13
  23. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +0 -3
  24. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -37
  25. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +19 -13
  26. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +29 -10
  27. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +5 -4
  28. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +4 -6
  29. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +23 -13
  30. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +18 -12
  31. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +22 -14
  32. data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +18 -9
  33. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +385 -78
  34. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -5
  35. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +5 -2
  36. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +6 -5
  37. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +8 -6
  38. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +9 -7
  39. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +7 -5
  40. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +36 -51
  41. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
  42. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  43. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -2
  44. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -1
  45. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
  46. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +383 -31
  47. data/src/core/ext/filters/client_channel/resolver_registry.cc +13 -14
  48. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +6 -7
  49. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +0 -1
  50. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +38 -32
  51. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +39 -20
  52. data/src/core/ext/filters/client_channel/server_address.cc +40 -7
  53. data/src/core/ext/filters/client_channel/server_address.h +42 -4
  54. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +142 -0
  55. data/src/core/ext/filters/client_channel/subchannel.cc +65 -24
  56. data/src/core/ext/filters/client_channel/subchannel.h +16 -4
  57. data/src/core/ext/filters/http/client/http_client_filter.cc +5 -5
  58. data/src/core/ext/filters/http/http_filters_plugin.cc +2 -1
  59. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +74 -33
  60. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +3 -1
  61. data/src/core/ext/filters/max_age/max_age_filter.cc +2 -1
  62. data/src/core/ext/filters/message_size/message_size_filter.cc +56 -80
  63. data/src/core/ext/filters/message_size/message_size_filter.h +6 -0
  64. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +87 -31
  65. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +18 -1
  66. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +10 -35
  67. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +378 -348
  68. data/src/core/ext/transport/chttp2/server/chttp2_server.h +7 -2
  69. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -3
  70. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +10 -16
  71. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +9 -9
  72. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +256 -279
  73. data/src/core/ext/transport/chttp2/transport/flow_control.cc +23 -28
  74. data/src/core/ext/transport/chttp2/transport/flow_control.h +14 -16
  75. data/src/core/ext/transport/chttp2/transport/frame_data.cc +9 -12
  76. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +4 -6
  77. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -6
  78. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +12 -13
  79. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +8 -9
  80. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +9 -12
  81. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +25 -29
  82. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +13 -17
  83. data/src/core/ext/transport/chttp2/transport/internal.h +18 -1
  84. data/src/core/ext/transport/chttp2/transport/parsing.cc +34 -71
  85. data/src/core/ext/transport/chttp2/transport/writing.cc +15 -19
  86. data/src/core/ext/transport/inproc/inproc_transport.cc +47 -27
  87. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +0 -1
  88. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +3 -4
  89. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +224 -0
  90. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +700 -0
  91. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +74 -0
  92. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +226 -0
  93. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +380 -0
  94. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1378 -0
  95. data/src/core/ext/upb-generated/envoy/{api/v2/cluster → config/cluster/v3}/filter.upb.c +8 -8
  96. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +69 -0
  97. data/src/core/ext/upb-generated/envoy/{api/v2/cluster → config/cluster/v3}/outlier_detection.upb.c +8 -8
  98. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +323 -0
  99. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +112 -0
  100. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +334 -0
  101. data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/backoff.upb.c +8 -8
  102. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +79 -0
  103. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +309 -0
  104. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +869 -0
  105. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +96 -0
  106. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +328 -0
  107. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +34 -0
  108. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +71 -0
  109. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +195 -0
  110. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +634 -0
  111. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +170 -0
  112. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +684 -0
  113. data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/http_uri.upb.c +8 -8
  114. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +80 -0
  115. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +152 -0
  116. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +536 -0
  117. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +28 -0
  118. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +58 -0
  119. data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/socket_option.upb.c +6 -6
  120. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +88 -0
  121. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +91 -0
  122. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +220 -0
  123. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +91 -0
  124. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +273 -0
  125. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +112 -0
  126. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +332 -0
  127. data/src/core/ext/upb-generated/envoy/config/listener/{v2 → v3}/api_listener.upb.c +8 -8
  128. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +65 -0
  129. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +108 -0
  130. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +401 -0
  131. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +138 -0
  132. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +490 -0
  133. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +41 -0
  134. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +94 -0
  135. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +174 -0
  136. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +599 -0
  137. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +63 -0
  138. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +204 -0
  139. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +773 -0
  140. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +2855 -0
  141. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +59 -0
  142. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +135 -0
  143. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +50 -0
  144. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +108 -0
  145. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +312 -0
  146. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1125 -0
  147. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +20 -0
  148. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +34 -0
  149. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +111 -0
  150. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +401 -0
  151. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +72 -0
  152. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +198 -0
  153. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +105 -0
  154. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +388 -0
  155. data/src/core/ext/upb-generated/envoy/{api/v2 → service/cluster/v3}/cds.upb.c +5 -6
  156. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +49 -0
  157. data/src/core/ext/upb-generated/envoy/service/discovery/{v2 → v3}/ads.upb.c +5 -4
  158. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +49 -0
  159. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +129 -0
  160. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +386 -0
  161. data/src/core/ext/upb-generated/envoy/{api/v2 → service/endpoint/v3}/eds.upb.c +5 -6
  162. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +49 -0
  163. data/src/core/ext/upb-generated/envoy/{api/v2 → service/listener/v3}/lds.upb.c +5 -6
  164. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +49 -0
  165. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +55 -0
  166. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +136 -0
  167. data/src/core/ext/upb-generated/envoy/{api/v2 → service/route/v3}/rds.upb.c +5 -6
  168. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +49 -0
  169. data/src/core/ext/upb-generated/envoy/{api/v2 → service/route/v3}/srds.upb.c +5 -6
  170. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +49 -0
  171. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +47 -0
  172. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +114 -0
  173. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +35 -0
  174. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +77 -0
  175. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +34 -0
  176. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +71 -0
  177. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +64 -0
  178. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +145 -0
  179. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +53 -0
  180. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +127 -0
  181. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +63 -0
  182. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +188 -0
  183. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +88 -0
  184. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +258 -0
  185. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +90 -0
  186. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +250 -0
  187. data/src/core/ext/upb-generated/envoy/type/{http.upb.c → v3/http.upb.c} +2 -2
  188. data/src/core/ext/upb-generated/envoy/type/{http.upb.h → v3/http.upb.h} +8 -9
  189. data/src/core/ext/upb-generated/envoy/type/{percent.upb.c → v3/percent.upb.c} +9 -8
  190. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +86 -0
  191. data/src/core/ext/upb-generated/envoy/type/{range.upb.c → v3/range.upb.c} +12 -11
  192. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +111 -0
  193. data/src/core/ext/upb-generated/envoy/type/{semantic_version.upb.c → v3/semantic_version.upb.c} +6 -5
  194. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +61 -0
  195. data/src/core/ext/upb-generated/gogoproto/gogo.upb.h +0 -1
  196. data/src/core/ext/upb-generated/google/api/annotations.upb.h +0 -1
  197. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +234 -0
  198. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +759 -0
  199. data/src/core/ext/upb-generated/google/api/http.upb.h +29 -28
  200. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +5 -6
  201. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +39 -39
  202. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +412 -386
  203. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +5 -6
  204. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +1 -2
  205. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +1 -1
  206. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +34 -55
  207. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +5 -6
  208. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +27 -28
  209. data/src/core/ext/upb-generated/google/rpc/status.upb.h +8 -8
  210. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +1 -1
  211. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +32 -45
  212. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +4 -4
  213. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +157 -178
  214. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +14 -13
  215. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +6 -7
  216. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +59 -56
  217. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +11 -12
  218. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +0 -1
  219. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +5 -6
  220. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +27 -0
  221. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +53 -0
  222. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +6 -6
  223. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +41 -68
  224. data/src/core/ext/upb-generated/validate/validate.upb.c +11 -11
  225. data/src/core/ext/upb-generated/validate/validate.upb.h +537 -536
  226. data/src/core/ext/xds/xds_api.cc +2388 -0
  227. data/src/core/ext/{filters/client_channel/xds → xds}/xds_api.h +120 -40
  228. data/src/core/ext/{filters/client_channel/xds → xds}/xds_bootstrap.cc +56 -25
  229. data/src/core/ext/{filters/client_channel/xds → xds}/xds_bootstrap.h +8 -3
  230. data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel.h +4 -4
  231. data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel_args.h +3 -3
  232. data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel_secure.cc +2 -5
  233. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.cc +94 -347
  234. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.h +12 -45
  235. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.cc +2 -2
  236. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.h +13 -13
  237. data/src/core/lib/channel/channel_trace.cc +2 -6
  238. data/src/core/lib/channel/channelz.cc +19 -30
  239. data/src/core/lib/channel/channelz.h +1 -1
  240. data/src/core/lib/channel/channelz_registry.cc +3 -1
  241. data/src/core/lib/gpr/log_linux.cc +6 -8
  242. data/src/core/lib/gpr/log_posix.cc +6 -8
  243. data/src/core/lib/gpr/string.cc +10 -9
  244. data/src/core/lib/gpr/string.h +4 -2
  245. data/src/core/lib/gpr/sync_posix.cc +2 -8
  246. data/src/core/lib/gprpp/global_config_env.cc +8 -6
  247. data/src/core/lib/http/httpcli.cc +13 -10
  248. data/src/core/lib/http/httpcli_security_connector.cc +5 -5
  249. data/src/core/lib/iomgr/cfstream_handle.cc +1 -0
  250. data/src/core/lib/iomgr/endpoint.cc +5 -1
  251. data/src/core/lib/iomgr/endpoint.h +7 -3
  252. data/src/core/lib/iomgr/endpoint_cfstream.cc +32 -11
  253. data/src/core/lib/iomgr/endpoint_pair_posix.cc +10 -10
  254. data/src/core/lib/iomgr/error_cfstream.cc +9 -8
  255. data/src/core/lib/iomgr/ev_epoll1_linux.cc +5 -6
  256. data/src/core/lib/iomgr/ev_epollex_linux.cc +15 -21
  257. data/src/core/lib/iomgr/ev_poll_posix.cc +6 -5
  258. data/src/core/lib/iomgr/is_epollexclusive_available.cc +14 -0
  259. data/src/core/{ext/filters/client_channel → lib/iomgr}/parse_address.cc +1 -1
  260. data/src/core/{ext/filters/client_channel → lib/iomgr}/parse_address.h +3 -3
  261. data/src/core/lib/iomgr/port.h +1 -21
  262. data/src/core/lib/iomgr/resolve_address_custom.cc +13 -18
  263. data/src/core/lib/iomgr/resolve_address_windows.cc +8 -8
  264. data/src/core/lib/iomgr/resource_quota.cc +34 -31
  265. data/src/core/lib/iomgr/sockaddr_utils.cc +9 -6
  266. data/src/core/lib/iomgr/sockaddr_utils.h +3 -2
  267. data/src/core/lib/iomgr/socket_utils_common_posix.cc +95 -55
  268. data/src/core/lib/iomgr/socket_windows.cc +4 -5
  269. data/src/core/lib/iomgr/tcp_client_cfstream.cc +9 -11
  270. data/src/core/lib/iomgr/tcp_client_custom.cc +6 -9
  271. data/src/core/lib/iomgr/tcp_client_posix.cc +27 -36
  272. data/src/core/lib/iomgr/tcp_client_windows.cc +9 -9
  273. data/src/core/lib/iomgr/tcp_custom.cc +33 -17
  274. data/src/core/lib/iomgr/tcp_custom.h +1 -1
  275. data/src/core/lib/iomgr/tcp_posix.cc +31 -13
  276. data/src/core/lib/iomgr/tcp_server.cc +3 -4
  277. data/src/core/lib/iomgr/tcp_server.h +7 -5
  278. data/src/core/lib/iomgr/tcp_server_custom.cc +6 -14
  279. data/src/core/lib/iomgr/tcp_server_posix.cc +34 -41
  280. data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -4
  281. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -7
  282. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -9
  283. data/src/core/lib/iomgr/tcp_server_windows.cc +16 -16
  284. data/src/core/lib/iomgr/tcp_windows.cc +26 -10
  285. data/src/core/lib/iomgr/timer_generic.cc +13 -12
  286. data/src/core/lib/iomgr/udp_server.cc +24 -23
  287. data/src/core/lib/iomgr/udp_server.h +5 -2
  288. data/src/core/lib/iomgr/unix_sockets_posix.cc +9 -14
  289. data/src/core/lib/iomgr/unix_sockets_posix.h +3 -1
  290. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +5 -2
  291. data/src/core/lib/json/json_reader.cc +20 -21
  292. data/src/core/lib/security/authorization/authorization_engine.cc +177 -0
  293. data/src/core/lib/security/authorization/authorization_engine.h +84 -0
  294. data/src/core/lib/security/authorization/evaluate_args.cc +153 -0
  295. data/src/core/lib/security/authorization/evaluate_args.h +59 -0
  296. data/src/core/lib/security/authorization/mock_cel/activation.h +57 -0
  297. data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +42 -0
  298. data/src/core/lib/security/authorization/mock_cel/cel_expression.h +68 -0
  299. data/src/core/lib/security/authorization/mock_cel/cel_value.h +93 -0
  300. data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +67 -0
  301. data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +56 -0
  302. data/src/core/lib/security/authorization/mock_cel/statusor.h +50 -0
  303. data/src/core/lib/security/credentials/credentials.h +5 -3
  304. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +8 -6
  305. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +64 -43
  306. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -4
  307. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +19 -28
  308. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -6
  309. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +20 -0
  310. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +10 -0
  311. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +10 -0
  312. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +11 -12
  313. data/src/core/lib/security/security_connector/security_connector.cc +2 -0
  314. data/src/core/lib/security/security_connector/security_connector.h +1 -1
  315. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +18 -11
  316. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +5 -0
  317. data/src/core/lib/security/security_connector/ssl_utils.cc +44 -23
  318. data/src/core/lib/security/security_connector/ssl_utils.h +6 -2
  319. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +27 -24
  320. data/src/core/lib/security/transport/client_auth_filter.cc +10 -9
  321. data/src/core/lib/security/transport/secure_endpoint.cc +7 -1
  322. data/src/core/lib/security/util/json_util.cc +12 -13
  323. data/src/core/lib/slice/slice.cc +38 -1
  324. data/src/core/lib/slice/slice_internal.h +1 -0
  325. data/src/core/lib/surface/call.cc +52 -53
  326. data/src/core/lib/surface/call.h +2 -1
  327. data/src/core/lib/surface/channel.cc +28 -20
  328. data/src/core/lib/surface/channel.h +12 -2
  329. data/src/core/lib/surface/completion_queue.cc +0 -5
  330. data/src/core/lib/surface/init.cc +1 -1
  331. data/src/core/lib/surface/server.cc +1102 -1347
  332. data/src/core/lib/surface/server.h +369 -71
  333. data/src/core/lib/surface/version.cc +2 -2
  334. data/src/core/lib/transport/authority_override.cc +38 -0
  335. data/src/core/lib/transport/authority_override.h +32 -0
  336. data/src/core/lib/transport/connectivity_state.cc +18 -13
  337. data/src/core/lib/transport/connectivity_state.h +18 -6
  338. data/src/core/lib/transport/error_utils.cc +13 -0
  339. data/src/core/lib/transport/error_utils.h +6 -0
  340. data/src/core/lib/transport/static_metadata.cc +295 -276
  341. data/src/core/lib/transport/static_metadata.h +80 -73
  342. data/src/core/lib/transport/transport.h +13 -0
  343. data/src/core/lib/uri/uri_parser.cc +30 -35
  344. data/src/core/lib/uri/uri_parser.h +3 -1
  345. data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -0
  346. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +23 -13
  347. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +24 -0
  348. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -0
  349. data/src/core/tsi/ssl_transport_security.cc +102 -11
  350. data/src/core/tsi/ssl_transport_security.h +14 -2
  351. data/src/core/tsi/transport_security_interface.h +5 -0
  352. data/src/ruby/bin/math_services_pb.rb +4 -4
  353. data/src/ruby/ext/grpc/extconf.rb +5 -2
  354. data/src/ruby/ext/grpc/rb_call.c +3 -2
  355. data/src/ruby/ext/grpc/rb_call.h +4 -0
  356. data/src/ruby/ext/grpc/rb_call_credentials.c +54 -10
  357. data/src/ruby/ext/grpc/rb_channel_credentials.c +9 -0
  358. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -2
  359. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +4 -4
  360. data/src/ruby/lib/grpc/generic/client_stub.rb +1 -1
  361. data/src/ruby/lib/grpc/generic/interceptors.rb +1 -1
  362. data/src/ruby/lib/grpc/version.rb +1 -1
  363. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +2 -2
  364. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +5 -0
  365. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +28 -12
  366. data/src/ruby/spec/channel_credentials_spec.rb +10 -0
  367. data/src/ruby/spec/generic/active_call_spec.rb +19 -8
  368. data/src/ruby/spec/pb/codegen/grpc/testing/same_package_service_name.proto +27 -0
  369. data/src/ruby/spec/pb/codegen/grpc/testing/same_ruby_package_service_name.proto +29 -0
  370. data/src/ruby/spec/pb/codegen/package_option_spec.rb +20 -0
  371. data/src/ruby/spec/user_agent_spec.rb +74 -0
  372. data/third_party/abseil-cpp/absl/algorithm/container.h +1727 -0
  373. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +161 -0
  374. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.cc +93 -0
  375. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.h +130 -0
  376. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +620 -0
  377. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +126 -0
  378. data/third_party/abseil-cpp/absl/container/fixed_array.h +515 -0
  379. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +503 -0
  380. data/third_party/abseil-cpp/absl/container/internal/common.h +202 -0
  381. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +440 -0
  382. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +146 -0
  383. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +191 -0
  384. data/third_party/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +85 -0
  385. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +269 -0
  386. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +297 -0
  387. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +30 -0
  388. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +49 -0
  389. data/third_party/abseil-cpp/absl/container/internal/layout.h +741 -0
  390. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +48 -0
  391. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1882 -0
  392. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +138 -0
  393. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.h +32 -0
  394. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1895 -0
  395. data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +71 -0
  396. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +382 -0
  397. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +134 -0
  398. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +192 -0
  399. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +125 -0
  400. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +70 -0
  401. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +99 -0
  402. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +248 -0
  403. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +24 -0
  404. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +85 -0
  405. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +346 -0
  406. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +128 -0
  407. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +194 -0
  408. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
  409. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +140 -0
  410. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +231 -0
  411. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +25 -0
  412. data/third_party/abseil-cpp/absl/debugging/symbolize.h +99 -0
  413. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +1480 -0
  414. data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +40 -0
  415. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +81 -0
  416. data/third_party/abseil-cpp/absl/functional/function_ref.h +139 -0
  417. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +106 -0
  418. data/third_party/abseil-cpp/absl/hash/hash.h +324 -0
  419. data/third_party/abseil-cpp/absl/hash/internal/city.cc +346 -0
  420. data/third_party/abseil-cpp/absl/hash/internal/city.h +96 -0
  421. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +55 -0
  422. data/third_party/abseil-cpp/absl/hash/internal/hash.h +988 -0
  423. data/third_party/abseil-cpp/absl/status/status.cc +447 -0
  424. data/third_party/abseil-cpp/absl/status/status.h +428 -0
  425. data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +43 -0
  426. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +51 -0
  427. data/third_party/abseil-cpp/absl/strings/cord.cc +2019 -0
  428. data/third_party/abseil-cpp/absl/strings/cord.h +1121 -0
  429. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +151 -0
  430. data/third_party/abseil-cpp/absl/synchronization/barrier.cc +52 -0
  431. data/third_party/abseil-cpp/absl/synchronization/barrier.h +79 -0
  432. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +57 -0
  433. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +99 -0
  434. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +140 -0
  435. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +60 -0
  436. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +697 -0
  437. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +141 -0
  438. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +155 -0
  439. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +261 -0
  440. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +106 -0
  441. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +115 -0
  442. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +484 -0
  443. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +159 -0
  444. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +2728 -0
  445. data/third_party/abseil-cpp/absl/synchronization/mutex.h +1056 -0
  446. data/third_party/abseil-cpp/absl/synchronization/notification.cc +78 -0
  447. data/third_party/abseil-cpp/absl/synchronization/notification.h +123 -0
  448. data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +64 -0
  449. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +82 -0
  450. data/third_party/abseil-cpp/absl/types/internal/variant.h +1646 -0
  451. data/third_party/abseil-cpp/absl/types/variant.h +861 -0
  452. data/third_party/boringssl-with-bazel/err_data.c +266 -254
  453. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +3 -3
  454. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +3 -3
  455. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +1 -1
  456. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +3 -3
  457. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
  458. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +1 -1
  459. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -1
  460. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +1 -1
  461. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +1 -1
  462. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +1 -1
  463. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +1 -1
  464. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +1 -0
  465. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +12 -52
  466. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +0 -22
  467. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +159 -0
  468. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +17 -1
  469. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +11 -1
  470. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +2 -1
  471. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +13 -11
  472. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +24 -23
  473. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +20 -16
  474. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -2
  475. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +3 -3
  476. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +62 -0
  477. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +456 -0
  478. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +192 -0
  479. data/third_party/boringssl-with-bazel/src/crypto/mem.c +29 -15
  480. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +7 -0
  481. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -5
  482. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +0 -29
  483. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +116 -363
  484. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +7 -45
  485. data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +4 -4
  486. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +8 -0
  487. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +4 -4
  488. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -67
  489. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +13 -6
  490. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +10 -0
  491. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +41 -0
  492. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +4 -1
  493. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +28 -9
  494. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +25 -0
  495. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +35 -13
  496. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +0 -154
  497. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +20 -0
  498. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +28 -6
  499. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +5 -0
  500. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +74 -35
  501. data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +16 -4
  502. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +52 -0
  503. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +22 -22
  504. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +2 -2
  505. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +69 -0
  506. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +72 -23
  507. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +2 -3
  508. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +1 -10
  509. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +800 -715
  510. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +3 -3
  511. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +9 -2
  512. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +2 -2
  513. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +9 -0
  514. data/third_party/boringssl-with-bazel/src/ssl/internal.h +21 -14
  515. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +7 -7
  516. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +3 -6
  517. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +38 -0
  518. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +4 -24
  519. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +5 -5
  520. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +45 -24
  521. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +34 -9
  522. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +31 -21
  523. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +17 -9
  524. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +5 -3
  525. data/third_party/re2/re2/bitmap256.h +117 -0
  526. data/third_party/re2/re2/bitstate.cc +385 -0
  527. data/third_party/re2/re2/compile.cc +1279 -0
  528. data/third_party/re2/re2/dfa.cc +2130 -0
  529. data/third_party/re2/re2/filtered_re2.cc +121 -0
  530. data/third_party/re2/re2/filtered_re2.h +109 -0
  531. data/third_party/re2/re2/mimics_pcre.cc +197 -0
  532. data/third_party/re2/re2/nfa.cc +713 -0
  533. data/third_party/re2/re2/onepass.cc +623 -0
  534. data/third_party/re2/re2/parse.cc +2464 -0
  535. data/third_party/re2/re2/perl_groups.cc +119 -0
  536. data/third_party/re2/re2/pod_array.h +55 -0
  537. data/third_party/re2/re2/prefilter.cc +710 -0
  538. data/third_party/re2/re2/prefilter.h +108 -0
  539. data/third_party/re2/re2/prefilter_tree.cc +407 -0
  540. data/third_party/re2/re2/prefilter_tree.h +139 -0
  541. data/third_party/re2/re2/prog.cc +988 -0
  542. data/third_party/re2/re2/prog.h +436 -0
  543. data/third_party/re2/re2/re2.cc +1362 -0
  544. data/third_party/re2/re2/re2.h +1002 -0
  545. data/third_party/re2/re2/regexp.cc +980 -0
  546. data/third_party/re2/re2/regexp.h +659 -0
  547. data/third_party/re2/re2/set.cc +154 -0
  548. data/third_party/re2/re2/set.h +80 -0
  549. data/third_party/re2/re2/simplify.cc +657 -0
  550. data/third_party/re2/re2/sparse_array.h +392 -0
  551. data/third_party/re2/re2/sparse_set.h +264 -0
  552. data/third_party/re2/re2/stringpiece.cc +65 -0
  553. data/third_party/re2/re2/stringpiece.h +210 -0
  554. data/third_party/re2/re2/tostring.cc +351 -0
  555. data/third_party/re2/re2/unicode_casefold.cc +582 -0
  556. data/third_party/re2/re2/unicode_casefold.h +78 -0
  557. data/third_party/re2/re2/unicode_groups.cc +6269 -0
  558. data/third_party/re2/re2/unicode_groups.h +67 -0
  559. data/third_party/re2/re2/walker-inl.h +246 -0
  560. data/third_party/re2/util/benchmark.h +156 -0
  561. data/third_party/re2/util/flags.h +26 -0
  562. data/third_party/re2/util/logging.h +109 -0
  563. data/third_party/re2/util/malloc_counter.h +19 -0
  564. data/third_party/re2/util/mix.h +41 -0
  565. data/third_party/re2/util/mutex.h +148 -0
  566. data/third_party/re2/util/pcre.cc +1025 -0
  567. data/third_party/re2/util/pcre.h +681 -0
  568. data/third_party/re2/util/rune.cc +260 -0
  569. data/third_party/re2/util/strutil.cc +149 -0
  570. data/third_party/re2/util/strutil.h +21 -0
  571. data/third_party/re2/util/test.h +50 -0
  572. data/third_party/re2/util/utf.h +44 -0
  573. data/third_party/re2/util/util.h +42 -0
  574. data/third_party/upb/upb/decode.c +517 -505
  575. data/third_party/upb/upb/encode.c +165 -123
  576. data/third_party/upb/upb/msg.c +130 -64
  577. data/third_party/upb/upb/msg.h +418 -14
  578. data/third_party/upb/upb/port_def.inc +35 -6
  579. data/third_party/upb/upb/port_undef.inc +8 -1
  580. data/third_party/upb/upb/table.c +53 -86
  581. data/third_party/upb/upb/table.int.h +11 -52
  582. data/third_party/upb/upb/upb.c +151 -125
  583. data/third_party/upb/upb/upb.h +91 -147
  584. data/third_party/upb/upb/upb.hpp +88 -0
  585. metadata +308 -148
  586. data/src/core/ext/filters/client_channel/xds/xds_api.cc +0 -1906
  587. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +0 -21
  588. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -35
  589. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +0 -114
  590. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +0 -418
  591. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +0 -72
  592. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +0 -197
  593. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +0 -105
  594. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +0 -378
  595. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +0 -53
  596. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +0 -403
  597. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +0 -1447
  598. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +0 -74
  599. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +0 -218
  600. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +0 -69
  601. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +0 -305
  602. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +0 -112
  603. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +0 -328
  604. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +0 -78
  605. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +0 -313
  606. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +0 -897
  607. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +0 -96
  608. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +0 -322
  609. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +0 -34
  610. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +0 -72
  611. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +0 -197
  612. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +0 -642
  613. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +0 -172
  614. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +0 -673
  615. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +0 -80
  616. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +0 -152
  617. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +0 -518
  618. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +0 -89
  619. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +0 -129
  620. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +0 -392
  621. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +0 -53
  622. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +0 -92
  623. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +0 -240
  624. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +0 -18
  625. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -33
  626. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +0 -91
  627. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +0 -266
  628. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +0 -112
  629. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +0 -324
  630. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +0 -53
  631. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +0 -109
  632. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +0 -399
  633. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +0 -18
  634. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -33
  635. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +0 -145
  636. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +0 -527
  637. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +0 -43
  638. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +0 -112
  639. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +0 -53
  640. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +0 -63
  641. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +0 -199
  642. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +0 -18
  643. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -33
  644. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +0 -815
  645. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +0 -3032
  646. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +0 -59
  647. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +0 -134
  648. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +0 -53
  649. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +0 -228
  650. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +0 -725
  651. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +0 -316
  652. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +0 -1132
  653. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +0 -65
  654. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +0 -51
  655. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +0 -125
  656. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +0 -50
  657. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +0 -54
  658. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +0 -134
  659. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +0 -63
  660. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +0 -144
  661. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +0 -53
  662. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +0 -133
  663. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +0 -88
  664. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +0 -258
  665. data/src/core/ext/upb-generated/envoy/type/percent.upb.h +0 -87
  666. data/src/core/ext/upb-generated/envoy/type/range.upb.h +0 -112
  667. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +0 -62
  668. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +0 -89
  669. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +0 -249
  670. data/src/core/lib/security/transport/target_authority_table.cc +0 -75
  671. data/src/core/lib/security/transport/target_authority_table.h +0 -40
  672. data/src/core/lib/slice/slice_hash_table.h +0 -199
  673. data/src/core/lib/slice/slice_weak_hash_table.h +0 -102
  674. data/third_party/upb/upb/generated_util.h +0 -105
@@ -39,6 +39,7 @@
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
44
  struct async_connect {
44
45
  grpc_closure* on_done;
@@ -46,12 +47,13 @@ struct async_connect {
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
55
  };
56
+
55
57
  static void async_connect_unlock_and_cleanup(async_connect* ac,
56
58
  grpc_winsocket* socket) {
57
59
  int done = (--ac->refs == 0);
@@ -59,8 +61,7 @@ static void async_connect_unlock_and_cleanup(async_connect* ac,
59
61
  if (done) {
60
62
  grpc_channel_args_destroy(ac->channel_args);
61
63
  gpr_mu_destroy(&ac->mu);
62
- gpr_free(ac->addr_name);
63
- gpr_free(ac);
64
+ delete ac;
64
65
  }
65
66
  if (socket != NULL) grpc_winsocket_destroy(socket);
66
67
  }
@@ -105,7 +106,7 @@ static void on_connect(void* acp, grpc_error* error) {
105
106
  error = GRPC_WSA_ERROR(WSAGetLastError(), "ConnectEx");
106
107
  closesocket(socket->socket);
107
108
  } else {
108
- *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());
109
110
  socket = NULL;
110
111
  }
111
112
  } else {
@@ -131,13 +132,13 @@ static void tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
131
132
  int status;
132
133
  grpc_resolved_address addr6_v4mapped;
133
134
  grpc_resolved_address local_address;
134
- async_connect* ac;
135
135
  grpc_winsocket* socket = NULL;
136
136
  LPFN_CONNECTEX ConnectEx;
137
137
  GUID guid = WSAID_CONNECTEX;
138
138
  DWORD ioctl_num_bytes;
139
139
  grpc_winsocket_callback_info* info;
140
140
  grpc_error* error = GRPC_ERROR_NONE;
141
+ async_connect* ac = NULL;
141
142
 
142
143
  *endpoint = NULL;
143
144
 
@@ -194,7 +195,7 @@ static void tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
194
195
  }
195
196
  }
196
197
 
197
- ac = (async_connect*)gpr_malloc(sizeof(async_connect));
198
+ ac = new async_connect();
198
199
  ac->on_done = on_done;
199
200
  ac->socket = socket;
200
201
  gpr_mu_init(&ac->mu);
@@ -211,13 +212,12 @@ static void tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
211
212
 
212
213
  failure:
213
214
  GPR_ASSERT(error != GRPC_ERROR_NONE);
214
- char* target_uri = grpc_sockaddr_to_uri(addr);
215
+ std::string target_uri = grpc_sockaddr_to_uri(addr);
215
216
  grpc_error* final_error =
216
217
  grpc_error_set_str(GRPC_ERROR_CREATE_REFERENCING_FROM_STATIC_STRING(
217
218
  "Failed to connect", &error, 1),
218
219
  GRPC_ERROR_STR_TARGET_ADDRESS,
219
- grpc_slice_from_copied_string(
220
- target_uri == nullptr ? "NULL" : target_uri));
220
+ grpc_slice_from_cpp_string(std::move(target_uri)));
221
221
  GRPC_ERROR_UNREF(error);
222
222
  if (socket != NULL) {
223
223
  grpc_winsocket_destroy(socket);
@@ -32,6 +32,7 @@
32
32
  #include "src/core/lib/iomgr/error.h"
33
33
  #include "src/core/lib/iomgr/iomgr_custom.h"
34
34
  #include "src/core/lib/iomgr/resource_quota.h"
35
+ #include "src/core/lib/iomgr/sockaddr_utils.h"
35
36
  #include "src/core/lib/iomgr/tcp_client.h"
36
37
  #include "src/core/lib/iomgr/tcp_custom.h"
37
38
  #include "src/core/lib/iomgr/tcp_server.h"
@@ -57,24 +58,24 @@ struct custom_tcp_endpoint {
57
58
  gpr_refcount refcount;
58
59
  grpc_custom_socket* socket;
59
60
 
60
- grpc_closure* read_cb;
61
- grpc_closure* write_cb;
61
+ grpc_closure* read_cb = nullptr;
62
+ grpc_closure* write_cb = nullptr;
62
63
 
63
- grpc_slice_buffer* read_slices;
64
- grpc_slice_buffer* write_slices;
64
+ grpc_slice_buffer* read_slices = nullptr;
65
+ grpc_slice_buffer* write_slices = nullptr;
65
66
 
66
67
  grpc_resource_user* resource_user;
67
68
  grpc_resource_user_slice_allocator slice_allocator;
68
69
 
69
70
  bool shutting_down;
70
71
 
71
- char* peer_string;
72
+ std::string peer_string;
73
+ std::string local_address;
72
74
  };
73
75
  static void tcp_free(grpc_custom_socket* s) {
74
76
  custom_tcp_endpoint* tcp = (custom_tcp_endpoint*)s->endpoint;
75
77
  grpc_resource_user_unref(tcp->resource_user);
76
- gpr_free(tcp->peer_string);
77
- gpr_free(tcp);
78
+ delete tcp;
78
79
  s->refs--;
79
80
  if (s->refs == 0) {
80
81
  grpc_custom_socket_vtable->destroy(s);
@@ -132,7 +133,8 @@ static void call_read_cb(custom_tcp_endpoint* tcp, grpc_error* error) {
132
133
  for (i = 0; i < tcp->read_slices->count; i++) {
133
134
  char* dump = grpc_dump_slice(tcp->read_slices->slices[i],
134
135
  GPR_DUMP_HEX | GPR_DUMP_ASCII);
135
- gpr_log(GPR_INFO, "READ %p (peer=%s): %s", tcp, tcp->peer_string, dump);
136
+ gpr_log(GPR_INFO, "READ %p (peer=%s): %s", tcp, tcp->peer_string.c_str(),
137
+ dump);
136
138
  gpr_free(dump);
137
139
  }
138
140
  }
@@ -233,8 +235,8 @@ static void endpoint_write(grpc_endpoint* ep, grpc_slice_buffer* write_slices,
233
235
  for (j = 0; j < write_slices->count; j++) {
234
236
  char* data = grpc_dump_slice(write_slices->slices[j],
235
237
  GPR_DUMP_HEX | GPR_DUMP_ASCII);
236
- gpr_log(GPR_INFO, "WRITE %p (peer=%s): %s", tcp->socket, tcp->peer_string,
237
- data);
238
+ gpr_log(GPR_INFO, "WRITE %p (peer=%s): %s", tcp->socket,
239
+ tcp->peer_string.c_str(), data);
238
240
  gpr_free(data);
239
241
  }
240
242
  }
@@ -317,9 +319,14 @@ static void endpoint_destroy(grpc_endpoint* ep) {
317
319
  grpc_custom_socket_vtable->close(tcp->socket, custom_close_callback);
318
320
  }
319
321
 
320
- static char* endpoint_get_peer(grpc_endpoint* ep) {
322
+ static absl::string_view endpoint_get_peer(grpc_endpoint* ep) {
321
323
  custom_tcp_endpoint* tcp = (custom_tcp_endpoint*)ep;
322
- return gpr_strdup(tcp->peer_string);
324
+ return tcp->peer_string;
325
+ }
326
+
327
+ static absl::string_view endpoint_get_local_address(grpc_endpoint* ep) {
328
+ custom_tcp_endpoint* tcp = (custom_tcp_endpoint*)ep;
329
+ return tcp->local_address;
323
330
  }
324
331
 
325
332
  static grpc_resource_user* endpoint_get_resource_user(grpc_endpoint* ep) {
@@ -340,27 +347,36 @@ static grpc_endpoint_vtable vtable = {endpoint_read,
340
347
  endpoint_destroy,
341
348
  endpoint_get_resource_user,
342
349
  endpoint_get_peer,
350
+ endpoint_get_local_address,
343
351
  endpoint_get_fd,
344
352
  endpoint_can_track_err};
345
353
 
346
354
  grpc_endpoint* custom_tcp_endpoint_create(grpc_custom_socket* socket,
347
355
  grpc_resource_quota* resource_quota,
348
- char* peer_string) {
349
- custom_tcp_endpoint* tcp =
350
- (custom_tcp_endpoint*)gpr_malloc(sizeof(custom_tcp_endpoint));
356
+ const char* peer_string) {
357
+ custom_tcp_endpoint* tcp = new custom_tcp_endpoint;
351
358
  grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
352
359
  grpc_core::ExecCtx exec_ctx;
353
360
 
354
361
  if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
355
362
  gpr_log(GPR_INFO, "Creating TCP endpoint %p", socket);
356
363
  }
357
- memset(tcp, 0, sizeof(custom_tcp_endpoint));
358
364
  socket->refs++;
359
365
  socket->endpoint = (grpc_endpoint*)tcp;
360
366
  tcp->socket = socket;
361
367
  tcp->base.vtable = &vtable;
362
368
  gpr_ref_init(&tcp->refcount, 1);
363
- tcp->peer_string = gpr_strdup(peer_string);
369
+ tcp->peer_string = peer_string;
370
+ grpc_resolved_address resolved_local_addr;
371
+ resolved_local_addr.len = sizeof(resolved_local_addr.addr);
372
+ if (grpc_custom_socket_vtable->getsockname(
373
+ socket, reinterpret_cast<sockaddr*>(resolved_local_addr.addr),
374
+ reinterpret_cast<int*>(&resolved_local_addr.len)) !=
375
+ GRPC_ERROR_NONE) {
376
+ tcp->local_address = "";
377
+ } else {
378
+ tcp->local_address = grpc_sockaddr_to_uri(&resolved_local_addr);
379
+ }
364
380
  tcp->shutting_down = false;
365
381
  tcp->resource_user = grpc_resource_user_create(resource_quota, peer_string);
366
382
  grpc_resource_user_slice_allocator_init(
@@ -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 */
@@ -54,6 +54,7 @@
54
54
  #include "src/core/lib/iomgr/buffer_list.h"
55
55
  #include "src/core/lib/iomgr/ev_posix.h"
56
56
  #include "src/core/lib/iomgr/executor.h"
57
+ #include "src/core/lib/iomgr/sockaddr_utils.h"
57
58
  #include "src/core/lib/iomgr/socket_utils_posix.h"
58
59
  #include "src/core/lib/profiling/timers.h"
59
60
  #include "src/core/lib/slice/slice_internal.h"
@@ -351,6 +352,8 @@ using grpc_core::TcpZerocopySendRecord;
351
352
 
352
353
  namespace {
353
354
  struct grpc_tcp {
355
+ grpc_tcp(int max_sends, size_t send_bytes_threshold)
356
+ : tcp_zerocopy_send_ctx(max_sends, send_bytes_threshold) {}
354
357
  grpc_endpoint base;
355
358
  grpc_fd* em_fd;
356
359
  int fd;
@@ -385,7 +388,8 @@ struct grpc_tcp {
385
388
  grpc_closure write_done_closure;
386
389
  grpc_closure error_closure;
387
390
 
388
- char* peer_string;
391
+ std::string peer_string;
392
+ std::string local_address;
389
393
 
390
394
  grpc_resource_user* resource_user;
391
395
  grpc_resource_user_slice_allocator slice_allocator;
@@ -605,7 +609,7 @@ static grpc_error* tcp_annotate_error(grpc_error* src_error, grpc_tcp* tcp) {
605
609
  * choose to retry. */
606
610
  GRPC_ERROR_INT_GRPC_STATUS, GRPC_STATUS_UNAVAILABLE),
607
611
  GRPC_ERROR_STR_TARGET_ADDRESS,
608
- grpc_slice_from_copied_string(tcp->peer_string));
612
+ grpc_slice_from_copied_string(tcp->peer_string.c_str()));
609
613
  }
610
614
 
611
615
  static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error* error);
@@ -623,7 +627,6 @@ static void tcp_free(grpc_tcp* tcp) {
623
627
  "tcp_unref_orphan");
624
628
  grpc_slice_buffer_destroy_internal(&tcp->last_read_buffer);
625
629
  grpc_resource_user_unref(tcp->resource_user);
626
- gpr_free(tcp->peer_string);
627
630
  /* The lock is not really necessary here, since all refs have been released */
628
631
  gpr_mu_lock(&tcp->tb_mu);
629
632
  grpc_core::TracedBuffer::Shutdown(
@@ -632,8 +635,7 @@ static void tcp_free(grpc_tcp* tcp) {
632
635
  gpr_mu_unlock(&tcp->tb_mu);
633
636
  tcp->outgoing_buffer_arg = nullptr;
634
637
  gpr_mu_destroy(&tcp->tb_mu);
635
- tcp->tcp_zerocopy_send_ctx.~TcpZerocopySendCtx();
636
- gpr_free(tcp);
638
+ delete tcp;
637
639
  }
638
640
 
639
641
  #ifndef NDEBUG
@@ -680,7 +682,8 @@ static void call_read_cb(grpc_tcp* tcp, grpc_error* error) {
680
682
  gpr_log(GPR_INFO, "TCP:%p call_cb %p %p:%p", tcp, cb, cb->cb, cb->cb_arg);
681
683
  size_t i;
682
684
  const char* str = grpc_error_string(error);
683
- gpr_log(GPR_INFO, "READ %p (peer=%s) error=%s", tcp, tcp->peer_string, str);
685
+ gpr_log(GPR_INFO, "READ %p (peer=%s) error=%s", tcp,
686
+ tcp->peer_string.c_str(), str);
684
687
 
685
688
  if (gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
686
689
  for (i = 0; i < tcp->incoming_buffer->count; i++) {
@@ -1563,7 +1566,7 @@ static void tcp_write(grpc_endpoint* ep, grpc_slice_buffer* buf,
1563
1566
  size_t i;
1564
1567
 
1565
1568
  for (i = 0; i < buf->count; i++) {
1566
- gpr_log(GPR_INFO, "WRITE %p (peer=%s)", tcp, tcp->peer_string);
1569
+ gpr_log(GPR_INFO, "WRITE %p (peer=%s)", tcp, tcp->peer_string.c_str());
1567
1570
  if (gpr_should_log(GPR_LOG_SEVERITY_DEBUG)) {
1568
1571
  char* data =
1569
1572
  grpc_dump_slice(buf->slices[i], GPR_DUMP_HEX | GPR_DUMP_ASCII);
@@ -1637,9 +1640,14 @@ static void tcp_delete_from_pollset_set(grpc_endpoint* ep,
1637
1640
  grpc_pollset_set_del_fd(pollset_set, tcp->em_fd);
1638
1641
  }
1639
1642
 
1640
- static char* tcp_get_peer(grpc_endpoint* ep) {
1643
+ static absl::string_view tcp_get_peer(grpc_endpoint* ep) {
1641
1644
  grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
1642
- return gpr_strdup(tcp->peer_string);
1645
+ return tcp->peer_string;
1646
+ }
1647
+
1648
+ static absl::string_view tcp_get_local_address(grpc_endpoint* ep) {
1649
+ grpc_tcp* tcp = reinterpret_cast<grpc_tcp*>(ep);
1650
+ return tcp->local_address;
1643
1651
  }
1644
1652
 
1645
1653
  static int tcp_get_fd(grpc_endpoint* ep) {
@@ -1677,6 +1685,7 @@ static const grpc_endpoint_vtable vtable = {tcp_read,
1677
1685
  tcp_destroy,
1678
1686
  tcp_get_resource_user,
1679
1687
  tcp_get_peer,
1688
+ tcp_get_local_address,
1680
1689
  tcp_get_fd,
1681
1690
  tcp_can_track_err};
1682
1691
 
@@ -1745,10 +1754,21 @@ grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
1745
1754
  tcp_read_chunk_size = GPR_CLAMP(tcp_read_chunk_size, tcp_min_read_chunk_size,
1746
1755
  tcp_max_read_chunk_size);
1747
1756
 
1748
- grpc_tcp* tcp = static_cast<grpc_tcp*>(gpr_malloc(sizeof(grpc_tcp)));
1757
+ grpc_tcp* tcp = new grpc_tcp(tcp_tx_zerocopy_max_simult_sends,
1758
+ tcp_tx_zerocopy_send_bytes_thresh);
1749
1759
  tcp->base.vtable = &vtable;
1750
- tcp->peer_string = gpr_strdup(peer_string);
1760
+ tcp->peer_string = peer_string;
1751
1761
  tcp->fd = grpc_fd_wrapped_fd(em_fd);
1762
+ grpc_resolved_address resolved_local_addr;
1763
+ memset(&resolved_local_addr, 0, sizeof(resolved_local_addr));
1764
+ resolved_local_addr.len = sizeof(resolved_local_addr.addr);
1765
+ if (getsockname(tcp->fd,
1766
+ reinterpret_cast<sockaddr*>(resolved_local_addr.addr),
1767
+ &resolved_local_addr.len) < 0) {
1768
+ tcp->local_address = "";
1769
+ } else {
1770
+ tcp->local_address = grpc_sockaddr_to_uri(&resolved_local_addr);
1771
+ }
1752
1772
  tcp->read_cb = nullptr;
1753
1773
  tcp->write_cb = nullptr;
1754
1774
  tcp->current_zerocopy_send = nullptr;
@@ -1765,8 +1785,6 @@ grpc_endpoint* grpc_tcp_create(grpc_fd* em_fd,
1765
1785
  tcp->socket_ts_enabled = false;
1766
1786
  tcp->ts_capable = true;
1767
1787
  tcp->outgoing_buffer_arg = nullptr;
1768
- new (&tcp->tcp_zerocopy_send_ctx) TcpZerocopySendCtx(
1769
- tcp_tx_zerocopy_max_simult_sends, tcp_tx_zerocopy_send_bytes_thresh);
1770
1788
  if (tcp_tx_zerocopy_enabled && !tcp->tcp_zerocopy_send_ctx.memory_limited()) {
1771
1789
  #ifdef GRPC_LINUX_ERRQUEUE
1772
1790
  const int enable = 1;
@@ -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
@@ -216,10 +216,9 @@ static void finish_accept(grpc_tcp_listener* sp, grpc_custom_socket* socket) {
216
216
  (grpc_tcp_server_acceptor*)gpr_malloc(sizeof(*acceptor));
217
217
  grpc_endpoint* ep = nullptr;
218
218
  grpc_resolved_address peer_name;
219
- char* peer_name_string;
219
+ std::string peer_name_string;
220
220
  grpc_error* err;
221
221
 
222
- peer_name_string = nullptr;
223
222
  memset(&peer_name, 0, sizeof(grpc_resolved_address));
224
223
  peer_name.len = GRPC_MAX_SOCKADDR_SIZE;
225
224
  err = grpc_custom_socket_vtable->getpeername(
@@ -231,21 +230,16 @@ static void finish_accept(grpc_tcp_listener* sp, grpc_custom_socket* socket) {
231
230
  GRPC_ERROR_UNREF(err);
232
231
  }
233
232
  if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
234
- if (peer_name_string) {
235
- gpr_log(GPR_INFO, "SERVER_CONNECT: %p accepted connection: %s",
236
- sp->server, peer_name_string);
237
- } else {
238
- gpr_log(GPR_INFO, "SERVER_CONNECT: %p accepted connection", sp->server);
239
- }
233
+ gpr_log(GPR_INFO, "SERVER_CONNECT: %p accepted connection: %s", sp->server,
234
+ peer_name_string.c_str());
240
235
  }
241
236
  ep = custom_tcp_endpoint_create(socket, sp->server->resource_quota,
242
- peer_name_string);
237
+ peer_name_string.c_str());
243
238
  acceptor->from_server = sp->server;
244
239
  acceptor->port_index = sp->port_index;
245
240
  acceptor->fd_index = 0;
246
241
  acceptor->external_connection = false;
247
242
  sp->server->on_accept_cb(sp->server->on_accept_cb_arg, ep, nullptr, acceptor);
248
- gpr_free(peer_name_string);
249
243
  }
250
244
 
251
245
  static void custom_accept_callback(grpc_custom_socket* socket,
@@ -423,12 +417,10 @@ static grpc_error* tcp_server_add_port(grpc_tcp_server* s,
423
417
  return error;
424
418
  }
425
419
 
426
- static void tcp_server_start(grpc_tcp_server* server, grpc_pollset** pollsets,
427
- size_t pollset_count,
420
+ static void tcp_server_start(grpc_tcp_server* server,
421
+ const std::vector<grpc_pollset*>* /*pollsets*/,
428
422
  grpc_tcp_server_cb on_accept_cb, void* cb_arg) {
429
423
  grpc_tcp_listener* sp;
430
- (void)pollsets;
431
- (void)pollset_count;
432
424
  GRPC_CUSTOM_IOMGR_ASSERT_SAME_THREAD();
433
425
  if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
434
426
  gpr_log(GPR_INFO, "SERVER_START %p", server);
@@ -39,9 +39,11 @@
39
39
 
40
40
  #include <string>
41
41
 
42
+ #include "absl/strings/str_cat.h"
43
+ #include "absl/strings/str_format.h"
44
+
42
45
  #include <grpc/support/alloc.h>
43
46
  #include <grpc/support/log.h>
44
- #include <grpc/support/string_util.h>
45
47
  #include <grpc/support/sync.h>
46
48
  #include <grpc/support/time.h>
47
49
 
@@ -196,8 +198,6 @@ static void on_read(void* arg, grpc_error* err) {
196
198
  /* loop until accept4 returns EAGAIN, and then re-arm notification */
197
199
  for (;;) {
198
200
  grpc_resolved_address addr;
199
- char* addr_str;
200
- char* name;
201
201
  memset(&addr, 0, sizeof(addr));
202
202
  addr.len = static_cast<socklen_t>(sizeof(struct sockaddr_storage));
203
203
  /* Note: If we ever decide to return this address to the user, remember to
@@ -238,19 +238,19 @@ static void on_read(void* arg, grpc_error* err) {
238
238
 
239
239
  grpc_set_socket_no_sigpipe_if_possible(fd);
240
240
 
241
- addr_str = grpc_sockaddr_to_uri(&addr);
242
- gpr_asprintf(&name, "tcp-server-connection:%s", addr_str);
243
-
241
+ std::string addr_str = grpc_sockaddr_to_uri(&addr);
244
242
  if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
245
- 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());
246
245
  }
247
246
 
248
- 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);
249
249
 
250
- read_notifier_pollset =
251
- sp->server->pollsets[static_cast<size_t>(gpr_atm_no_barrier_fetch_add(
252
- &sp->server->next_pollset_to_assign, 1)) %
253
- 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()];
254
254
 
255
255
  grpc_pollset_add_fd(read_notifier_pollset, fdobj);
256
256
 
@@ -264,11 +264,8 @@ static void on_read(void* arg, grpc_error* err) {
264
264
 
265
265
  sp->server->on_accept_cb(
266
266
  sp->server->on_accept_cb_arg,
267
- grpc_tcp_create(fdobj, sp->server->channel_args, addr_str),
267
+ grpc_tcp_create(fdobj, sp->server->channel_args, addr_str.c_str()),
268
268
  read_notifier_pollset, acceptor);
269
-
270
- gpr_free(name);
271
- gpr_free(addr_str);
272
269
  }
273
270
 
274
271
  GPR_UNREACHABLE_CODE(return );
@@ -352,7 +349,6 @@ static grpc_error* add_wildcard_addrs_to_server(grpc_tcp_server* s,
352
349
  static grpc_error* clone_port(grpc_tcp_listener* listener, unsigned count) {
353
350
  grpc_tcp_listener* sp = nullptr;
354
351
  std::string addr_str;
355
- char* name;
356
352
  grpc_error* err;
357
353
 
358
354
  for (grpc_tcp_listener* l = listener->next; l && l->is_sibling; l = l->next) {
@@ -371,7 +367,6 @@ static grpc_error* clone_port(grpc_tcp_listener* listener, unsigned count) {
371
367
  if (err != GRPC_ERROR_NONE) return err;
372
368
  listener->server->nports++;
373
369
  addr_str = grpc_sockaddr_to_string(&listener->addr, true);
374
- gpr_asprintf(&name, "tcp-server-listener:%s/clone-%d", addr_str.c_str(), i);
375
370
  sp = static_cast<grpc_tcp_listener*>(gpr_malloc(sizeof(grpc_tcp_listener)));
376
371
  sp->next = listener->next;
377
372
  listener->next = sp;
@@ -382,7 +377,11 @@ static grpc_error* clone_port(grpc_tcp_listener* listener, unsigned count) {
382
377
  listener->sibling = sp;
383
378
  sp->server = listener->server;
384
379
  sp->fd = fd;
385
- 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);
386
385
  memcpy(&sp->addr, &listener->addr, sizeof(grpc_resolved_address));
387
386
  sp->port = port;
388
387
  sp->port_index = listener->port_index;
@@ -391,7 +390,6 @@ static grpc_error* clone_port(grpc_tcp_listener* listener, unsigned count) {
391
390
  while (listener->server->tail->next != nullptr) {
392
391
  listener->server->tail = listener->server->tail->next;
393
392
  }
394
- gpr_free(name);
395
393
  }
396
394
 
397
395
  return GRPC_ERROR_NONE;
@@ -489,8 +487,8 @@ static int tcp_server_port_fd(grpc_tcp_server* s, unsigned port_index,
489
487
  return -1;
490
488
  }
491
489
 
492
- static void tcp_server_start(grpc_tcp_server* s, grpc_pollset** pollsets,
493
- size_t pollset_count,
490
+ static void tcp_server_start(grpc_tcp_server* s,
491
+ const std::vector<grpc_pollset*>* pollsets,
494
492
  grpc_tcp_server_cb on_accept_cb,
495
493
  void* on_accept_cb_arg) {
496
494
  size_t i;
@@ -502,15 +500,14 @@ static void tcp_server_start(grpc_tcp_server* s, grpc_pollset** pollsets,
502
500
  s->on_accept_cb = on_accept_cb;
503
501
  s->on_accept_cb_arg = on_accept_cb_arg;
504
502
  s->pollsets = pollsets;
505
- s->pollset_count = pollset_count;
506
503
  sp = s->head;
507
504
  while (sp != nullptr) {
508
505
  if (s->so_reuseport && !grpc_is_unix_socket(&sp->addr) &&
509
- pollset_count > 1) {
506
+ pollsets->size() > 1) {
510
507
  GPR_ASSERT(GRPC_LOG_IF_ERROR(
511
- "clone_port", clone_port(sp, (unsigned)(pollset_count - 1))));
512
- for (i = 0; i < pollset_count; i++) {
513
- 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);
514
511
  GRPC_CLOSURE_INIT(&sp->read_closure, on_read, sp,
515
512
  grpc_schedule_on_exec_ctx);
516
513
  grpc_fd_notify_on_read(sp->emfd, &sp->read_closure);
@@ -518,8 +515,8 @@ static void tcp_server_start(grpc_tcp_server* s, grpc_pollset** pollsets,
518
515
  sp = sp->next;
519
516
  }
520
517
  } else {
521
- for (i = 0; i < pollset_count; i++) {
522
- 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);
523
520
  }
524
521
  GRPC_CLOSURE_INIT(&sp->read_closure, on_read, sp,
525
522
  grpc_schedule_on_exec_ctx);
@@ -577,8 +574,6 @@ class ExternalConnectionHandler : public grpc_core::TcpServerFdHandler {
577
574
  void Handle(int listener_fd, int fd, grpc_byte_buffer* buf) override {
578
575
  grpc_pollset* read_notifier_pollset;
579
576
  grpc_resolved_address addr;
580
- char* addr_str;
581
- char* name;
582
577
  memset(&addr, 0, sizeof(addr));
583
578
  addr.len = static_cast<socklen_t>(sizeof(struct sockaddr_storage));
584
579
  grpc_core::ExecCtx exec_ctx;
@@ -590,17 +585,17 @@ class ExternalConnectionHandler : public grpc_core::TcpServerFdHandler {
590
585
  return;
591
586
  }
592
587
  grpc_set_socket_no_sigpipe_if_possible(fd);
593
- addr_str = grpc_sockaddr_to_uri(&addr);
594
- gpr_asprintf(&name, "tcp-server-connection:%s", addr_str);
588
+ std::string addr_str = grpc_sockaddr_to_uri(&addr);
595
589
  if (grpc_tcp_trace.enabled()) {
596
590
  gpr_log(GPR_INFO, "SERVER_CONNECT: incoming external connection: %s",
597
- addr_str);
591
+ addr_str.c_str());
598
592
  }
599
- 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);
600
595
  read_notifier_pollset =
601
- s_->pollsets[static_cast<size_t>(gpr_atm_no_barrier_fetch_add(
602
- &s_->next_pollset_to_assign, 1)) %
603
- 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()];
604
599
  grpc_pollset_add_fd(read_notifier_pollset, fdobj);
605
600
  grpc_tcp_server_acceptor* acceptor =
606
601
  static_cast<grpc_tcp_server_acceptor*>(gpr_malloc(sizeof(*acceptor)));
@@ -611,10 +606,8 @@ class ExternalConnectionHandler : public grpc_core::TcpServerFdHandler {
611
606
  acceptor->listener_fd = listener_fd;
612
607
  acceptor->pending_data = buf;
613
608
  s_->on_accept_cb(s_->on_accept_cb_arg,
614
- grpc_tcp_create(fdobj, s_->channel_args, addr_str),
609
+ grpc_tcp_create(fdobj, s_->channel_args, addr_str.c_str()),
615
610
  read_notifier_pollset, acceptor);
616
- gpr_free(name);
617
- gpr_free(addr_str);
618
611
  }
619
612
 
620
613
  private: