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
@@ -38,10 +38,14 @@
38
38
  #include <sys/syscall.h>
39
39
  #include <unistd.h>
40
40
 
41
- #include <grpc/support/alloc.h>
42
- #include <grpc/support/string_util.h>
41
+ #include <string>
43
42
 
44
43
  #include "absl/container/inlined_vector.h"
44
+ #include "absl/strings/str_cat.h"
45
+ #include "absl/strings/str_format.h"
46
+
47
+ #include <grpc/support/alloc.h>
48
+
45
49
  #include "src/core/lib/debug/stats.h"
46
50
  #include "src/core/lib/gpr/spinlock.h"
47
51
  #include "src/core/lib/gpr/tls.h"
@@ -63,10 +67,6 @@
63
67
  //#define GRPC_EPOLLEX_CREATE_WORKERS_ON_HEAP 1
64
68
 
65
69
  #define MAX_EPOLL_EVENTS 100
66
- // TODO(juanlishen): We use a greater-than-one value here as a workaround fix to
67
- // a keepalive ping timeout issue. We may want to revert https://github
68
- // .com/grpc/grpc/pull/14943 once we figure out the root cause.
69
- #define MAX_EPOLL_EVENTS_HANDLED_EACH_POLL_CALL 16
70
70
  #define MAX_FDS_IN_CACHE 32
71
71
 
72
72
  grpc_core::DebugOnlyTraceFlag grpc_trace_pollable_refcount(false,
@@ -124,11 +124,10 @@ static const char* pollable_type_string(pollable_type t) {
124
124
  return "<invalid>";
125
125
  }
126
126
 
127
- static char* pollable_desc(pollable* p) {
128
- char* out;
129
- gpr_asprintf(&out, "type=%s epfd=%d wakeup=%d", pollable_type_string(p->type),
130
- p->epfd, p->wakeup.read_fd);
131
- return out;
127
+ static std::string pollable_desc(pollable* p) {
128
+ return absl::StrFormat("type=%s epfd=%d wakeup=%d",
129
+ pollable_type_string(p->type), p->epfd,
130
+ p->wakeup.read_fd);
132
131
  }
133
132
 
134
133
  /// Shared empty pollable - used by pollset to poll on until the first fd is
@@ -170,15 +169,13 @@ struct grpc_fd {
170
169
  write_closure.InitEvent();
171
170
  error_closure.InitEvent();
172
171
 
173
- char* fd_name;
174
- gpr_asprintf(&fd_name, "%s fd=%d", name, fd);
175
- grpc_iomgr_register_object(&iomgr_object, fd_name);
172
+ std::string fd_name = absl::StrCat(name, " fd=", fd);
173
+ grpc_iomgr_register_object(&iomgr_object, fd_name.c_str());
176
174
  #ifndef NDEBUG
177
175
  if (GRPC_TRACE_FLAG_ENABLED(grpc_trace_fd_refcount)) {
178
- gpr_log(GPR_DEBUG, "FD %d %p create %s", fd, this, fd_name);
176
+ gpr_log(GPR_DEBUG, "FD %d %p create %s", fd, this, fd_name.c_str());
179
177
  }
180
178
  #endif
181
- gpr_free(fd_name);
182
179
  }
183
180
 
184
181
  // This is really the dtor, but the poller threads waking up from
@@ -872,8 +869,6 @@ static grpc_error* pollable_process_events(grpc_pollset* pollset,
872
869
  (pollable_obj->event_count - pollable_obj->event_cursor) / worker_count;
873
870
  if (handle_count == 0) {
874
871
  handle_count = 1;
875
- } else if (handle_count > MAX_EPOLL_EVENTS_HANDLED_EACH_POLL_CALL) {
876
- handle_count = MAX_EPOLL_EVENTS_HANDLED_EACH_POLL_CALL;
877
872
  }
878
873
  grpc_error* error = GRPC_ERROR_NONE;
879
874
  for (int i = 0; (drain || i < handle_count) &&
@@ -934,9 +929,8 @@ static grpc_error* pollable_epoll(pollable* p, grpc_millis deadline) {
934
929
  int timeout = poll_deadline_to_millis_timeout(deadline);
935
930
 
936
931
  if (GRPC_TRACE_FLAG_ENABLED(grpc_polling_trace)) {
937
- char* desc = pollable_desc(p);
938
- gpr_log(GPR_INFO, "POLLABLE:%p[%s] poll for %dms", p, desc, timeout);
939
- gpr_free(desc);
932
+ gpr_log(GPR_INFO, "POLLABLE:%p[%s] poll for %dms", p,
933
+ pollable_desc(p).c_str(), timeout);
940
934
  }
941
935
 
942
936
  if (timeout != 0) {
@@ -32,9 +32,12 @@
32
32
  #include <sys/socket.h>
33
33
  #include <unistd.h>
34
34
 
35
+ #include <string>
36
+
37
+ #include "absl/strings/str_cat.h"
38
+
35
39
  #include <grpc/support/alloc.h>
36
40
  #include <grpc/support/log.h>
37
- #include <grpc/support/string_util.h>
38
41
 
39
42
  #include "src/core/lib/debug/stats.h"
40
43
  #include "src/core/lib/gpr/murmur_hash.h"
@@ -381,10 +384,8 @@ static grpc_fd* fd_create(int fd, const char* name, bool track_err) {
381
384
  r->released = 0;
382
385
  gpr_atm_no_barrier_store(&r->pollhup, 0);
383
386
 
384
- char* name2;
385
- gpr_asprintf(&name2, "%s fd=%d", name, fd);
386
- grpc_iomgr_register_object(&r->iomgr_object, name2);
387
- gpr_free(name2);
387
+ std::string name2 = absl::StrCat(name, " fd=", fd);
388
+ grpc_iomgr_register_object(&r->iomgr_object, name2.c_str());
388
389
  fork_fd_list_add_grpc_fd(r);
389
390
  return r;
390
391
  }
@@ -37,6 +37,7 @@
37
37
  #include "src/core/lib/iomgr/ev_epollex_linux.h"
38
38
  #include "src/core/lib/iomgr/ev_poll_posix.h"
39
39
  #include "src/core/lib/iomgr/internal_errqueue.h"
40
+ #include "src/core/lib/iomgr/iomgr.h"
40
41
 
41
42
  GPR_GLOBAL_CONFIG_DEFINE_STRING(
42
43
  grpc_poll_strategy, "all",
@@ -107,6 +108,7 @@ const grpc_event_engine_vtable* init_non_polling(bool explicit_request) {
107
108
  auto ret = grpc_init_poll_posix(explicit_request);
108
109
  real_poll_function = grpc_poll_function;
109
110
  grpc_poll_function = dummy_poll;
111
+ grpc_iomgr_mark_non_polling_internal();
110
112
 
111
113
  return ret;
112
114
  }
@@ -31,6 +31,7 @@
31
31
 
32
32
  #include "src/core/lib/gpr/string.h"
33
33
  #include "src/core/lib/gpr/useful.h"
34
+ #include "src/core/lib/gprpp/atomic.h"
34
35
  #include "src/core/lib/gprpp/global_config.h"
35
36
  #include "src/core/lib/gprpp/thd.h"
36
37
  #include "src/core/lib/iomgr/buffer_list.h"
@@ -50,6 +51,7 @@ static gpr_cv g_rcv;
50
51
  static int g_shutdown;
51
52
  static grpc_iomgr_object g_root_object;
52
53
  static bool g_grpc_abort_on_leaks;
54
+ static grpc_core::Atomic<bool> g_iomgr_non_polling{false};
53
55
 
54
56
  void grpc_iomgr_init() {
55
57
  grpc_core::ExecCtx exec_ctx;
@@ -192,3 +194,11 @@ void grpc_iomgr_unregister_object(grpc_iomgr_object* obj) {
192
194
  }
193
195
 
194
196
  bool grpc_iomgr_abort_on_leaks(void) { return g_grpc_abort_on_leaks; }
197
+
198
+ bool grpc_iomgr_non_polling() {
199
+ return g_iomgr_non_polling.Load(grpc_core::MemoryOrder::SEQ_CST);
200
+ }
201
+
202
+ void grpc_iomgr_mark_non_polling_internal() {
203
+ g_iomgr_non_polling.Store(true, grpc_core::MemoryOrder::SEQ_CST);
204
+ }
@@ -45,6 +45,16 @@ void grpc_iomgr_shutdown_background_closure();
45
45
  */
46
46
  bool grpc_iomgr_run_in_background();
47
47
 
48
+ /* Returns true if polling engine is non-polling, false otherwise.
49
+ * Currently only 'none' is non-polling.
50
+ */
51
+ bool grpc_iomgr_non_polling();
52
+
53
+ /* Mark the polling engine as non-polling. For internal use only.
54
+ * Currently only 'none' is non-polling.
55
+ */
56
+ void grpc_iomgr_mark_non_polling_internal();
57
+
48
58
  /** Returns true if the caller is a worker thread for any background poller. */
49
59
  bool grpc_iomgr_is_any_background_poller_thread();
50
60
 
@@ -93,6 +93,20 @@ bool grpc_is_epollexclusive_available(void) {
93
93
  close(evfd);
94
94
  return false;
95
95
  }
96
+ // Check that EPOLLEXCLUSIVE is supported at all.
97
+ ev.events = static_cast<uint32_t>(EPOLLET | EPOLLIN | EPOLLEXCLUSIVE);
98
+ if (epoll_ctl(fd, EPOLL_CTL_ADD, evfd, &ev) != 0) {
99
+ if (!logged_why_not) {
100
+ gpr_log(GPR_DEBUG,
101
+ "epoll_ctl with EPOLLEXCLUSIVE failed with error: "
102
+ "%d. Not using epollex polling engine.",
103
+ errno);
104
+ logged_why_not = true;
105
+ }
106
+ close(fd);
107
+ close(evfd);
108
+ return false;
109
+ }
96
110
  close(evfd);
97
111
  close(fd);
98
112
  return true;
@@ -33,19 +33,6 @@
33
33
  #endif
34
34
  #if defined(GRPC_CUSTOM_SOCKET)
35
35
  // Do Nothing
36
- #elif defined(GPR_MANYLINUX1)
37
- #define GRPC_HAVE_ARPA_NAMESER 1
38
- #define GRPC_HAVE_IFADDRS 1
39
- #define GRPC_HAVE_IPV6_RECVPKTINFO 1
40
- #define GRPC_HAVE_IP_PKTINFO 1
41
- #define GRPC_HAVE_MSG_NOSIGNAL 1
42
- #define GRPC_HAVE_UNIX_SOCKET 1
43
- #define GRPC_POSIX_FORK 1
44
- #define GRPC_POSIX_NO_SPECIAL_WAKEUP_FD 1
45
- #define GRPC_POSIX_SOCKET 1
46
- #define GRPC_POSIX_SOCKETUTILS 1
47
- #define GRPC_POSIX_WAKEUP_FD 1
48
- #define GRPC_LINUX_EPOLL 1
49
36
  #elif defined(GPR_WINDOWS)
50
37
  #define GRPC_WINSOCK_SOCKET 1
51
38
  #define GRPC_WINDOWS_SOCKETUTILS 1
@@ -90,11 +77,6 @@
90
77
  #if __GLIBC_PREREQ(2, 10)
91
78
  #define GRPC_LINUX_SOCKETUTILS 1
92
79
  #endif
93
- #endif
94
- #ifdef LINUX_VERSION_CODE
95
- #if LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37)
96
- #define GRPC_HAVE_TCP_USER_TIMEOUT
97
- #ifdef __GLIBC_PREREQ
98
80
  #if !(__GLIBC_PREREQ(2, 17))
99
81
  /*
100
82
  * TCP_USER_TIMEOUT wasn't imported to glibc until 2.17. Use Linux system
@@ -102,9 +84,7 @@
102
84
  */
103
85
  #define GRPC_LINUX_TCP_H 1
104
86
  #endif /* __GLIBC_PREREQ(2, 17) */
105
- #endif /* ifdef __GLIBC_PREREQ */
106
- #endif /* LINUX_VERSION_CODE >= KERNEL_VERSION(2, 6, 37) */
107
- #endif /* LINUX_VERSION_CODE */
87
+ #endif
108
88
  #ifndef __GLIBC__
109
89
  #define GRPC_LINUX_EPOLL 1
110
90
  #define GRPC_LINUX_EPOLL_CREATE1 1
@@ -18,22 +18,24 @@
18
18
 
19
19
  #include <grpc/support/port_platform.h>
20
20
 
21
- #include "src/core/lib/iomgr/port.h"
21
+ #include "src/core/lib/iomgr/resolve_address_custom.h"
22
22
 
23
- #include <grpc/support/alloc.h>
24
- #include <grpc/support/string_util.h>
23
+ #include <string.h>
25
24
 
25
+ #include <string>
26
+
27
+ #include "absl/strings/str_format.h"
28
+
29
+ #include <grpc/support/alloc.h>
26
30
  #include <grpc/support/log.h>
31
+
27
32
  #include "src/core/lib/gpr/string.h"
28
33
  #include "src/core/lib/gpr/useful.h"
29
34
  #include "src/core/lib/gprpp/host_port.h"
30
-
31
35
  #include "src/core/lib/iomgr/iomgr_custom.h"
32
- #include "src/core/lib/iomgr/resolve_address_custom.h"
36
+ #include "src/core/lib/iomgr/port.h"
33
37
  #include "src/core/lib/iomgr/sockaddr_utils.h"
34
38
 
35
- #include <string.h>
36
-
37
39
  struct grpc_custom_resolver {
38
40
  grpc_closure* on_done = nullptr;
39
41
  grpc_resolved_addresses** addresses = nullptr;
@@ -88,23 +90,16 @@ static grpc_error* try_split_host_port(const char* name,
88
90
  const char* default_port,
89
91
  std::string* host, std::string* port) {
90
92
  /* parse name, splitting it into host and port parts */
91
- grpc_error* error;
92
93
  grpc_core::SplitHostPort(name, host, port);
93
94
  if (host->empty()) {
94
- char* msg;
95
- gpr_asprintf(&msg, "unparseable host:port: '%s'", name);
96
- error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
97
- gpr_free(msg);
98
- return error;
95
+ return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
96
+ absl::StrFormat("unparseable host:port: '%s'", name).c_str());
99
97
  }
100
98
  if (port->empty()) {
101
99
  // TODO(murgatroid99): add tests for this case
102
100
  if (default_port == nullptr) {
103
- char* msg;
104
- gpr_asprintf(&msg, "no port in name '%s'", name);
105
- error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
106
- gpr_free(msg);
107
- return error;
101
+ return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
102
+ absl::StrFormat("no port in name '%s'", name).c_str());
108
103
  }
109
104
  *port = default_port;
110
105
  }
@@ -29,6 +29,10 @@
29
29
  #include <string.h>
30
30
  #include <sys/types.h>
31
31
 
32
+ #include <string>
33
+
34
+ #include "absl/strings/str_format.h"
35
+
32
36
  #include <grpc/support/alloc.h>
33
37
  #include <grpc/support/log.h>
34
38
  #include <grpc/support/log_windows.h>
@@ -65,18 +69,14 @@ static grpc_error* windows_blocking_resolve_address(
65
69
  std::string port;
66
70
  grpc_core::SplitHostPort(name, &host, &port);
67
71
  if (host.empty()) {
68
- char* msg;
69
- gpr_asprintf(&msg, "unparseable host:port: '%s'", name);
70
- error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
71
- gpr_free(msg);
72
+ error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
73
+ absl::StrFormat("unparseable host:port: '%s'", name).c_str());
72
74
  goto done;
73
75
  }
74
76
  if (port.empty()) {
75
77
  if (default_port == NULL) {
76
- char* msg;
77
- gpr_asprintf(&msg, "no port in name '%s'", name);
78
- error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
79
- gpr_free(msg);
78
+ error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
79
+ absl::StrFormat("no port in name '%s'", name).c_str());
80
80
  goto done;
81
81
  }
82
82
  port = default_port;
@@ -25,10 +25,13 @@
25
25
  #include <stdint.h>
26
26
  #include <string.h>
27
27
 
28
+ #include <string>
29
+
30
+ #include "absl/strings/str_cat.h"
31
+
28
32
  #include <grpc/slice_buffer.h>
29
33
  #include <grpc/support/alloc.h>
30
34
  #include <grpc/support/log.h>
31
- #include <grpc/support/string_util.h>
32
35
 
33
36
  #include "src/core/lib/gpr/useful.h"
34
37
  #include "src/core/lib/iomgr/combiner.h"
@@ -118,7 +121,7 @@ struct grpc_resource_user {
118
121
  grpc_resource_user_link links[GRPC_RULIST_COUNT];
119
122
 
120
123
  /* The name of this resource user, for debugging/tracing */
121
- char* name;
124
+ std::string name;
122
125
  };
123
126
 
124
127
  struct grpc_resource_quota {
@@ -181,7 +184,7 @@ struct grpc_resource_quota {
181
184
  /* Roots of all resource user lists */
182
185
  grpc_resource_user* roots[GRPC_RULIST_COUNT];
183
186
 
184
- char* name;
187
+ std::string name;
185
188
  };
186
189
 
187
190
  static void ru_unref_by(grpc_resource_user* resource_user, gpr_atm amount);
@@ -320,9 +323,9 @@ static bool rq_alloc(grpc_resource_quota* resource_quota) {
320
323
  if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
321
324
  gpr_log(GPR_INFO,
322
325
  "RQ: check allocation for user %p shutdown=%" PRIdPTR
323
- " free_pool=%" PRId64,
326
+ " free_pool=%" PRId64 " outstanding_allocations=%" PRId64,
324
327
  resource_user, gpr_atm_no_barrier_load(&resource_user->shutdown),
325
- resource_user->free_pool);
328
+ resource_user->free_pool, resource_user->outstanding_allocations);
326
329
  }
327
330
  if (gpr_atm_no_barrier_load(&resource_user->shutdown)) {
328
331
  resource_user->allocating = false;
@@ -334,7 +337,9 @@ static bool rq_alloc(grpc_resource_quota* resource_quota) {
334
337
  resource_user->free_pool += aborted_allocations;
335
338
  grpc_core::ExecCtx::RunList(DEBUG_LOCATION, &resource_user->on_allocated);
336
339
  gpr_mu_unlock(&resource_user->mu);
337
- ru_unref_by(resource_user, static_cast<gpr_atm>(aborted_allocations));
340
+ if (aborted_allocations > 0) {
341
+ ru_unref_by(resource_user, static_cast<gpr_atm>(aborted_allocations));
342
+ }
338
343
  continue;
339
344
  }
340
345
  if (resource_user->free_pool < 0 &&
@@ -347,13 +352,13 @@ static bool rq_alloc(grpc_resource_quota* resource_quota) {
347
352
  gpr_log(GPR_INFO,
348
353
  "RQ %s %s: grant alloc %" PRId64
349
354
  " bytes; rq_free_pool -> %" PRId64,
350
- resource_quota->name, resource_user->name, amt,
355
+ resource_quota->name.c_str(), resource_user->name.c_str(), amt,
351
356
  resource_quota->free_pool);
352
357
  }
353
358
  } else if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace) &&
354
359
  resource_user->free_pool >= 0) {
355
360
  gpr_log(GPR_INFO, "RQ %s %s: discard already satisfied alloc request",
356
- resource_quota->name, resource_user->name);
361
+ resource_quota->name.c_str(), resource_user->name.c_str());
357
362
  }
358
363
  if (resource_user->free_pool >= 0) {
359
364
  resource_user->allocating = false;
@@ -386,7 +391,7 @@ static bool rq_reclaim_from_per_user_free_pool(
386
391
  gpr_log(GPR_INFO,
387
392
  "RQ %s %s: reclaim_from_per_user_free_pool %" PRId64
388
393
  " bytes; rq_free_pool -> %" PRId64,
389
- resource_quota->name, resource_user->name, amt,
394
+ resource_quota->name.c_str(), resource_user->name.c_str(), amt,
390
395
  resource_quota->free_pool);
391
396
  }
392
397
  gpr_mu_unlock(&resource_user->mu);
@@ -396,7 +401,7 @@ static bool rq_reclaim_from_per_user_free_pool(
396
401
  gpr_log(GPR_INFO,
397
402
  "RQ %s %s: failed to reclaim_from_per_user_free_pool; "
398
403
  "free_pool = %" PRId64 "; rq_free_pool = %" PRId64,
399
- resource_quota->name, resource_user->name,
404
+ resource_quota->name.c_str(), resource_user->name.c_str(),
400
405
  resource_user->free_pool, resource_quota->free_pool);
401
406
  }
402
407
  gpr_mu_unlock(&resource_user->mu);
@@ -413,8 +418,9 @@ static bool rq_reclaim(grpc_resource_quota* resource_quota, bool destructive) {
413
418
  grpc_resource_user* resource_user = rulist_pop_head(resource_quota, list);
414
419
  if (resource_user == nullptr) return false;
415
420
  if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
416
- gpr_log(GPR_INFO, "RQ %s %s: initiate %s reclamation", resource_quota->name,
417
- resource_user->name, destructive ? "destructive" : "benign");
421
+ gpr_log(GPR_INFO, "RQ %s %s: initiate %s reclamation",
422
+ resource_quota->name.c_str(), resource_user->name.c_str(),
423
+ destructive ? "destructive" : "benign");
418
424
  }
419
425
  resource_quota->reclaiming = true;
420
426
  grpc_resource_quota_ref_internal(resource_quota);
@@ -583,8 +589,7 @@ static void ru_destroy(void* ru, grpc_error* /*error*/) {
583
589
  }
584
590
  grpc_resource_quota_unref_internal(resource_user->resource_quota);
585
591
  gpr_mu_destroy(&resource_user->mu);
586
- gpr_free(resource_user->name);
587
- gpr_free(resource_user);
592
+ delete resource_user;
588
593
  }
589
594
 
590
595
  static void ru_alloc_slices(
@@ -638,8 +643,7 @@ static void rq_reclamation_done(void* rq, grpc_error* /*error*/) {
638
643
 
639
644
  /* Public API */
640
645
  grpc_resource_quota* grpc_resource_quota_create(const char* name) {
641
- grpc_resource_quota* resource_quota =
642
- static_cast<grpc_resource_quota*>(gpr_malloc(sizeof(*resource_quota)));
646
+ grpc_resource_quota* resource_quota = new grpc_resource_quota;
643
647
  gpr_ref_init(&resource_quota->refs, 1);
644
648
  resource_quota->combiner = grpc_combiner_create();
645
649
  resource_quota->free_pool = INT64_MAX;
@@ -653,10 +657,10 @@ grpc_resource_quota* grpc_resource_quota_create(const char* name) {
653
657
  resource_quota->reclaiming = false;
654
658
  gpr_atm_no_barrier_store(&resource_quota->memory_usage_estimation, 0);
655
659
  if (name != nullptr) {
656
- resource_quota->name = gpr_strdup(name);
660
+ resource_quota->name = name;
657
661
  } else {
658
- gpr_asprintf(&resource_quota->name, "anonymous_pool_%" PRIxPTR,
659
- (intptr_t)resource_quota);
662
+ resource_quota->name =
663
+ absl::StrCat("anonymous_pool_", (intptr_t)resource_quota);
660
664
  }
661
665
  GRPC_CLOSURE_INIT(&resource_quota->rq_step_closure, rq_step, resource_quota,
662
666
  nullptr);
@@ -673,9 +677,8 @@ void grpc_resource_quota_unref_internal(grpc_resource_quota* resource_quota) {
673
677
  // No outstanding thread quota
674
678
  GPR_ASSERT(resource_quota->num_threads_allocated == 0);
675
679
  GRPC_COMBINER_UNREF(resource_quota->combiner, "resource_quota");
676
- gpr_free(resource_quota->name);
677
680
  gpr_mu_destroy(&resource_quota->thread_count_mu);
678
- gpr_free(resource_quota);
681
+ delete resource_quota;
679
682
  }
680
683
  }
681
684
 
@@ -772,8 +775,7 @@ const grpc_arg_pointer_vtable* grpc_resource_quota_arg_vtable(void) {
772
775
 
773
776
  grpc_resource_user* grpc_resource_user_create(
774
777
  grpc_resource_quota* resource_quota, const char* name) {
775
- grpc_resource_user* resource_user =
776
- static_cast<grpc_resource_user*>(gpr_malloc(sizeof(*resource_user)));
778
+ grpc_resource_user* resource_user = new grpc_resource_user;
777
779
  resource_user->resource_quota =
778
780
  grpc_resource_quota_ref_internal(resource_quota);
779
781
  GRPC_CLOSURE_INIT(&resource_user->allocate_closure, &ru_allocate,
@@ -803,10 +805,10 @@ grpc_resource_user* grpc_resource_user_create(
803
805
  resource_user->links[i].next = resource_user->links[i].prev = nullptr;
804
806
  }
805
807
  if (name != nullptr) {
806
- resource_user->name = gpr_strdup(name);
808
+ resource_user->name = name;
807
809
  } else {
808
- gpr_asprintf(&resource_user->name, "anonymous_resource_user_%" PRIxPTR,
809
- (intptr_t)resource_user);
810
+ resource_user->name =
811
+ absl::StrCat("anonymous_resource_user_", (intptr_t)resource_user);
810
812
  }
811
813
  return resource_user;
812
814
  }
@@ -888,8 +890,8 @@ static bool resource_user_alloc_locked(grpc_resource_user* resource_user,
888
890
  resource_user->free_pool -= static_cast<int64_t>(size);
889
891
  if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
890
892
  gpr_log(GPR_INFO, "RQ %s %s: alloc %" PRIdPTR "; free_pool -> %" PRId64,
891
- resource_user->resource_quota->name, resource_user->name, size,
892
- resource_user->free_pool);
893
+ resource_user->resource_quota->name.c_str(),
894
+ resource_user->name.c_str(), size, resource_user->free_pool);
893
895
  }
894
896
  if (GPR_LIKELY(resource_user->free_pool >= 0)) return true;
895
897
  // Slow path: We need to wait for the free pool to refill.
@@ -949,8 +951,8 @@ void grpc_resource_user_free(grpc_resource_user* resource_user, size_t size) {
949
951
  resource_user->free_pool += static_cast<int64_t>(size);
950
952
  if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
951
953
  gpr_log(GPR_INFO, "RQ %s %s: free %" PRIdPTR "; free_pool -> %" PRId64,
952
- resource_user->resource_quota->name, resource_user->name, size,
953
- resource_user->free_pool);
954
+ resource_user->resource_quota->name.c_str(),
955
+ resource_user->name.c_str(), size, resource_user->free_pool);
954
956
  }
955
957
  bool is_bigger_than_zero = resource_user->free_pool > 0;
956
958
  if (is_bigger_than_zero && was_zero_or_negative &&
@@ -975,7 +977,8 @@ void grpc_resource_user_post_reclaimer(grpc_resource_user* resource_user,
975
977
  void grpc_resource_user_finish_reclamation(grpc_resource_user* resource_user) {
976
978
  if (GRPC_TRACE_FLAG_ENABLED(grpc_resource_quota_trace)) {
977
979
  gpr_log(GPR_INFO, "RQ %s %s: reclamation complete",
978
- resource_user->resource_quota->name, resource_user->name);
980
+ resource_user->resource_quota->name.c_str(),
981
+ resource_user->name.c_str());
979
982
  }
980
983
  resource_user->resource_quota->combiner->Run(
981
984
  &resource_user->resource_quota->rq_reclamation_done_closure,