grpc 1.34.0 → 1.35.0.pre1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of grpc might be problematic. Click here for more details.

Files changed (458) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +808 -2787
  3. data/etc/roots.pem +257 -573
  4. data/include/grpc/compression.h +1 -1
  5. data/include/grpc/grpc.h +14 -0
  6. data/include/grpc/grpc_security.h +61 -3
  7. data/include/grpc/impl/codegen/atm_windows.h +4 -0
  8. data/include/grpc/impl/codegen/byte_buffer.h +1 -1
  9. data/include/grpc/impl/codegen/grpc_types.h +1 -1
  10. data/include/grpc/impl/codegen/log.h +0 -2
  11. data/include/grpc/impl/codegen/sync_windows.h +4 -0
  12. data/include/grpc/slice_buffer.h +3 -3
  13. data/include/grpc/support/sync.h +3 -3
  14. data/include/grpc/support/time.h +7 -7
  15. data/src/core/ext/filters/client_channel/backend_metric.cc +2 -4
  16. data/src/core/ext/filters/client_channel/client_channel.cc +2734 -1498
  17. data/src/core/ext/filters/client_channel/client_channel.h +0 -4
  18. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
  19. data/src/core/ext/filters/client_channel/config_selector.h +4 -0
  20. data/src/core/ext/filters/client_channel/dynamic_filters.cc +186 -0
  21. data/src/core/ext/filters/client_channel/dynamic_filters.h +99 -0
  22. data/src/core/ext/filters/client_channel/health/health_check_client.cc +6 -6
  23. data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -2
  24. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +4 -5
  25. data/src/core/ext/filters/client_channel/http_proxy.cc +21 -20
  26. data/src/core/ext/filters/client_channel/lb_policy.cc +1 -1
  27. data/src/core/ext/filters/client_channel/lb_policy.h +2 -3
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +32 -30
  29. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.cc +3 -3
  30. data/src/core/ext/filters/client_channel/lb_policy/grpclb/load_balancer_api.h +1 -1
  31. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +162 -20
  32. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +0 -8
  33. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h +24 -0
  34. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +5 -2
  35. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +1 -1
  36. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +1262 -0
  37. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +7 -14
  38. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +1 -32
  39. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +2 -2
  40. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +454 -16
  41. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -0
  42. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -9
  43. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +2 -2
  44. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +18 -31
  45. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +3 -5
  46. data/src/core/ext/filters/client_channel/resolver_factory.h +6 -6
  47. data/src/core/ext/filters/client_channel/resolver_registry.cc +40 -39
  48. data/src/core/ext/filters/client_channel/resolver_registry.h +2 -2
  49. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +11 -13
  50. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +8 -8
  51. data/src/core/ext/filters/client_channel/retry_throttle.cc +5 -3
  52. data/src/core/ext/filters/client_channel/retry_throttle.h +3 -1
  53. data/src/core/ext/filters/client_channel/service_config_call_data.h +19 -1
  54. data/src/core/ext/filters/client_channel/subchannel.cc +34 -50
  55. data/src/core/ext/filters/client_channel/subchannel.h +12 -18
  56. data/src/core/ext/filters/deadline/deadline_filter.cc +4 -2
  57. data/src/core/ext/filters/http/client_authority_filter.cc +6 -6
  58. data/src/core/ext/filters/http/http_filters_plugin.cc +6 -3
  59. data/src/core/ext/filters/message_size/message_size_filter.cc +1 -1
  60. data/src/core/ext/filters/workarounds/workaround_utils.cc +1 -1
  61. data/src/core/ext/transport/chttp2/client/authority.cc +3 -3
  62. data/src/core/ext/transport/chttp2/client/insecure/channel_create.cc +20 -8
  63. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +21 -10
  64. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +26 -14
  65. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +178 -86
  66. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +12 -5
  67. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +7 -8
  68. data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -1
  69. data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -1
  70. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +6 -6
  71. data/src/core/ext/transport/chttp2/transport/writing.cc +1 -1
  72. data/src/core/ext/transport/inproc/inproc_transport.cc +42 -8
  73. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +1 -0
  74. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.c +1 -1
  75. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +7 -0
  76. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +27 -27
  77. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +139 -40
  78. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +13 -13
  79. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +44 -17
  80. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +111 -111
  81. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +424 -241
  82. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.c +3 -3
  83. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +13 -5
  84. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.c +22 -22
  85. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +47 -21
  86. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +21 -21
  87. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +88 -39
  88. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.c +4 -4
  89. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +15 -6
  90. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +44 -44
  91. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +200 -78
  92. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +17 -17
  93. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +72 -35
  94. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +1 -1
  95. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +7 -0
  96. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.c +7 -7
  97. data/src/core/ext/upb-generated/envoy/config/core/v3/extension.upb.h +27 -11
  98. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +30 -30
  99. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +136 -49
  100. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +39 -39
  101. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +157 -89
  102. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.c +4 -4
  103. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +17 -9
  104. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +47 -47
  105. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +163 -78
  106. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +1 -1
  107. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +7 -0
  108. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.c +2 -2
  109. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +9 -2
  110. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -1
  111. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.h +7 -0
  112. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +13 -13
  113. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +59 -36
  114. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +16 -16
  115. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +61 -29
  116. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +26 -26
  117. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +101 -66
  118. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.c +2 -2
  119. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +11 -3
  120. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +28 -28
  121. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +122 -77
  122. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +23 -23
  123. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +106 -54
  124. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +2 -2
  125. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +13 -0
  126. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +16 -16
  127. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +81 -35
  128. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +7 -7
  129. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +38 -22
  130. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +203 -203
  131. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +845 -495
  132. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +5 -5
  133. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +26 -6
  134. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +3 -3
  135. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +17 -3
  136. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +87 -87
  137. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +343 -204
  138. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +1 -0
  139. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +20 -20
  140. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +85 -46
  141. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +7 -7
  142. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +33 -11
  143. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +32 -32
  144. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +118 -67
  145. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.c +1 -1
  146. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +7 -0
  147. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.c +1 -1
  148. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +7 -0
  149. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +29 -29
  150. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +120 -82
  151. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.c +1 -1
  152. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +7 -0
  153. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.c +1 -1
  154. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +7 -0
  155. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +7 -7
  156. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +31 -16
  157. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.c +1 -1
  158. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +7 -0
  159. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.c +1 -1
  160. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +7 -0
  161. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +5 -5
  162. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +25 -11
  163. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +1 -1
  164. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +7 -0
  165. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +1 -1
  166. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +7 -0
  167. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +6 -6
  168. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +29 -8
  169. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +2 -2
  170. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +16 -3
  171. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +3 -3
  172. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +19 -0
  173. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +7 -7
  174. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +46 -3
  175. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +8 -8
  176. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +41 -8
  177. data/src/core/ext/upb-generated/envoy/type/v3/http.upb.h +1 -0
  178. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.c +3 -3
  179. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +15 -2
  180. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.c +3 -3
  181. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +19 -0
  182. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.c +1 -1
  183. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +7 -0
  184. data/src/core/ext/upb-generated/google/api/annotations.upb.h +1 -0
  185. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.c +34 -34
  186. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/checked.upb.h +149 -72
  187. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +34 -34
  188. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +142 -59
  189. data/src/core/ext/upb-generated/google/api/http.upb.c +3 -3
  190. data/src/core/ext/upb-generated/google/api/http.upb.h +25 -6
  191. data/src/core/ext/upb-generated/google/protobuf/any.upb.c +1 -1
  192. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +7 -0
  193. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +90 -90
  194. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +455 -292
  195. data/src/core/ext/upb-generated/google/protobuf/duration.upb.c +1 -1
  196. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +7 -0
  197. data/src/core/ext/upb-generated/google/protobuf/empty.upb.c +1 -1
  198. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +7 -0
  199. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +4 -4
  200. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +22 -3
  201. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.c +1 -1
  202. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +7 -0
  203. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.c +9 -9
  204. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +55 -0
  205. data/src/core/ext/upb-generated/google/rpc/status.upb.c +1 -1
  206. data/src/core/ext/upb-generated/google/rpc/status.upb.h +10 -3
  207. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +4 -4
  208. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +11 -3
  209. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +41 -41
  210. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +149 -76
  211. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.c +5 -5
  212. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +21 -6
  213. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.c +2 -2
  214. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +13 -0
  215. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.c +17 -17
  216. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +82 -25
  217. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.c +3 -3
  218. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +19 -0
  219. data/src/core/ext/upb-generated/udpa/annotations/security.upb.c +1 -1
  220. data/src/core/ext/upb-generated/udpa/annotations/security.upb.h +7 -0
  221. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +1 -0
  222. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +2 -2
  223. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +9 -2
  224. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +1 -1
  225. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +7 -0
  226. data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.c +1 -1
  227. data/src/core/ext/upb-generated/udpa/core/v1/authority.upb.h +7 -0
  228. data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.c +5 -5
  229. data/src/core/ext/upb-generated/udpa/core/v1/collection_entry.upb.h +21 -7
  230. data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.c +2 -2
  231. data/src/core/ext/upb-generated/udpa/core/v1/context_params.upb.h +7 -0
  232. data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.c +4 -4
  233. data/src/core/ext/upb-generated/udpa/core/v1/resource.upb.h +17 -8
  234. data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.c +7 -7
  235. data/src/core/ext/upb-generated/udpa/core/v1/resource_locator.upb.h +31 -18
  236. data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.c +5 -5
  237. data/src/core/ext/upb-generated/udpa/core/v1/resource_name.upb.h +19 -11
  238. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +3 -3
  239. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +7 -0
  240. data/src/core/ext/upb-generated/validate/validate.upb.c +64 -64
  241. data/src/core/ext/upb-generated/validate/validate.upb.h +296 -157
  242. data/src/core/ext/xds/certificate_provider_store.cc +10 -7
  243. data/src/core/ext/xds/certificate_provider_store.h +12 -7
  244. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +25 -0
  245. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +1 -4
  246. data/src/core/ext/xds/xds_api.cc +220 -31
  247. data/src/core/ext/xds/xds_api.h +41 -10
  248. data/src/core/ext/xds/xds_bootstrap.h +0 -1
  249. data/src/core/ext/xds/xds_certificate_provider.cc +61 -2
  250. data/src/core/ext/xds/xds_certificate_provider.h +40 -2
  251. data/src/core/ext/xds/xds_client.cc +31 -29
  252. data/src/core/ext/xds/xds_client.h +6 -1
  253. data/src/core/ext/xds/xds_client_stats.cc +2 -2
  254. data/src/core/ext/xds/xds_server_config_fetcher.cc +131 -0
  255. data/src/core/lib/channel/channel_args.cc +8 -8
  256. data/src/core/lib/channel/channel_trace.h +1 -1
  257. data/src/core/lib/channel/channelz.cc +13 -14
  258. data/src/core/lib/channel/channelz.h +0 -1
  259. data/src/core/lib/channel/channelz_registry.h +0 -1
  260. data/src/core/lib/channel/handshaker.cc +2 -2
  261. data/src/core/lib/compression/compression_args.cc +3 -2
  262. data/src/core/lib/debug/stats.h +2 -2
  263. data/src/core/lib/debug/stats_data.h +13 -13
  264. data/src/core/lib/gpr/alloc.cc +3 -2
  265. data/src/core/lib/gpr/log.cc +53 -16
  266. data/src/core/lib/gpr/log_linux.cc +3 -1
  267. data/src/core/lib/gpr/log_posix.cc +3 -1
  268. data/src/core/lib/gpr/log_windows.cc +3 -1
  269. data/src/core/lib/gpr/spinlock.h +10 -2
  270. data/src/core/lib/gpr/string.cc +22 -21
  271. data/src/core/lib/gpr/string.h +5 -6
  272. data/src/core/lib/gpr/sync.cc +4 -4
  273. data/src/core/lib/gpr/time.cc +12 -12
  274. data/src/core/lib/gprpp/arena.h +3 -2
  275. data/src/core/lib/gprpp/ref_counted.h +2 -2
  276. data/src/core/lib/gprpp/ref_counted_ptr.h +9 -1
  277. data/src/core/lib/gprpp/thd_posix.cc +6 -1
  278. data/src/core/lib/gprpp/thd_windows.cc +3 -1
  279. data/src/core/lib/http/httpcli.cc +1 -1
  280. data/src/core/lib/http/httpcli.h +2 -3
  281. data/src/core/lib/http/httpcli_security_connector.cc +1 -1
  282. data/src/core/lib/http/parser.cc +1 -2
  283. data/src/core/lib/iomgr/call_combiner.cc +8 -5
  284. data/src/core/lib/iomgr/combiner.cc +2 -1
  285. data/src/core/lib/iomgr/endpoint.h +1 -1
  286. data/src/core/lib/iomgr/error.cc +15 -11
  287. data/src/core/lib/iomgr/error_internal.h +1 -1
  288. data/src/core/lib/iomgr/ev_epoll1_linux.cc +20 -13
  289. data/src/core/lib/iomgr/ev_epollex_linux.cc +17 -13
  290. data/src/core/lib/iomgr/ev_poll_posix.cc +9 -7
  291. data/src/core/lib/iomgr/exec_ctx.h +6 -4
  292. data/src/core/lib/iomgr/executor.cc +2 -1
  293. data/src/core/lib/iomgr/executor.h +1 -1
  294. data/src/core/lib/iomgr/executor/threadpool.h +1 -1
  295. data/src/core/lib/iomgr/iomgr.cc +1 -1
  296. data/src/core/lib/iomgr/load_file.h +1 -1
  297. data/src/core/lib/iomgr/lockfree_event.cc +19 -14
  298. data/src/core/lib/iomgr/lockfree_event.h +2 -2
  299. data/src/core/lib/iomgr/parse_address.cc +52 -46
  300. data/src/core/lib/iomgr/parse_address.h +13 -9
  301. data/src/core/lib/iomgr/poller/eventmanager_libuv.h +1 -1
  302. data/src/core/lib/iomgr/pollset_set_custom.cc +1 -1
  303. data/src/core/lib/iomgr/python_util.h +1 -1
  304. data/src/core/lib/iomgr/resolve_address.cc +4 -4
  305. data/src/core/lib/iomgr/resource_quota.cc +4 -4
  306. data/src/core/lib/iomgr/sockaddr_utils.cc +10 -10
  307. data/src/core/lib/iomgr/sockaddr_utils.h +1 -1
  308. data/src/core/lib/iomgr/socket_factory_posix.cc +3 -2
  309. data/src/core/lib/iomgr/socket_mutator.cc +3 -2
  310. data/src/core/lib/iomgr/tcp_client.cc +3 -3
  311. data/src/core/lib/iomgr/tcp_client_custom.cc +7 -6
  312. data/src/core/lib/iomgr/tcp_custom.cc +22 -17
  313. data/src/core/lib/iomgr/tcp_posix.cc +9 -6
  314. data/src/core/lib/iomgr/tcp_server_custom.cc +28 -22
  315. data/src/core/lib/iomgr/timer_custom.cc +3 -3
  316. data/src/core/lib/iomgr/timer_generic.cc +3 -3
  317. data/src/core/lib/iomgr/timer_manager.cc +2 -2
  318. data/src/core/lib/iomgr/udp_server.cc +1 -2
  319. data/src/core/lib/iomgr/udp_server.h +1 -2
  320. data/src/core/lib/iomgr/unix_sockets_posix.cc +17 -18
  321. data/src/core/lib/json/json.h +10 -0
  322. data/src/core/lib/security/authorization/evaluate_args.cc +5 -10
  323. data/src/core/lib/security/authorization/evaluate_args.h +1 -1
  324. data/src/core/lib/security/context/security_context.cc +4 -3
  325. data/src/core/lib/security/credentials/alts/check_gcp_environment.cc +1 -1
  326. data/src/core/lib/security/credentials/credentials.cc +6 -6
  327. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +413 -0
  328. data/src/core/lib/security/credentials/external/aws_external_account_credentials.h +80 -0
  329. data/src/core/lib/security/credentials/external/aws_request_signer.cc +15 -10
  330. data/src/core/lib/security/credentials/external/aws_request_signer.h +1 -2
  331. data/src/core/lib/security/credentials/external/external_account_credentials.cc +217 -31
  332. data/src/core/lib/security/credentials/external/external_account_credentials.h +7 -5
  333. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +5 -6
  334. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +3 -4
  335. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +20 -18
  336. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +5 -6
  337. data/src/core/lib/security/credentials/fake/fake_credentials.cc +2 -1
  338. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +18 -12
  339. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +18 -5
  340. data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
  341. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +3 -3
  342. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +37 -44
  343. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +5 -4
  344. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +1 -1
  345. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +5 -5
  346. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +1 -1
  347. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +1 -6
  348. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +1 -6
  349. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +326 -5
  350. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +64 -0
  351. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +1 -1
  352. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +0 -1
  353. data/src/core/lib/security/credentials/tls/tls_credentials.cc +1 -1
  354. data/src/core/lib/security/credentials/tls/tls_utils.cc +91 -0
  355. data/src/core/lib/security/credentials/tls/tls_utils.h +38 -0
  356. data/src/core/lib/security/credentials/xds/xds_credentials.cc +140 -10
  357. data/src/core/lib/security/credentials/xds/xds_credentials.h +27 -9
  358. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +1 -1
  359. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +1 -1
  360. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +46 -13
  361. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +23 -6
  362. data/src/core/lib/security/security_connector/local/local_security_connector.cc +1 -1
  363. data/src/core/lib/security/security_connector/security_connector.cc +3 -2
  364. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +4 -4
  365. data/src/core/lib/security/security_connector/ssl_utils.cc +2 -2
  366. data/src/core/lib/security/security_connector/ssl_utils.h +12 -19
  367. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +57 -12
  368. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +2 -3
  369. data/src/core/lib/security/transport/secure_endpoint.cc +2 -2
  370. data/src/core/lib/security/transport/security_handshaker.cc +2 -2
  371. data/src/core/lib/slice/slice_intern.cc +4 -5
  372. data/src/core/lib/slice/slice_internal.h +2 -2
  373. data/src/core/lib/surface/call.cc +32 -24
  374. data/src/core/lib/surface/call_details.cc +8 -8
  375. data/src/core/lib/surface/channel.cc +16 -10
  376. data/src/core/lib/surface/channel.h +3 -2
  377. data/src/core/lib/surface/channel_init.cc +1 -1
  378. data/src/core/lib/surface/completion_queue.cc +23 -18
  379. data/src/core/lib/surface/completion_queue.h +16 -16
  380. data/src/core/lib/surface/init.cc +6 -5
  381. data/src/core/lib/surface/lame_client.cc +20 -46
  382. data/src/core/lib/surface/lame_client.h +4 -0
  383. data/src/core/lib/surface/server.cc +59 -15
  384. data/src/core/lib/surface/server.h +37 -5
  385. data/src/core/lib/surface/version.cc +1 -1
  386. data/src/core/lib/transport/authority_override.cc +6 -4
  387. data/src/core/lib/transport/authority_override.h +5 -2
  388. data/src/core/lib/transport/connectivity_state.h +6 -4
  389. data/src/core/lib/transport/error_utils.h +1 -1
  390. data/src/core/lib/transport/metadata_batch.h +4 -4
  391. data/src/core/lib/transport/static_metadata.cc +1 -1
  392. data/src/core/lib/transport/status_metadata.cc +4 -3
  393. data/src/core/lib/transport/transport.h +7 -7
  394. data/src/core/lib/uri/uri_parser.cc +131 -249
  395. data/src/core/lib/uri/uri_parser.h +57 -21
  396. data/src/core/plugin_registry/grpc_plugin_registry.cc +10 -4
  397. data/src/core/tsi/alts/crypt/gsec.cc +5 -4
  398. data/src/core/tsi/alts/frame_protector/frame_handler.cc +8 -6
  399. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +1 -1
  400. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +23 -23
  401. data/src/core/tsi/alts/zero_copy_frame_protector/alts_iovec_record_protocol.cc +8 -6
  402. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +4 -4
  403. data/src/core/tsi/fake_transport_security.cc +5 -3
  404. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
  405. data/src/core/tsi/ssl_transport_security.cc +62 -49
  406. data/src/core/tsi/ssl_transport_security.h +6 -6
  407. data/src/core/tsi/transport_security.cc +6 -6
  408. data/src/core/tsi/transport_security_interface.h +1 -1
  409. data/src/ruby/ext/grpc/rb_event_thread.c +2 -0
  410. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +12 -0
  411. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +31 -13
  412. data/src/ruby/lib/grpc/version.rb +1 -1
  413. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +28 -0
  414. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +18 -0
  415. data/src/ruby/spec/pb/codegen/package_option_spec.rb +2 -6
  416. data/third_party/abseil-cpp/absl/container/flat_hash_map.h +606 -0
  417. data/third_party/abseil-cpp/absl/container/internal/raw_hash_map.h +197 -0
  418. data/third_party/abseil-cpp/absl/status/internal/statusor_internal.h +399 -0
  419. data/third_party/abseil-cpp/absl/status/statusor.cc +71 -0
  420. data/third_party/abseil-cpp/absl/status/statusor.h +760 -0
  421. data/third_party/upb/third_party/wyhash/wyhash.h +145 -0
  422. data/third_party/upb/upb/decode.c +248 -167
  423. data/third_party/upb/upb/decode.h +20 -1
  424. data/third_party/upb/upb/decode.int.h +163 -0
  425. data/third_party/upb/upb/decode_fast.c +1040 -0
  426. data/third_party/upb/upb/decode_fast.h +126 -0
  427. data/third_party/upb/upb/def.c +525 -516
  428. data/third_party/upb/upb/def.h +16 -31
  429. data/third_party/upb/upb/def.hpp +37 -123
  430. data/third_party/upb/upb/encode.c +227 -169
  431. data/third_party/upb/upb/encode.h +27 -2
  432. data/third_party/upb/upb/json_decode.c +1443 -0
  433. data/third_party/upb/upb/json_decode.h +23 -0
  434. data/third_party/upb/upb/json_encode.c +713 -0
  435. data/third_party/upb/upb/json_encode.h +36 -0
  436. data/third_party/upb/upb/msg.c +167 -88
  437. data/third_party/upb/upb/msg.h +174 -34
  438. data/third_party/upb/upb/port_def.inc +74 -61
  439. data/third_party/upb/upb/port_undef.inc +3 -7
  440. data/third_party/upb/upb/reflection.c +36 -19
  441. data/third_party/upb/upb/table.c +34 -197
  442. data/third_party/upb/upb/table.int.h +14 -5
  443. data/third_party/upb/upb/text_encode.c +45 -22
  444. data/third_party/upb/upb/text_encode.h +4 -1
  445. data/third_party/upb/upb/upb.c +18 -41
  446. data/third_party/upb/upb/upb.h +36 -7
  447. data/third_party/upb/upb/upb.hpp +4 -4
  448. data/third_party/upb/upb/upb.int.h +29 -0
  449. metadata +60 -46
  450. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +0 -909
  451. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +0 -485
  452. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +0 -68
  453. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +0 -355
  454. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +0 -138
  455. data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc +0 -265
  456. data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h +0 -104
  457. data/src/core/lib/gprpp/map.h +0 -53
  458. data/third_party/upb/upb/port.c +0 -26
@@ -35,7 +35,7 @@ class ExternalAccountCredentials
35
35
  : public grpc_oauth2_token_fetcher_credentials {
36
36
  public:
37
37
  // External account credentials json interface.
38
- struct ExternalAccountCredentialsOptions {
38
+ struct Options {
39
39
  std::string type;
40
40
  std::string audience;
41
41
  std::string subject_token_type;
@@ -48,8 +48,10 @@ class ExternalAccountCredentials
48
48
  std::string client_secret;
49
49
  };
50
50
 
51
- ExternalAccountCredentials(ExternalAccountCredentialsOptions options,
52
- std::vector<std::string> scopes);
51
+ static RefCountedPtr<ExternalAccountCredentials> Create(
52
+ const Json& json, std::vector<std::string> scopes, grpc_error** error);
53
+
54
+ ExternalAccountCredentials(Options options, std::vector<std::string> scopes);
53
55
  ~ExternalAccountCredentials() override;
54
56
  std::string debug_string() override;
55
57
 
@@ -81,7 +83,7 @@ class ExternalAccountCredentials
81
83
  // the callback function (cb) to pass the subject token (or error)
82
84
  // back.
83
85
  virtual void RetrieveSubjectToken(
84
- HTTPRequestContext* ctx, const ExternalAccountCredentialsOptions& options,
86
+ HTTPRequestContext* ctx, const Options& options,
85
87
  std::function<void(std::string, grpc_error*)> cb) = 0;
86
88
 
87
89
  private:
@@ -105,7 +107,7 @@ class ExternalAccountCredentials
105
107
 
106
108
  void FinishTokenFetch(grpc_error* error);
107
109
 
108
- ExternalAccountCredentialsOptions options_;
110
+ Options options_;
109
111
  std::vector<std::string> scopes_;
110
112
 
111
113
  HTTPRequestContext* ctx_ = nullptr;
@@ -26,9 +26,9 @@
26
26
  namespace grpc_core {
27
27
 
28
28
  RefCountedPtr<FileExternalAccountCredentials>
29
- FileExternalAccountCredentials::Create(
30
- ExternalAccountCredentialsOptions options, std::vector<std::string> scopes,
31
- grpc_error** error) {
29
+ FileExternalAccountCredentials::Create(Options options,
30
+ std::vector<std::string> scopes,
31
+ grpc_error** error) {
32
32
  auto creds = MakeRefCounted<FileExternalAccountCredentials>(
33
33
  std::move(options), std::move(scopes), error);
34
34
  if (*error == GRPC_ERROR_NONE) {
@@ -39,8 +39,7 @@ FileExternalAccountCredentials::Create(
39
39
  }
40
40
 
41
41
  FileExternalAccountCredentials::FileExternalAccountCredentials(
42
- ExternalAccountCredentialsOptions options, std::vector<std::string> scopes,
43
- grpc_error** error)
42
+ Options options, std::vector<std::string> scopes, grpc_error** error)
44
43
  : ExternalAccountCredentials(options, std::move(scopes)) {
45
44
  auto it = options.credential_source.object_value().find("file");
46
45
  if (it == options.credential_source.object_value().end()) {
@@ -92,7 +91,7 @@ FileExternalAccountCredentials::FileExternalAccountCredentials(
92
91
  }
93
92
 
94
93
  void FileExternalAccountCredentials::RetrieveSubjectToken(
95
- HTTPRequestContext* ctx, const ExternalAccountCredentialsOptions& options,
94
+ HTTPRequestContext* ctx, const Options& options,
96
95
  std::function<void(std::string, grpc_error*)> cb) {
97
96
  struct SliceWrapper {
98
97
  ~SliceWrapper() { grpc_slice_unref_internal(slice); }
@@ -26,16 +26,15 @@ namespace grpc_core {
26
26
  class FileExternalAccountCredentials final : public ExternalAccountCredentials {
27
27
  public:
28
28
  static RefCountedPtr<FileExternalAccountCredentials> Create(
29
- ExternalAccountCredentialsOptions options,
30
- std::vector<std::string> scopes, grpc_error** error);
29
+ Options options, std::vector<std::string> scopes, grpc_error** error);
31
30
 
32
- FileExternalAccountCredentials(ExternalAccountCredentialsOptions options,
31
+ FileExternalAccountCredentials(Options options,
33
32
  std::vector<std::string> scopes,
34
33
  grpc_error** error);
35
34
 
36
35
  private:
37
36
  void RetrieveSubjectToken(
38
- HTTPRequestContext* ctx, const ExternalAccountCredentialsOptions& options,
37
+ HTTPRequestContext* ctx, const Options& options,
39
38
  std::function<void(std::string, grpc_error*)> cb) override;
40
39
 
41
40
  // Fields of credential source
@@ -17,12 +17,14 @@
17
17
 
18
18
  #include "src/core/lib/security/credentials/external/url_external_account_credentials.h"
19
19
 
20
+ #include "absl/strings/str_cat.h"
20
21
  #include "absl/strings/str_format.h"
22
+ #include "absl/strings/str_split.h"
21
23
 
22
24
  namespace grpc_core {
23
25
 
24
26
  RefCountedPtr<UrlExternalAccountCredentials>
25
- UrlExternalAccountCredentials::Create(ExternalAccountCredentialsOptions options,
27
+ UrlExternalAccountCredentials::Create(Options options,
26
28
  std::vector<std::string> scopes,
27
29
  grpc_error** error) {
28
30
  auto creds = MakeRefCounted<UrlExternalAccountCredentials>(
@@ -35,8 +37,7 @@ UrlExternalAccountCredentials::Create(ExternalAccountCredentialsOptions options,
35
37
  }
36
38
 
37
39
  UrlExternalAccountCredentials::UrlExternalAccountCredentials(
38
- ExternalAccountCredentialsOptions options, std::vector<std::string> scopes,
39
- grpc_error** error)
40
+ Options options, std::vector<std::string> scopes, grpc_error** error)
40
41
  : ExternalAccountCredentials(options, std::move(scopes)) {
41
42
  auto it = options.credential_source.object_value().find("url");
42
43
  if (it == options.credential_source.object_value().end()) {
@@ -48,13 +49,19 @@ UrlExternalAccountCredentials::UrlExternalAccountCredentials(
48
49
  GRPC_ERROR_CREATE_FROM_STATIC_STRING("url field must be a string.");
49
50
  return;
50
51
  }
51
- grpc_uri* url = grpc_uri_parse(it->second.string_value(), false);
52
- if (url == nullptr) {
53
- *error =
54
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Invalid credential source url.");
52
+ absl::StatusOr<URI> tmp_url = URI::Parse(it->second.string_value());
53
+ if (!tmp_url.ok()) {
54
+ *error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
55
+ absl::StrFormat("Invalid credential source url. Error: %s",
56
+ tmp_url.status().ToString())
57
+ .c_str());
55
58
  return;
56
59
  }
57
- url_ = url;
60
+ url_ = *tmp_url;
61
+ // The url must follow the format of <scheme>://<authority>/<path>
62
+ std::vector<absl::string_view> v =
63
+ absl::StrSplit(it->second.string_value(), absl::MaxSplits('/', 3));
64
+ url_full_path_ = absl::StrCat("/", v[3]);
58
65
  it = options.credential_source.object_value().find("headers");
59
66
  if (it != options.credential_source.object_value().end()) {
60
67
  if (it->second.type() != Json::Type::OBJECT) {
@@ -104,12 +111,8 @@ UrlExternalAccountCredentials::UrlExternalAccountCredentials(
104
111
  }
105
112
  }
106
113
 
107
- UrlExternalAccountCredentials::~UrlExternalAccountCredentials() {
108
- grpc_uri_destroy(url_);
109
- }
110
-
111
114
  void UrlExternalAccountCredentials::RetrieveSubjectToken(
112
- HTTPRequestContext* ctx, const ExternalAccountCredentialsOptions& options,
115
+ HTTPRequestContext* ctx, const Options& options,
113
116
  std::function<void(std::string, grpc_error*)> cb) {
114
117
  if (ctx == nullptr) {
115
118
  FinishRetrieveSubjectToken(
@@ -122,8 +125,8 @@ void UrlExternalAccountCredentials::RetrieveSubjectToken(
122
125
  cb_ = cb;
123
126
  grpc_httpcli_request request;
124
127
  memset(&request, 0, sizeof(grpc_httpcli_request));
125
- request.host = const_cast<char*>(url_->authority);
126
- request.http.path = gpr_strdup(url_->path);
128
+ request.host = const_cast<char*>(url_.authority().c_str());
129
+ request.http.path = gpr_strdup(url_full_path_.c_str());
127
130
  grpc_http_header* headers = nullptr;
128
131
  request.http.hdr_count = headers_.size();
129
132
  headers = static_cast<grpc_http_header*>(
@@ -135,9 +138,8 @@ void UrlExternalAccountCredentials::RetrieveSubjectToken(
135
138
  ++i;
136
139
  }
137
140
  request.http.hdrs = headers;
138
- request.handshaker = (strcmp(url_->scheme, "https") == 0)
139
- ? &grpc_httpcli_ssl
140
- : &grpc_httpcli_plaintext;
141
+ request.handshaker =
142
+ url_.scheme() == "https" ? &grpc_httpcli_ssl : &grpc_httpcli_plaintext;
141
143
  grpc_resource_quota* resource_quota =
142
144
  grpc_resource_quota_create("external_account_credentials");
143
145
  grpc_http_response_destroy(&ctx_->response);
@@ -26,17 +26,15 @@ namespace grpc_core {
26
26
  class UrlExternalAccountCredentials final : public ExternalAccountCredentials {
27
27
  public:
28
28
  static RefCountedPtr<UrlExternalAccountCredentials> Create(
29
- ExternalAccountCredentialsOptions options,
30
- std::vector<std::string> scopes, grpc_error** error);
29
+ Options options, std::vector<std::string> scopes, grpc_error** error);
31
30
 
32
- UrlExternalAccountCredentials(ExternalAccountCredentialsOptions options,
31
+ UrlExternalAccountCredentials(Options options,
33
32
  std::vector<std::string> scopes,
34
33
  grpc_error** error);
35
- ~UrlExternalAccountCredentials() override;
36
34
 
37
35
  private:
38
36
  void RetrieveSubjectToken(
39
- HTTPRequestContext* ctx, const ExternalAccountCredentialsOptions& options,
37
+ HTTPRequestContext* ctx, const Options& options,
40
38
  std::function<void(std::string, grpc_error*)> cb) override;
41
39
 
42
40
  static void OnRetrieveSubjectToken(void* arg, grpc_error* error);
@@ -45,7 +43,8 @@ class UrlExternalAccountCredentials final : public ExternalAccountCredentials {
45
43
  void FinishRetrieveSubjectToken(std::string subject_token, grpc_error* error);
46
44
 
47
45
  // Fields of credential source
48
- grpc_uri* url_ = nullptr;
46
+ URI url_;
47
+ std::string url_full_path_;
49
48
  std::map<std::string, std::string> headers_;
50
49
  std::string format_type_;
51
50
  std::string format_subject_token_field_name_;
@@ -76,7 +76,8 @@ grpc_fake_transport_security_server_credentials_create() {
76
76
 
77
77
  grpc_arg grpc_fake_transport_expected_targets_arg(char* expected_targets) {
78
78
  return grpc_channel_arg_string_create(
79
- (char*)GRPC_ARG_FAKE_SECURITY_EXPECTED_TARGETS, expected_targets);
79
+ const_cast<char*>(GRPC_ARG_FAKE_SECURITY_EXPECTED_TARGETS),
80
+ expected_targets);
80
81
  }
81
82
 
82
83
  const char* grpc_fake_transport_get_expected_targets(
@@ -27,6 +27,7 @@
27
27
  #include <grpc/support/sync.h>
28
28
 
29
29
  #include "src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.h"
30
+ #include "src/core/ext/filters/client_channel/lb_policy/xds/xds_channel_args.h"
30
31
  #include "src/core/lib/channel/channel_args.h"
31
32
  #include "src/core/lib/gpr/env.h"
32
33
  #include "src/core/lib/gpr/string.h"
@@ -37,6 +38,7 @@
37
38
  #include "src/core/lib/iomgr/polling_entity.h"
38
39
  #include "src/core/lib/security/credentials/alts/alts_credentials.h"
39
40
  #include "src/core/lib/security/credentials/alts/check_gcp_environment.h"
41
+ #include "src/core/lib/security/credentials/external/external_account_credentials.h"
40
42
  #include "src/core/lib/security/credentials/google_default/google_default_credentials.h"
41
43
  #include "src/core/lib/security/credentials/jwt/jwt_credentials.h"
42
44
  #include "src/core/lib/security/credentials/oauth2/oauth2_credentials.h"
@@ -80,21 +82,22 @@ grpc_google_default_channel_credentials::create_security_connector(
80
82
  grpc_core::RefCountedPtr<grpc_call_credentials> call_creds,
81
83
  const char* target, const grpc_channel_args* args,
82
84
  grpc_channel_args** new_args) {
83
- bool is_grpclb_load_balancer = grpc_channel_arg_get_bool(
84
- grpc_channel_args_find(args, GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER),
85
- false);
86
- bool is_backend_from_grpclb_load_balancer = grpc_channel_arg_get_bool(
87
- grpc_channel_args_find(
88
- args, GRPC_ARG_ADDRESS_IS_BACKEND_FROM_GRPCLB_LOAD_BALANCER),
89
- false);
90
- bool use_alts =
91
- is_grpclb_load_balancer || is_backend_from_grpclb_load_balancer;
85
+ const bool is_grpclb_load_balancer = grpc_channel_args_find_bool(
86
+ args, GRPC_ARG_ADDRESS_IS_GRPCLB_LOAD_BALANCER, false);
87
+ const bool is_backend_from_grpclb_load_balancer = grpc_channel_args_find_bool(
88
+ args, GRPC_ARG_ADDRESS_IS_BACKEND_FROM_GRPCLB_LOAD_BALANCER, false);
89
+ const char* xds_cluster =
90
+ grpc_channel_args_find_string(args, GRPC_ARG_XDS_CLUSTER_NAME);
91
+ const bool is_xds_non_cfe_cluster =
92
+ xds_cluster != nullptr && strcmp(xds_cluster, "google_cfe") != 0;
93
+ const bool use_alts = is_grpclb_load_balancer ||
94
+ is_backend_from_grpclb_load_balancer ||
95
+ is_xds_non_cfe_cluster;
92
96
  /* Return failure if ALTS is selected but not running on GCE. */
93
97
  if (use_alts && alts_creds_ == nullptr) {
94
98
  gpr_log(GPR_ERROR, "ALTS is selected, but not running on GCE.");
95
99
  return nullptr;
96
100
  }
97
-
98
101
  grpc_core::RefCountedPtr<grpc_channel_security_connector> sc =
99
102
  use_alts ? alts_creds_->create_security_connector(call_creds, target,
100
103
  args, new_args)
@@ -175,8 +178,8 @@ static int is_metadata_server_reachable() {
175
178
  detector.is_done = 0;
176
179
  detector.success = 0;
177
180
  memset(&request, 0, sizeof(grpc_httpcli_request));
178
- request.host = (char*)GRPC_COMPUTE_ENGINE_DETECTION_HOST;
179
- request.http.path = (char*)"/";
181
+ request.host = const_cast<char*>(GRPC_COMPUTE_ENGINE_DETECTION_HOST);
182
+ request.http.path = const_cast<char*>("/");
180
183
  grpc_httpcli_context_init(&context);
181
184
  grpc_resource_quota* resource_quota =
182
185
  grpc_resource_quota_create("google_default_credentials");
@@ -267,6 +270,9 @@ static grpc_error* create_default_creds_from_path(
267
270
  goto end;
268
271
  }
269
272
 
273
+ /* Finally try an external account credentials.*/
274
+ result = grpc_core::ExternalAccountCredentials::Create(json, {}, &error);
275
+
270
276
  end:
271
277
  GPR_ASSERT((result == nullptr) + (error == GRPC_ERROR_NONE) == 1);
272
278
  grpc_slice_unref_internal(creds_data);
@@ -30,12 +30,10 @@ constexpr char kCredentialsTypeInsecure[] = "insecure";
30
30
 
31
31
  class InsecureCredentials final : public grpc_channel_credentials {
32
32
  public:
33
- explicit InsecureCredentials()
34
- : grpc_channel_credentials(kCredentialsTypeInsecure) {}
33
+ InsecureCredentials() : grpc_channel_credentials(kCredentialsTypeInsecure) {}
35
34
 
36
- grpc_core::RefCountedPtr<grpc_channel_security_connector>
37
- create_security_connector(
38
- grpc_core::RefCountedPtr<grpc_call_credentials> call_creds,
35
+ RefCountedPtr<grpc_channel_security_connector> create_security_connector(
36
+ RefCountedPtr<grpc_call_credentials> call_creds,
39
37
  const char* /* target_name */, const grpc_channel_args* /* args */,
40
38
  grpc_channel_args** /* new_args */) override {
41
39
  return MakeRefCounted<InsecureChannelSecurityConnector>(
@@ -43,9 +41,24 @@ class InsecureCredentials final : public grpc_channel_credentials {
43
41
  }
44
42
  };
45
43
 
44
+ class InsecureServerCredentials final : public grpc_server_credentials {
45
+ public:
46
+ InsecureServerCredentials()
47
+ : grpc_server_credentials(kCredentialsTypeInsecure) {}
48
+
49
+ RefCountedPtr<grpc_server_security_connector> create_security_connector()
50
+ override {
51
+ return MakeRefCounted<InsecureServerSecurityConnector>(Ref());
52
+ }
53
+ };
54
+
46
55
  } // namespace
47
56
  } // namespace grpc_core
48
57
 
49
58
  grpc_channel_credentials* grpc_insecure_credentials_create() {
50
59
  return new grpc_core::InsecureCredentials();
51
60
  }
61
+
62
+ grpc_server_credentials* grpc_insecure_server_credentials_create() {
63
+ return new grpc_core::InsecureServerCredentials();
64
+ }
@@ -112,7 +112,7 @@ grpc_auth_json_key grpc_auth_json_key_create_from_json(const Json& json) {
112
112
  goto end;
113
113
  }
114
114
  result.private_key =
115
- PEM_read_bio_RSAPrivateKey(bio, nullptr, nullptr, (void*)"");
115
+ PEM_read_bio_RSAPrivateKey(bio, nullptr, nullptr, const_cast<char*>(""));
116
116
  if (result.private_key == nullptr) {
117
117
  gpr_log(GPR_ERROR, "Could not deserialize private key.");
118
118
  goto end;
@@ -696,7 +696,7 @@ static void on_openid_config_retrieved(void* user_data, grpc_error* /*error*/) {
696
696
  req.host = gpr_strdup(jwks_uri);
697
697
  req.http.path = const_cast<char*>(strchr(jwks_uri, '/'));
698
698
  if (req.http.path == nullptr) {
699
- req.http.path = (char*)"";
699
+ req.http.path = const_cast<char*>("");
700
700
  } else {
701
701
  *(req.host + (req.http.path - jwks_uri)) = '\0';
702
702
  }
@@ -757,8 +757,8 @@ const char* grpc_jwt_issuer_email_domain(const char* issuer) {
757
757
  if (dot == nullptr || dot == email_domain) return email_domain;
758
758
  GPR_ASSERT(dot > email_domain);
759
759
  /* There may be a subdomain, we just want the domain. */
760
- dot = static_cast<const char*>(gpr_memrchr(
761
- (void*)email_domain, '.', static_cast<size_t>(dot - email_domain)));
760
+ dot = static_cast<const char*>(
761
+ gpr_memrchr(email_domain, '.', static_cast<size_t>(dot - email_domain)));
762
762
  if (dot == nullptr) return email_domain;
763
763
  return dot + 1;
764
764
  }
@@ -386,8 +386,9 @@ class grpc_compute_engine_token_fetcher_credentials
386
386
  const_cast<char*>("Google")};
387
387
  grpc_httpcli_request request;
388
388
  memset(&request, 0, sizeof(grpc_httpcli_request));
389
- request.host = (char*)GRPC_COMPUTE_ENGINE_METADATA_HOST;
390
- request.http.path = (char*)GRPC_COMPUTE_ENGINE_METADATA_TOKEN_PATH;
389
+ request.host = const_cast<char*>(GRPC_COMPUTE_ENGINE_METADATA_HOST);
390
+ request.http.path =
391
+ const_cast<char*>(GRPC_COMPUTE_ENGINE_METADATA_TOKEN_PATH);
391
392
  request.http.hdr_count = 1;
392
393
  request.http.hdrs = &header;
393
394
  /* TODO(ctiller): Carry the resource_quota in ctx and share it with the host
@@ -445,8 +446,8 @@ void grpc_google_refresh_token_credentials::fetch_oauth2(
445
446
  GRPC_REFRESH_TOKEN_POST_BODY_FORMAT_STRING, refresh_token_.client_id,
446
447
  refresh_token_.client_secret, refresh_token_.refresh_token);
447
448
  memset(&request, 0, sizeof(grpc_httpcli_request));
448
- request.host = (char*)GRPC_GOOGLE_OAUTH2_SERVICE_HOST;
449
- request.http.path = (char*)GRPC_GOOGLE_OAUTH2_SERVICE_TOKEN_PATH;
449
+ request.host = const_cast<char*>(GRPC_GOOGLE_OAUTH2_SERVICE_HOST);
450
+ request.http.path = const_cast<char*>(GRPC_GOOGLE_OAUTH2_SERVICE_TOKEN_PATH);
450
451
  request.http.hdr_count = 1;
451
452
  request.http.hdrs = &header;
452
453
  request.handshaker = &grpc_httpcli_ssl;
@@ -537,9 +538,9 @@ grpc_error* LoadTokenFile(const char* path, gpr_slice* token) {
537
538
  class StsTokenFetcherCredentials
538
539
  : public grpc_oauth2_token_fetcher_credentials {
539
540
  public:
540
- StsTokenFetcherCredentials(grpc_uri* sts_url, // Ownership transferred.
541
+ StsTokenFetcherCredentials(URI sts_url,
541
542
  const grpc_sts_credentials_options* options)
542
- : sts_url_(sts_url),
543
+ : sts_url_(std::move(sts_url)),
543
544
  resource_(gpr_strdup(options->resource)),
544
545
  audience_(gpr_strdup(options->audience)),
545
546
  scope_(gpr_strdup(options->scope)),
@@ -549,12 +550,10 @@ class StsTokenFetcherCredentials
549
550
  actor_token_path_(gpr_strdup(options->actor_token_path)),
550
551
  actor_token_type_(gpr_strdup(options->actor_token_type)) {}
551
552
 
552
- ~StsTokenFetcherCredentials() override { grpc_uri_destroy(sts_url_); }
553
-
554
553
  std::string debug_string() override {
555
554
  return absl::StrFormat(
556
- "StsTokenFetcherCredentials{Path:%s,Authority:%s,%s}", sts_url_->path,
557
- sts_url_->authority,
555
+ "StsTokenFetcherCredentials{Path:%s,Authority:%s,%s}", sts_url_.path(),
556
+ sts_url_.authority(),
558
557
  grpc_oauth2_token_fetcher_credentials::debug_string());
559
558
  }
560
559
 
@@ -577,11 +576,11 @@ class StsTokenFetcherCredentials
577
576
  const_cast<char*>("application/x-www-form-urlencoded")};
578
577
  grpc_httpcli_request request;
579
578
  memset(&request, 0, sizeof(grpc_httpcli_request));
580
- request.host = (char*)sts_url_->authority;
581
- request.http.path = (char*)sts_url_->path;
579
+ request.host = const_cast<char*>(sts_url_.authority().c_str());
580
+ request.http.path = const_cast<char*>(sts_url_.path().c_str());
582
581
  request.http.hdr_count = 1;
583
582
  request.http.hdrs = &header;
584
- request.handshaker = (strcmp(sts_url_->scheme, "https") == 0)
583
+ request.handshaker = (sts_url_.scheme() == "https")
585
584
  ? &grpc_httpcli_ssl
586
585
  : &grpc_httpcli_plaintext;
587
586
  /* TODO(ctiller): Carry the resource_quota in ctx and share it with the host
@@ -641,7 +640,7 @@ class StsTokenFetcherCredentials
641
640
  return cleanup();
642
641
  }
643
642
 
644
- grpc_uri* sts_url_;
643
+ URI sts_url_;
645
644
  grpc_closure http_post_cb_closure_;
646
645
  grpc_core::UniquePtr<char> resource_;
647
646
  grpc_core::UniquePtr<char> audience_;
@@ -655,26 +654,21 @@ class StsTokenFetcherCredentials
655
654
 
656
655
  } // namespace
657
656
 
658
- grpc_error* ValidateStsCredentialsOptions(
659
- const grpc_sts_credentials_options* options, grpc_uri** sts_url_out) {
660
- struct GrpcUriDeleter {
661
- void operator()(grpc_uri* uri) { grpc_uri_destroy(uri); }
662
- };
663
- *sts_url_out = nullptr;
657
+ absl::StatusOr<URI> ValidateStsCredentialsOptions(
658
+ const grpc_sts_credentials_options* options) {
664
659
  absl::InlinedVector<grpc_error*, 3> error_list;
665
- std::unique_ptr<grpc_uri, GrpcUriDeleter> sts_url(
666
- options->token_exchange_service_uri != nullptr
667
- ? grpc_uri_parse(options->token_exchange_service_uri, false)
668
- : nullptr);
669
- if (sts_url == nullptr) {
660
+ absl::StatusOr<URI> sts_url =
661
+ URI::Parse(options->token_exchange_service_uri == nullptr
662
+ ? ""
663
+ : options->token_exchange_service_uri);
664
+ if (!sts_url.ok()) {
665
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_COPIED_STRING(
666
+ absl::StrFormat("Invalid or missing STS endpoint URL. Error: %s",
667
+ sts_url.status().ToString())
668
+ .c_str()));
669
+ } else if (sts_url->scheme() != "https" && sts_url->scheme() != "http") {
670
670
  error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
671
- "Invalid or missing STS endpoint URL"));
672
- } else {
673
- if (strcmp(sts_url->scheme, "https") != 0 &&
674
- strcmp(sts_url->scheme, "http") != 0) {
675
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
676
- "Invalid URI scheme, must be https to http."));
677
- }
671
+ "Invalid URI scheme, must be https to http."));
678
672
  }
679
673
  if (options->subject_token_path == nullptr ||
680
674
  strlen(options->subject_token_path) == 0) {
@@ -687,12 +681,13 @@ grpc_error* ValidateStsCredentialsOptions(
687
681
  "subject_token_type needs to be specified"));
688
682
  }
689
683
  if (error_list.empty()) {
690
- *sts_url_out = sts_url.release();
691
- return GRPC_ERROR_NONE;
692
- } else {
693
- return GRPC_ERROR_CREATE_FROM_VECTOR("Invalid STS Credentials Options",
694
- &error_list);
684
+ return sts_url;
695
685
  }
686
+ auto grpc_error_vec = GRPC_ERROR_CREATE_FROM_VECTOR(
687
+ "Invalid STS Credentials Options", &error_list);
688
+ auto retval = absl::InvalidArgumentError(grpc_error_string(grpc_error_vec));
689
+ GRPC_ERROR_UNREF(grpc_error_vec);
690
+ return retval;
696
691
  }
697
692
 
698
693
  } // namespace grpc_core
@@ -700,17 +695,15 @@ grpc_error* ValidateStsCredentialsOptions(
700
695
  grpc_call_credentials* grpc_sts_credentials_create(
701
696
  const grpc_sts_credentials_options* options, void* reserved) {
702
697
  GPR_ASSERT(reserved == nullptr);
703
- grpc_uri* sts_url;
704
- grpc_error* error =
705
- grpc_core::ValidateStsCredentialsOptions(options, &sts_url);
706
- if (error != GRPC_ERROR_NONE) {
698
+ absl::StatusOr<grpc_core::URI> sts_url =
699
+ grpc_core::ValidateStsCredentialsOptions(options);
700
+ if (!sts_url.ok()) {
707
701
  gpr_log(GPR_ERROR, "STS Credentials creation failed. Error: %s.",
708
- grpc_error_string(error));
709
- GRPC_ERROR_UNREF(error);
702
+ sts_url.status().ToString().c_str());
710
703
  return nullptr;
711
704
  }
712
705
  return grpc_core::MakeRefCounted<grpc_core::StsTokenFetcherCredentials>(
713
- sts_url, options)
706
+ std::move(*sts_url), options)
714
707
  .release();
715
708
  }
716
709