grpc 1.30.0 → 1.31.1

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 (383) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +560 -619
  3. data/include/grpc/grpc_security.h +8 -0
  4. data/include/grpc/grpc_security_constants.h +3 -0
  5. data/include/grpc/impl/codegen/grpc_types.h +7 -5
  6. data/include/grpc/impl/codegen/port_platform.h +0 -32
  7. data/src/core/ext/filters/client_channel/backend_metric.cc +12 -9
  8. data/src/core/ext/filters/client_channel/client_channel.cc +406 -261
  9. data/src/core/ext/filters/client_channel/config_selector.cc +62 -0
  10. data/src/core/ext/filters/client_channel/config_selector.h +93 -0
  11. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -2
  12. data/src/core/ext/filters/client_channel/health/health_check_client.cc +2 -0
  13. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +6 -5
  14. data/src/core/ext/filters/client_channel/http_proxy.cc +6 -4
  15. data/src/core/ext/filters/client_channel/lb_policy.h +2 -0
  16. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +39 -23
  17. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +4 -6
  18. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +3 -4
  19. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +381 -72
  20. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -5
  21. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +5 -2
  22. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +6 -5
  23. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +8 -6
  24. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +9 -7
  25. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +7 -5
  26. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +33 -48
  27. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -2
  28. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +21 -18
  29. data/src/core/ext/filters/client_channel/resolver_registry.cc +13 -14
  30. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +6 -7
  31. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +33 -28
  32. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +39 -20
  33. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +142 -0
  34. data/src/core/ext/filters/client_channel/subchannel.cc +1 -1
  35. data/src/core/ext/filters/client_channel/xds/xds_api.cc +327 -123
  36. data/src/core/ext/filters/client_channel/xds/xds_api.h +72 -7
  37. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +12 -23
  38. data/src/core/ext/filters/client_channel/xds/xds_client.cc +112 -33
  39. data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +10 -10
  40. data/src/core/ext/filters/http/client/http_client_filter.cc +5 -5
  41. data/src/core/ext/filters/http/http_filters_plugin.cc +2 -1
  42. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +74 -33
  43. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +3 -1
  44. data/src/core/ext/filters/message_size/message_size_filter.cc +56 -80
  45. data/src/core/ext/filters/message_size/message_size_filter.h +6 -0
  46. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +383 -347
  47. data/src/core/ext/transport/chttp2/server/chttp2_server.h +6 -2
  48. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +1 -1
  49. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +7 -13
  50. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +7 -8
  51. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +19 -4
  52. data/src/core/ext/transport/chttp2/transport/flow_control.cc +22 -27
  53. data/src/core/ext/transport/chttp2/transport/flow_control.h +14 -16
  54. data/src/core/ext/transport/chttp2/transport/frame_data.cc +9 -12
  55. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +4 -6
  56. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -6
  57. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +12 -13
  58. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -7
  59. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +9 -12
  60. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +25 -29
  61. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +13 -17
  62. data/src/core/ext/transport/chttp2/transport/internal.h +13 -0
  63. data/src/core/ext/transport/chttp2/transport/parsing.cc +33 -43
  64. data/src/core/ext/transport/chttp2/transport/writing.cc +9 -14
  65. data/src/core/ext/transport/inproc/inproc_transport.cc +35 -15
  66. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +0 -1
  67. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +3 -4
  68. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -1
  69. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +80 -69
  70. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +24 -23
  71. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +66 -56
  72. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +1 -2
  73. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +2 -2
  74. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +317 -311
  75. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +42 -34
  76. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +7 -7
  77. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +79 -61
  78. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +55 -49
  79. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +9 -8
  80. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +1 -1
  81. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +163 -169
  82. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +51 -45
  83. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +4 -5
  84. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +107 -100
  85. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +137 -117
  86. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +9 -9
  87. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +105 -87
  88. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +12 -13
  89. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +1 -1
  90. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +95 -101
  91. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +1 -2
  92. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +1 -1
  93. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +49 -65
  94. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -1
  95. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +49 -42
  96. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +70 -62
  97. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +1 -2
  98. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +81 -65
  99. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -1
  100. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +1 -1
  101. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +91 -80
  102. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +9 -10
  103. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +1 -2
  104. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +36 -31
  105. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -1
  106. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +7 -7
  107. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +648 -696
  108. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +16 -15
  109. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +1 -2
  110. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +1 -1
  111. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +95 -88
  112. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +234 -199
  113. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +5 -5
  114. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +13 -13
  115. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +1 -2
  116. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +20 -18
  117. data/src/core/ext/upb-generated/envoy/type/http.upb.h +0 -1
  118. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +18 -17
  119. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +14 -14
  120. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +23 -23
  121. data/src/core/ext/upb-generated/envoy/type/percent.upb.h +8 -9
  122. data/src/core/ext/upb-generated/envoy/type/range.upb.h +15 -16
  123. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +7 -8
  124. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +36 -35
  125. data/src/core/ext/upb-generated/gogoproto/gogo.upb.h +0 -1
  126. data/src/core/ext/upb-generated/google/api/annotations.upb.h +0 -1
  127. data/src/core/ext/upb-generated/google/api/http.upb.h +29 -28
  128. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +5 -6
  129. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +3 -3
  130. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +412 -386
  131. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +5 -6
  132. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +1 -2
  133. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +1 -1
  134. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +33 -54
  135. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +5 -6
  136. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +27 -28
  137. data/src/core/ext/upb-generated/google/rpc/status.upb.h +8 -8
  138. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +1 -1
  139. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +32 -45
  140. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +4 -4
  141. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +157 -178
  142. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +14 -13
  143. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +6 -7
  144. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +59 -56
  145. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +11 -12
  146. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +0 -1
  147. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +5 -6
  148. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +6 -6
  149. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +41 -68
  150. data/src/core/ext/upb-generated/validate/validate.upb.h +536 -535
  151. data/src/core/lib/channel/channel_trace.cc +2 -6
  152. data/src/core/lib/channel/channelz.cc +5 -15
  153. data/src/core/lib/gpr/log_linux.cc +6 -8
  154. data/src/core/lib/gpr/log_posix.cc +6 -8
  155. data/src/core/lib/gpr/string.cc +10 -9
  156. data/src/core/lib/gpr/string.h +4 -2
  157. data/src/core/lib/gprpp/global_config_env.cc +8 -6
  158. data/src/core/lib/http/httpcli.cc +13 -10
  159. data/src/core/lib/http/httpcli_security_connector.cc +5 -5
  160. data/src/core/lib/iomgr/cfstream_handle.cc +1 -0
  161. data/src/core/lib/iomgr/endpoint_pair_posix.cc +10 -10
  162. data/src/core/lib/iomgr/error_cfstream.cc +9 -8
  163. data/src/core/lib/iomgr/ev_epoll1_linux.cc +5 -6
  164. data/src/core/lib/iomgr/ev_epollex_linux.cc +15 -21
  165. data/src/core/lib/iomgr/ev_poll_posix.cc +6 -5
  166. data/src/core/lib/iomgr/ev_posix.cc +2 -0
  167. data/src/core/lib/iomgr/iomgr.cc +10 -0
  168. data/src/core/lib/iomgr/iomgr.h +10 -0
  169. data/src/core/lib/iomgr/is_epollexclusive_available.cc +14 -0
  170. data/src/core/lib/iomgr/port.h +1 -21
  171. data/src/core/lib/iomgr/resolve_address_custom.cc +13 -18
  172. data/src/core/lib/iomgr/resolve_address_windows.cc +8 -8
  173. data/src/core/lib/iomgr/resource_quota.cc +34 -31
  174. data/src/core/lib/iomgr/sockaddr_utils.cc +7 -5
  175. data/src/core/lib/iomgr/sockaddr_utils.h +1 -1
  176. data/src/core/lib/iomgr/socket_utils_common_posix.cc +95 -55
  177. data/src/core/lib/iomgr/socket_windows.cc +4 -5
  178. data/src/core/lib/iomgr/tcp_client_cfstream.cc +9 -11
  179. data/src/core/lib/iomgr/tcp_client_custom.cc +6 -9
  180. data/src/core/lib/iomgr/tcp_client_posix.cc +27 -36
  181. data/src/core/lib/iomgr/tcp_client_windows.cc +9 -9
  182. data/src/core/lib/iomgr/tcp_custom.cc +1 -1
  183. data/src/core/lib/iomgr/tcp_custom.h +1 -1
  184. data/src/core/lib/iomgr/tcp_server.cc +3 -4
  185. data/src/core/lib/iomgr/tcp_server.h +7 -5
  186. data/src/core/lib/iomgr/tcp_server_custom.cc +6 -14
  187. data/src/core/lib/iomgr/tcp_server_posix.cc +34 -41
  188. data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -4
  189. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -7
  190. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -9
  191. data/src/core/lib/iomgr/tcp_server_windows.cc +16 -16
  192. data/src/core/lib/iomgr/timer_generic.cc +13 -12
  193. data/src/core/lib/iomgr/udp_server.cc +24 -23
  194. data/src/core/lib/iomgr/udp_server.h +5 -2
  195. data/src/core/lib/iomgr/unix_sockets_posix.cc +9 -14
  196. data/src/core/lib/iomgr/unix_sockets_posix.h +3 -1
  197. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +5 -2
  198. data/src/core/lib/json/json_reader.cc +20 -21
  199. data/src/core/lib/security/credentials/credentials.h +5 -3
  200. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +8 -6
  201. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +12 -9
  202. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -4
  203. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +19 -28
  204. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -6
  205. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +20 -0
  206. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +10 -0
  207. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +10 -0
  208. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +10 -10
  209. data/src/core/lib/security/security_connector/security_connector.cc +2 -0
  210. data/src/core/lib/security/security_connector/security_connector.h +1 -1
  211. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +18 -11
  212. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +5 -0
  213. data/src/core/lib/security/security_connector/ssl_utils.cc +44 -23
  214. data/src/core/lib/security/security_connector/ssl_utils.h +6 -2
  215. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +27 -24
  216. data/src/core/lib/security/transport/auth_filters.h +0 -5
  217. data/src/core/lib/security/transport/client_auth_filter.cc +10 -9
  218. data/src/core/lib/security/util/json_util.cc +12 -13
  219. data/src/core/lib/slice/slice.cc +38 -1
  220. data/src/core/lib/slice/slice_internal.h +1 -0
  221. data/src/core/lib/surface/call.cc +40 -41
  222. data/src/core/lib/surface/completion_queue.cc +271 -14
  223. data/src/core/lib/surface/completion_queue.h +8 -0
  224. data/src/core/lib/surface/init.cc +2 -0
  225. data/src/core/lib/surface/server.cc +565 -632
  226. data/src/core/lib/surface/server.h +34 -12
  227. data/src/core/lib/surface/version.cc +2 -2
  228. data/src/core/lib/transport/transport.h +6 -0
  229. data/src/core/lib/uri/uri_parser.cc +8 -15
  230. data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -0
  231. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +23 -13
  232. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +2 -0
  233. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -0
  234. data/src/core/tsi/ssl_transport_security.cc +108 -11
  235. data/src/core/tsi/ssl_transport_security.h +14 -2
  236. data/src/core/tsi/transport_security_interface.h +5 -0
  237. data/src/ruby/bin/math_services_pb.rb +4 -4
  238. data/src/ruby/ext/grpc/extconf.rb +5 -2
  239. data/src/ruby/ext/grpc/rb_call.c +3 -2
  240. data/src/ruby/ext/grpc/rb_call.h +4 -0
  241. data/src/ruby/ext/grpc/rb_call_credentials.c +57 -12
  242. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
  243. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
  244. data/src/ruby/lib/grpc/generic/client_stub.rb +1 -1
  245. data/src/ruby/lib/grpc/generic/interceptors.rb +1 -1
  246. data/src/ruby/lib/grpc/version.rb +1 -1
  247. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +2 -2
  248. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +5 -0
  249. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +28 -12
  250. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_import2.proto +23 -0
  251. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +2 -0
  252. data/src/ruby/spec/pb/codegen/grpc/testing/same_package_service_name.proto +27 -0
  253. data/src/ruby/spec/pb/codegen/grpc/testing/same_ruby_package_service_name.proto +29 -0
  254. data/src/ruby/spec/pb/codegen/package_option_spec.rb +25 -1
  255. data/src/ruby/spec/support/services.rb +10 -4
  256. data/src/ruby/spec/user_agent_spec.rb +74 -0
  257. data/third_party/boringssl-with-bazel/err_data.c +89 -83
  258. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +3 -3
  259. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +3 -3
  260. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +1 -1
  261. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +3 -3
  262. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
  263. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +1 -1
  264. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -1
  265. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +1 -1
  266. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +1 -1
  267. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +1 -1
  268. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +1 -1
  269. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +1 -0
  270. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +12 -52
  271. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +0 -22
  272. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +143 -0
  273. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +17 -1
  274. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +11 -1
  275. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +2 -1
  276. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +13 -11
  277. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +24 -23
  278. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +20 -16
  279. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -2
  280. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +3 -3
  281. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +62 -0
  282. data/third_party/boringssl-with-bazel/src/crypto/mem.c +29 -15
  283. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +7 -0
  284. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -5
  285. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +0 -29
  286. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +116 -363
  287. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +7 -45
  288. data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +4 -4
  289. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +8 -0
  290. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +4 -4
  291. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -67
  292. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +13 -6
  293. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +10 -0
  294. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +41 -0
  295. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +4 -1
  296. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +28 -9
  297. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +25 -0
  298. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +35 -13
  299. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +0 -154
  300. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +28 -6
  301. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +5 -0
  302. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +74 -35
  303. data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +16 -4
  304. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +22 -22
  305. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +1 -1
  306. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +69 -0
  307. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +33 -16
  308. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +1 -10
  309. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +789 -715
  310. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +3 -3
  311. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +9 -2
  312. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +2 -2
  313. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +9 -0
  314. data/third_party/boringssl-with-bazel/src/ssl/internal.h +17 -14
  315. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +7 -7
  316. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +28 -0
  317. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +4 -24
  318. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +5 -5
  319. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +45 -24
  320. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +31 -21
  321. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +12 -9
  322. data/third_party/re2/re2/bitmap256.h +117 -0
  323. data/third_party/re2/re2/bitstate.cc +385 -0
  324. data/third_party/re2/re2/compile.cc +1279 -0
  325. data/third_party/re2/re2/dfa.cc +2130 -0
  326. data/third_party/re2/re2/filtered_re2.cc +121 -0
  327. data/third_party/re2/re2/filtered_re2.h +109 -0
  328. data/third_party/re2/re2/mimics_pcre.cc +197 -0
  329. data/third_party/re2/re2/nfa.cc +713 -0
  330. data/third_party/re2/re2/onepass.cc +623 -0
  331. data/third_party/re2/re2/parse.cc +2464 -0
  332. data/third_party/re2/re2/perl_groups.cc +119 -0
  333. data/third_party/re2/re2/pod_array.h +55 -0
  334. data/third_party/re2/re2/prefilter.cc +710 -0
  335. data/third_party/re2/re2/prefilter.h +108 -0
  336. data/third_party/re2/re2/prefilter_tree.cc +407 -0
  337. data/third_party/re2/re2/prefilter_tree.h +139 -0
  338. data/third_party/re2/re2/prog.cc +988 -0
  339. data/third_party/re2/re2/prog.h +436 -0
  340. data/third_party/re2/re2/re2.cc +1362 -0
  341. data/third_party/re2/re2/re2.h +1002 -0
  342. data/third_party/re2/re2/regexp.cc +980 -0
  343. data/third_party/re2/re2/regexp.h +659 -0
  344. data/third_party/re2/re2/set.cc +154 -0
  345. data/third_party/re2/re2/set.h +80 -0
  346. data/third_party/re2/re2/simplify.cc +657 -0
  347. data/third_party/re2/re2/sparse_array.h +392 -0
  348. data/third_party/re2/re2/sparse_set.h +264 -0
  349. data/third_party/re2/re2/stringpiece.cc +65 -0
  350. data/third_party/re2/re2/stringpiece.h +210 -0
  351. data/third_party/re2/re2/tostring.cc +351 -0
  352. data/third_party/re2/re2/unicode_casefold.cc +582 -0
  353. data/third_party/re2/re2/unicode_casefold.h +78 -0
  354. data/third_party/re2/re2/unicode_groups.cc +6269 -0
  355. data/third_party/re2/re2/unicode_groups.h +67 -0
  356. data/third_party/re2/re2/walker-inl.h +246 -0
  357. data/third_party/re2/util/benchmark.h +156 -0
  358. data/third_party/re2/util/flags.h +26 -0
  359. data/third_party/re2/util/logging.h +109 -0
  360. data/third_party/re2/util/malloc_counter.h +19 -0
  361. data/third_party/re2/util/mix.h +41 -0
  362. data/third_party/re2/util/mutex.h +148 -0
  363. data/third_party/re2/util/pcre.cc +1025 -0
  364. data/third_party/re2/util/pcre.h +681 -0
  365. data/third_party/re2/util/rune.cc +260 -0
  366. data/third_party/re2/util/strutil.cc +149 -0
  367. data/third_party/re2/util/strutil.h +21 -0
  368. data/third_party/re2/util/test.h +50 -0
  369. data/third_party/re2/util/utf.h +44 -0
  370. data/third_party/re2/util/util.h +42 -0
  371. data/third_party/upb/upb/decode.c +467 -504
  372. data/third_party/upb/upb/encode.c +163 -121
  373. data/third_party/upb/upb/msg.c +130 -64
  374. data/third_party/upb/upb/msg.h +418 -14
  375. data/third_party/upb/upb/port_def.inc +35 -6
  376. data/third_party/upb/upb/port_undef.inc +8 -1
  377. data/third_party/upb/upb/table.c +53 -75
  378. data/third_party/upb/upb/table.int.h +11 -43
  379. data/third_party/upb/upb/upb.c +148 -124
  380. data/third_party/upb/upb/upb.h +65 -147
  381. data/third_party/upb/upb/upb.hpp +86 -0
  382. metadata +90 -30
  383. 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);
@@ -345,7 +345,7 @@ static grpc_endpoint_vtable vtable = {endpoint_read,
345
345
 
346
346
  grpc_endpoint* custom_tcp_endpoint_create(grpc_custom_socket* socket,
347
347
  grpc_resource_quota* resource_quota,
348
- char* peer_string) {
348
+ const char* peer_string) {
349
349
  custom_tcp_endpoint* tcp =
350
350
  (custom_tcp_endpoint*)gpr_malloc(sizeof(custom_tcp_endpoint));
351
351
  grpc_core::ApplicationCallbackExecCtx callback_exec_ctx;
@@ -79,6 +79,6 @@ void grpc_custom_close_server_callback(grpc_tcp_listener* listener);
79
79
 
80
80
  grpc_endpoint* custom_tcp_endpoint_create(grpc_custom_socket* socket,
81
81
  grpc_resource_quota* resource_quota,
82
- char* peer_string);
82
+ const char* peer_string);
83
83
 
84
84
  #endif /* GRPC_CORE_LIB_IOMGR_TCP_CUSTOM_H */
@@ -28,11 +28,10 @@ grpc_error* grpc_tcp_server_create(grpc_closure* shutdown_complete,
28
28
  return grpc_tcp_server_impl->create(shutdown_complete, args, server);
29
29
  }
30
30
 
31
- void grpc_tcp_server_start(grpc_tcp_server* server, grpc_pollset** pollsets,
32
- size_t pollset_count,
31
+ void grpc_tcp_server_start(grpc_tcp_server* server,
32
+ const std::vector<grpc_pollset*>* pollsets,
33
33
  grpc_tcp_server_cb on_accept_cb, void* cb_arg) {
34
- grpc_tcp_server_impl->start(server, pollsets, pollset_count, on_accept_cb,
35
- cb_arg);
34
+ grpc_tcp_server_impl->start(server, pollsets, on_accept_cb, cb_arg);
36
35
  }
37
36
 
38
37
  grpc_error* grpc_tcp_server_add_port(grpc_tcp_server* s,
@@ -24,6 +24,8 @@
24
24
  #include <grpc/grpc.h>
25
25
  #include <grpc/impl/codegen/grpc_types.h>
26
26
 
27
+ #include <vector>
28
+
27
29
  #include "src/core/lib/iomgr/closure.h"
28
30
  #include "src/core/lib/iomgr/endpoint.h"
29
31
  #include "src/core/lib/iomgr/resolve_address.h"
@@ -64,9 +66,9 @@ typedef struct grpc_tcp_server_vtable {
64
66
  grpc_error* (*create)(grpc_closure* shutdown_complete,
65
67
  const grpc_channel_args* args,
66
68
  grpc_tcp_server** server);
67
- void (*start)(grpc_tcp_server* server, grpc_pollset** pollsets,
68
- size_t pollset_count, grpc_tcp_server_cb on_accept_cb,
69
- void* cb_arg);
69
+ void (*start)(grpc_tcp_server* server,
70
+ const std::vector<grpc_pollset*>* pollsets,
71
+ grpc_tcp_server_cb on_accept_cb, void* cb_arg);
70
72
  grpc_error* (*add_port)(grpc_tcp_server* s, const grpc_resolved_address* addr,
71
73
  int* out_port);
72
74
  grpc_core::TcpServerFdHandler* (*create_fd_handler)(grpc_tcp_server* s);
@@ -87,8 +89,8 @@ grpc_error* grpc_tcp_server_create(grpc_closure* shutdown_complete,
87
89
  grpc_tcp_server** server);
88
90
 
89
91
  /* Start listening to bound ports */
90
- void grpc_tcp_server_start(grpc_tcp_server* server, grpc_pollset** pollsets,
91
- size_t pollset_count,
92
+ void grpc_tcp_server_start(grpc_tcp_server* server,
93
+ const std::vector<grpc_pollset*>* pollsets,
92
94
  grpc_tcp_server_cb on_accept_cb, void* cb_arg);
93
95
 
94
96
  /* Add a port to the server, returning the newly allocated port on success, or
@@ -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:
@@ -82,10 +82,9 @@ struct grpc_tcp_server {
82
82
  /* shutdown callback */
83
83
  grpc_closure* shutdown_complete;
84
84
 
85
- /* all pollsets interested in new connections */
86
- grpc_pollset** pollsets;
87
- /* number of pollsets in the pollsets array */
88
- size_t pollset_count;
85
+ /* all pollsets interested in new connections. The object pointed at is not
86
+ * owned by this struct */
87
+ const std::vector<grpc_pollset*>* pollsets;
89
88
 
90
89
  /* next pollset to assign a channel to */
91
90
  gpr_atm next_pollset_to_assign;
@@ -31,9 +31,10 @@
31
31
 
32
32
  #include <string>
33
33
 
34
+ #include "absl/strings/str_cat.h"
35
+
34
36
  #include <grpc/support/alloc.h>
35
37
  #include <grpc/support/log.h>
36
- #include <grpc/support/string_util.h>
37
38
  #include <grpc/support/sync.h>
38
39
 
39
40
  #include "src/core/lib/iomgr/error.h"
@@ -85,15 +86,13 @@ static grpc_error* add_socket_to_server(grpc_tcp_server* s, int fd,
85
86
  grpc_tcp_listener** listener) {
86
87
  grpc_tcp_listener* sp = nullptr;
87
88
  int port = -1;
88
- std::string addr_str;
89
- char* name;
90
89
 
91
90
  grpc_error* err =
92
91
  grpc_tcp_server_prepare_socket(s, fd, addr, s->so_reuseport, &port);
93
92
  if (err == GRPC_ERROR_NONE) {
94
93
  GPR_ASSERT(port > 0);
95
- addr_str = grpc_sockaddr_to_string(addr, true);
96
- gpr_asprintf(&name, "tcp-server-listener:%s", addr_str.c_str());
94
+ std::string addr_str = grpc_sockaddr_to_string(addr, true);
95
+ std::string name = absl::StrCat("tcp-server-listener:", addr_str);
97
96
  gpr_mu_lock(&s->mu);
98
97
  s->nports++;
99
98
  GPR_ASSERT(!s->on_accept_cb && "must add ports before starting server");
@@ -107,7 +106,7 @@ static grpc_error* add_socket_to_server(grpc_tcp_server* s, int fd,
107
106
  s->tail = sp;
108
107
  sp->server = s;
109
108
  sp->fd = fd;
110
- sp->emfd = grpc_fd_create(fd, name, true);
109
+ sp->emfd = grpc_fd_create(fd, name.c_str(), true);
111
110
  memcpy(&sp->addr, addr, sizeof(grpc_resolved_address));
112
111
  sp->port = port;
113
112
  sp->port_index = port_index;
@@ -116,7 +115,6 @@ static grpc_error* add_socket_to_server(grpc_tcp_server* s, int fd,
116
115
  sp->sibling = nullptr;
117
116
  GPR_ASSERT(sp->emfd);
118
117
  gpr_mu_unlock(&s->mu);
119
- gpr_free(name);
120
118
  }
121
119
 
122
120
  *listener = sp;
@@ -31,9 +31,10 @@
31
31
 
32
32
  #include <string>
33
33
 
34
+ #include "absl/strings/str_cat.h"
35
+
34
36
  #include <grpc/support/alloc.h>
35
37
  #include <grpc/support/log.h>
36
- #include <grpc/support/string_util.h>
37
38
 
38
39
  #include "src/core/lib/iomgr/error.h"
39
40
  #include "src/core/lib/iomgr/sockaddr.h"
@@ -145,14 +146,8 @@ grpc_error* grpc_tcp_server_add_all_local_addrs(grpc_tcp_server* s,
145
146
  }
146
147
  if ((err = grpc_tcp_server_add_addr(s, &addr, port_index, fd_index, &dsmode,
147
148
  &new_sp)) != GRPC_ERROR_NONE) {
148
- char* err_str = nullptr;
149
- grpc_error* root_err;
150
- if (gpr_asprintf(&err_str, "Failed to add listener: %s",
151
- addr_str.c_str()) < 0) {
152
- err_str = gpr_strdup("Failed to add listener");
153
- }
154
- root_err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(err_str);
155
- gpr_free(err_str);
149
+ grpc_error* root_err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
150
+ absl::StrCat("Failed to add listener: ", addr_str).c_str());
156
151
  err = grpc_error_add_child(root_err, err);
157
152
  break;
158
153
  } else {