grpc 1.33.0.pre1 → 1.34.0

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

Potentially problematic release.


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

Files changed (533) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +342 -134
  3. data/include/grpc/grpc.h +1 -2
  4. data/include/grpc/grpc_security.h +149 -172
  5. data/include/grpc/impl/codegen/grpc_types.h +9 -2
  6. data/include/grpc/impl/codegen/port_platform.h +22 -55
  7. data/src/core/ext/filters/client_channel/client_channel.cc +11 -34
  8. data/src/core/ext/filters/client_channel/config_selector.h +2 -3
  9. data/src/core/ext/filters/client_channel/health/health_check_client.cc +4 -1
  10. data/src/core/ext/filters/client_channel/health/health_check_client.h +2 -2
  11. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +1 -1
  12. data/src/core/ext/filters/client_channel/lb_policy.cc +5 -1
  13. data/src/core/ext/filters/client_channel/lb_policy.h +3 -3
  14. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +1 -1
  15. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.h +1 -1
  16. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +80 -71
  17. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +3 -1
  18. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +2 -2
  19. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +47 -17
  20. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +2 -2
  21. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +8 -5
  22. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +3 -3
  23. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +1 -1
  24. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +16 -243
  25. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +53 -17
  26. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +809 -0
  27. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +20 -25
  28. data/src/core/ext/filters/client_channel/resolver.cc +3 -1
  29. data/src/core/ext/filters/client_channel/resolver.h +4 -1
  30. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +1 -1
  31. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -1
  32. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +1 -1
  33. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -1
  34. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +1 -1
  35. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +20 -0
  36. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +66 -7
  37. data/src/core/ext/filters/client_channel/resolver_registry.cc +4 -4
  38. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +13 -25
  39. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +1 -1
  40. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +2 -2
  41. data/src/core/ext/filters/client_channel/retry_throttle.h +1 -1
  42. data/src/core/ext/filters/client_channel/server_address.h +0 -4
  43. data/src/core/ext/filters/client_channel/service_config.cc +3 -1
  44. data/src/core/ext/filters/client_channel/service_config.h +1 -1
  45. data/src/core/ext/filters/client_channel/subchannel.cc +18 -15
  46. data/src/core/ext/filters/client_channel/subchannel.h +2 -2
  47. data/src/core/ext/filters/client_channel/subchannel_interface.h +7 -15
  48. data/src/core/ext/filters/client_channel/subchannel_pool_interface.h +6 -2
  49. data/src/core/ext/filters/deadline/deadline_filter.cc +83 -77
  50. data/src/core/ext/filters/deadline/deadline_filter.h +7 -11
  51. data/src/core/ext/filters/http/client/http_client_filter.cc +1 -1
  52. data/src/core/ext/filters/http/server/http_server_filter.cc +3 -3
  53. data/src/core/ext/filters/max_age/max_age_filter.cc +1 -1
  54. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +1 -1
  55. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +17 -3
  56. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +7 -7
  57. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +4 -24
  58. data/src/core/ext/transport/chttp2/transport/flow_control.h +2 -2
  59. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +2 -1
  60. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +12 -8
  61. data/src/core/ext/transport/chttp2/transport/internal.h +0 -1
  62. data/src/core/ext/transport/chttp2/transport/parsing.cc +2 -1
  63. data/src/core/ext/transport/chttp2/transport/writing.cc +1 -2
  64. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +38 -0
  65. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.h +30 -0
  66. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.c +41 -0
  67. data/src/core/ext/upbdefs-generated/envoy/annotations/resource.upbdefs.h +35 -0
  68. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +254 -0
  69. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.h +105 -0
  70. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.c +100 -0
  71. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/circuit_breaker.upbdefs.h +45 -0
  72. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +558 -0
  73. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.h +145 -0
  74. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.c +53 -0
  75. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/filter.upbdefs.h +35 -0
  76. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.c +133 -0
  77. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/outlier_detection.upbdefs.h +35 -0
  78. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.c +127 -0
  79. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/address.upbdefs.h +65 -0
  80. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.c +56 -0
  81. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/backoff.upbdefs.h +35 -0
  82. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +266 -0
  83. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +125 -0
  84. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +143 -0
  85. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.h +55 -0
  86. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.c +56 -0
  87. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/event_service_config.upbdefs.h +35 -0
  88. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.c +66 -0
  89. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/extension.upbdefs.h +40 -0
  90. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.c +263 -0
  91. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/grpc_service.upbdefs.h +100 -0
  92. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.c +233 -0
  93. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/health_check.upbdefs.h +70 -0
  94. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.c +56 -0
  95. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/http_uri.upbdefs.h +35 -0
  96. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +228 -0
  97. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +80 -0
  98. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.c +46 -0
  99. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/proxy_protocol.upbdefs.h +35 -0
  100. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.c +59 -0
  101. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/socket_option.upbdefs.h +35 -0
  102. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +55 -0
  103. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.h +35 -0
  104. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.c +110 -0
  105. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint.upbdefs.h +50 -0
  106. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.c +113 -0
  107. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/endpoint_components.upbdefs.h +50 -0
  108. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.c +146 -0
  109. data/src/core/ext/upbdefs-generated/envoy/config/endpoint/v3/load_report.upbdefs.h +55 -0
  110. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.c +50 -0
  111. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/api_listener.upbdefs.h +35 -0
  112. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +190 -0
  113. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +55 -0
  114. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +185 -0
  115. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.h +65 -0
  116. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +62 -0
  117. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.h +40 -0
  118. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +97 -0
  119. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +40 -0
  120. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +915 -0
  121. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +280 -0
  122. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.c +71 -0
  123. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/scoped_route.upbdefs.h +45 -0
  124. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.c +64 -0
  125. data/src/core/ext/upbdefs-generated/envoy/config/trace/v3/http_tracer.upbdefs.h +40 -0
  126. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +511 -0
  127. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +115 -0
  128. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.c +48 -0
  129. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/cert.upbdefs.h +30 -0
  130. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +166 -0
  131. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.h +55 -0
  132. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.c +105 -0
  133. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/secret.upbdefs.h +45 -0
  134. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +249 -0
  135. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.h +60 -0
  136. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.c +72 -0
  137. data/src/core/ext/upbdefs-generated/envoy/service/cluster/v3/cds.upbdefs.h +35 -0
  138. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.c +60 -0
  139. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/ads.upbdefs.h +35 -0
  140. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.c +152 -0
  141. data/src/core/ext/upbdefs-generated/envoy/service/discovery/v3/discovery.upbdefs.h +60 -0
  142. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.c +83 -0
  143. data/src/core/ext/upbdefs-generated/envoy/service/endpoint/v3/eds.upbdefs.h +35 -0
  144. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.c +82 -0
  145. data/src/core/ext/upbdefs-generated/envoy/service/listener/v3/lds.upbdefs.h +35 -0
  146. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.c +83 -0
  147. data/src/core/ext/upbdefs-generated/envoy/service/load_stats/v3/lrs.upbdefs.h +40 -0
  148. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.c +86 -0
  149. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/rds.upbdefs.h +35 -0
  150. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.c +74 -0
  151. data/src/core/ext/upbdefs-generated/envoy/service/route/v3/srds.upbdefs.h +35 -0
  152. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.c +64 -0
  153. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/metadata.upbdefs.h +40 -0
  154. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.c +54 -0
  155. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/number.upbdefs.h +35 -0
  156. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.c +53 -0
  157. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/path.upbdefs.h +35 -0
  158. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +73 -0
  159. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.h +45 -0
  160. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.c +72 -0
  161. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/string.upbdefs.h +40 -0
  162. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.c +81 -0
  163. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/value.upbdefs.h +45 -0
  164. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.c +92 -0
  165. data/src/core/ext/upbdefs-generated/envoy/type/metadata/v3/metadata.upbdefs.h +65 -0
  166. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.c +95 -0
  167. data/src/core/ext/upbdefs-generated/envoy/type/tracing/v3/custom_tag.upbdefs.h +55 -0
  168. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.c +34 -0
  169. data/src/core/ext/upbdefs-generated/envoy/type/v3/http.upbdefs.h +30 -0
  170. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.c +59 -0
  171. data/src/core/ext/upbdefs-generated/envoy/type/v3/percent.upbdefs.h +40 -0
  172. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.c +54 -0
  173. data/src/core/ext/upbdefs-generated/envoy/type/v3/range.upbdefs.h +45 -0
  174. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.c +47 -0
  175. data/src/core/ext/upbdefs-generated/envoy/type/v3/semantic_version.upbdefs.h +35 -0
  176. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.c +40 -0
  177. data/src/core/ext/upbdefs-generated/google/api/annotations.upbdefs.h +30 -0
  178. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.c +61 -0
  179. data/src/core/ext/upbdefs-generated/google/api/http.upbdefs.h +45 -0
  180. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.c +38 -0
  181. data/src/core/ext/upbdefs-generated/google/protobuf/any.upbdefs.h +35 -0
  182. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.c +386 -0
  183. data/src/core/ext/upbdefs-generated/google/protobuf/descriptor.upbdefs.h +165 -0
  184. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.c +39 -0
  185. data/src/core/ext/upbdefs-generated/google/protobuf/duration.upbdefs.h +35 -0
  186. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.c +37 -0
  187. data/src/core/ext/upbdefs-generated/google/protobuf/empty.upbdefs.h +35 -0
  188. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.c +65 -0
  189. data/src/core/ext/upbdefs-generated/google/protobuf/struct.upbdefs.h +50 -0
  190. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.c +39 -0
  191. data/src/core/ext/upbdefs-generated/google/protobuf/timestamp.upbdefs.h +35 -0
  192. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.c +66 -0
  193. data/src/core/ext/upbdefs-generated/google/protobuf/wrappers.upbdefs.h +75 -0
  194. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +42 -0
  195. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.h +35 -0
  196. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.c +70 -0
  197. data/src/core/ext/upbdefs-generated/udpa/annotations/migrate.upbdefs.h +45 -0
  198. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.c +56 -0
  199. data/src/core/ext/upbdefs-generated/udpa/annotations/security.upbdefs.h +35 -0
  200. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.c +33 -0
  201. data/src/core/ext/upbdefs-generated/udpa/annotations/sensitive.upbdefs.h +30 -0
  202. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.c +49 -0
  203. data/src/core/ext/upbdefs-generated/udpa/annotations/status.upbdefs.h +35 -0
  204. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.c +43 -0
  205. data/src/core/ext/upbdefs-generated/udpa/annotations/versioning.upbdefs.h +35 -0
  206. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.c +42 -0
  207. data/src/core/ext/upbdefs-generated/udpa/core/v1/authority.upbdefs.h +35 -0
  208. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.c +62 -0
  209. data/src/core/ext/upbdefs-generated/udpa/core/v1/collection_entry.upbdefs.h +40 -0
  210. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.c +45 -0
  211. data/src/core/ext/upbdefs-generated/udpa/core/v1/context_params.upbdefs.h +40 -0
  212. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.c +49 -0
  213. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource.upbdefs.h +35 -0
  214. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.c +68 -0
  215. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_locator.upbdefs.h +40 -0
  216. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.c +51 -0
  217. data/src/core/ext/upbdefs-generated/udpa/core/v1/resource_name.upbdefs.h +35 -0
  218. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +307 -0
  219. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.h +145 -0
  220. data/src/core/ext/xds/certificate_provider_factory.h +7 -5
  221. data/src/core/ext/xds/certificate_provider_store.cc +84 -0
  222. data/src/core/ext/xds/certificate_provider_store.h +65 -8
  223. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +119 -0
  224. data/src/core/ext/xds/file_watcher_certificate_provider_factory.h +72 -0
  225. data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.cc +28 -140
  226. data/src/core/ext/xds/google_mesh_ca_certificate_provider_factory.h +6 -4
  227. data/src/core/ext/xds/xds_api.cc +241 -718
  228. data/src/core/ext/xds/xds_api.h +50 -9
  229. data/src/core/ext/xds/xds_bootstrap.cc +172 -25
  230. data/src/core/ext/xds/xds_bootstrap.h +23 -7
  231. data/src/core/ext/xds/xds_certificate_provider.cc +240 -0
  232. data/src/core/ext/xds/xds_certificate_provider.h +74 -0
  233. data/src/core/ext/xds/xds_client.cc +161 -128
  234. data/src/core/ext/xds/xds_client.h +12 -11
  235. data/src/core/ext/xds/xds_client_stats.cc +41 -4
  236. data/src/core/ext/xds/xds_client_stats.h +2 -2
  237. data/src/core/lib/channel/channel_args.cc +2 -1
  238. data/src/core/lib/channel/channel_trace.cc +4 -2
  239. data/src/core/lib/channel/channelz.h +2 -2
  240. data/src/core/lib/channel/handshaker.h +2 -2
  241. data/src/core/lib/compression/compression.cc +8 -4
  242. data/src/core/lib/compression/compression_internal.cc +10 -5
  243. data/src/core/lib/compression/compression_internal.h +2 -1
  244. data/src/core/lib/compression/stream_compression_identity.cc +1 -3
  245. data/src/core/lib/debug/stats_data.cc +1 -0
  246. data/src/core/lib/gpr/cpu_iphone.cc +10 -2
  247. data/src/core/lib/gpr/log_linux.cc +17 -3
  248. data/src/core/lib/gpr/log_posix.cc +13 -1
  249. data/src/core/lib/gpr/log_windows.cc +16 -4
  250. data/src/core/lib/gpr/murmur_hash.cc +1 -1
  251. data/src/core/lib/gpr/string.cc +1 -1
  252. data/src/core/lib/gpr/time_precise.cc +3 -2
  253. data/src/core/lib/gpr/tls.h +4 -0
  254. data/src/core/lib/gpr/tls_msvc.h +2 -0
  255. data/src/core/lib/gpr/tls_stdcpp.h +48 -0
  256. data/src/core/lib/gpr/useful.h +5 -4
  257. data/src/core/lib/gprpp/dual_ref_counted.h +44 -49
  258. data/src/core/lib/gprpp/examine_stack.cc +43 -0
  259. data/src/core/lib/gprpp/examine_stack.h +46 -0
  260. data/src/core/lib/gprpp/fork.cc +2 -2
  261. data/src/core/lib/gprpp/manual_constructor.h +1 -1
  262. data/src/core/lib/gprpp/orphanable.h +4 -8
  263. data/src/core/lib/gprpp/ref_counted.h +40 -46
  264. data/src/core/lib/gprpp/ref_counted_ptr.h +9 -11
  265. data/src/core/lib/{security/authorization/mock_cel/statusor.h → gprpp/stat.h} +13 -25
  266. data/src/core/lib/gprpp/stat_posix.cc +49 -0
  267. data/src/core/lib/gprpp/stat_windows.cc +48 -0
  268. data/src/core/lib/gprpp/thd.h +2 -2
  269. data/src/core/lib/gprpp/thd_posix.cc +36 -36
  270. data/src/core/lib/http/parser.cc +46 -25
  271. data/src/core/lib/iomgr/error.cc +2 -1
  272. data/src/core/lib/iomgr/ev_epollex_linux.cc +8 -4
  273. data/src/core/lib/iomgr/exec_ctx.cc +1 -1
  274. data/src/core/lib/iomgr/executor/mpmcqueue.h +5 -5
  275. data/src/core/lib/iomgr/executor/threadpool.h +3 -3
  276. data/src/core/lib/iomgr/parse_address.cc +84 -6
  277. data/src/core/lib/iomgr/parse_address.h +20 -0
  278. data/src/core/lib/iomgr/poller/eventmanager_libuv.cc +2 -1
  279. data/src/core/lib/iomgr/python_util.h +3 -3
  280. data/src/core/lib/iomgr/resolve_address_posix.cc +1 -5
  281. data/src/core/lib/iomgr/tcp_posix.cc +3 -2
  282. data/src/core/lib/iomgr/timer_custom.cc +2 -2
  283. data/src/core/lib/iomgr/unix_sockets_posix.cc +27 -15
  284. data/src/core/lib/iomgr/unix_sockets_posix.h +5 -0
  285. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +7 -0
  286. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +2 -2
  287. data/src/core/lib/json/json.h +2 -2
  288. data/src/core/lib/json/json_reader.cc +8 -4
  289. data/src/core/lib/json/json_util.h +167 -0
  290. data/src/core/lib/json/json_writer.cc +2 -1
  291. data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +3 -1
  292. data/src/core/lib/security/authorization/mock_cel/cel_expression.h +5 -4
  293. data/src/core/lib/security/authorization/mock_cel/cel_value.h +4 -0
  294. data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +6 -6
  295. data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +10 -9
  296. data/src/core/lib/security/context/security_context.h +3 -1
  297. data/src/core/lib/security/credentials/credentials.cc +1 -1
  298. data/src/core/lib/security/credentials/credentials.h +3 -3
  299. data/src/core/lib/security/credentials/external/aws_request_signer.cc +208 -0
  300. data/src/core/lib/security/credentials/external/aws_request_signer.h +73 -0
  301. data/src/core/lib/security/credentials/external/external_account_credentials.cc +311 -0
  302. data/src/core/lib/security/credentials/external/external_account_credentials.h +118 -0
  303. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +136 -0
  304. data/src/core/lib/security/credentials/external/file_external_account_credentials.h +49 -0
  305. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +211 -0
  306. data/src/core/lib/security/credentials/external/url_external_account_credentials.h +59 -0
  307. data/src/core/lib/security/credentials/insecure/insecure_credentials.cc +51 -0
  308. data/src/core/lib/security/credentials/jwt/json_token.cc +5 -2
  309. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +4 -3
  310. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -1
  311. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +2 -2
  312. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +35 -5
  313. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +12 -8
  314. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +78 -0
  315. data/src/core/lib/security/{certificate_provider.h → credentials/tls/grpc_tls_certificate_provider.h} +32 -18
  316. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +77 -149
  317. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +58 -187
  318. data/src/core/lib/security/credentials/tls/tls_credentials.cc +16 -12
  319. data/src/core/lib/security/credentials/tls/tls_credentials.h +2 -2
  320. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +2 -2
  321. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +88 -0
  322. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +70 -0
  323. data/src/core/lib/security/security_connector/load_system_roots.h +4 -0
  324. data/src/core/lib/security/security_connector/load_system_roots_linux.h +2 -0
  325. data/src/core/lib/security/security_connector/local/local_security_connector.cc +2 -2
  326. data/src/core/lib/security/security_connector/security_connector.cc +1 -1
  327. data/src/core/lib/security/security_connector/security_connector.h +4 -2
  328. data/src/core/lib/security/security_connector/ssl_utils.h +4 -2
  329. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +293 -275
  330. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +106 -61
  331. data/src/core/lib/security/transport/security_handshaker.cc +1 -1
  332. data/src/core/lib/security/transport/server_auth_filter.cc +2 -1
  333. data/src/core/lib/security/util/json_util.h +1 -0
  334. data/src/core/lib/slice/slice.cc +7 -4
  335. data/src/core/lib/slice/slice_buffer.cc +2 -1
  336. data/src/core/lib/slice/slice_intern.cc +2 -2
  337. data/src/core/lib/surface/call.cc +9 -8
  338. data/src/core/lib/surface/completion_queue.cc +7 -6
  339. data/src/core/lib/surface/server.cc +4 -2
  340. data/src/core/lib/surface/server.h +2 -2
  341. data/src/core/lib/surface/validate_metadata.h +3 -0
  342. data/src/core/lib/surface/version.cc +2 -2
  343. data/src/core/lib/transport/authority_override.h +2 -0
  344. data/src/core/lib/transport/bdp_estimator.cc +1 -1
  345. data/src/core/lib/transport/byte_stream.h +3 -3
  346. data/src/core/lib/transport/connectivity_state.h +3 -3
  347. data/src/core/lib/transport/metadata.h +2 -2
  348. data/src/core/lib/transport/timeout_encoding.cc +4 -4
  349. data/src/core/lib/transport/transport.cc +5 -3
  350. data/src/core/lib/transport/transport.h +1 -1
  351. data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -4
  352. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +4 -3
  353. data/src/core/tsi/fake_transport_security.cc +1 -0
  354. data/src/core/tsi/local_transport_security.cc +5 -1
  355. data/src/core/tsi/local_transport_security.h +6 -7
  356. data/src/core/tsi/ssl/session_cache/ssl_session.h +3 -0
  357. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +4 -1
  358. data/src/core/tsi/ssl_transport_security.cc +14 -7
  359. data/src/core/tsi/ssl_transport_security.h +3 -0
  360. data/src/core/tsi/transport_security.cc +4 -2
  361. data/src/ruby/ext/grpc/extconf.rb +1 -1
  362. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +22 -14
  363. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +36 -24
  364. data/src/ruby/lib/grpc/version.rb +1 -1
  365. data/third_party/abseil-cpp/absl/algorithm/container.h +59 -22
  366. data/third_party/abseil-cpp/absl/base/attributes.h +99 -38
  367. data/third_party/abseil-cpp/absl/base/call_once.h +1 -1
  368. data/third_party/abseil-cpp/absl/base/casts.h +9 -6
  369. data/third_party/abseil-cpp/absl/base/config.h +60 -17
  370. data/third_party/abseil-cpp/absl/base/dynamic_annotations.h +428 -335
  371. data/third_party/abseil-cpp/absl/base/internal/bits.h +17 -16
  372. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +5 -0
  373. data/third_party/abseil-cpp/absl/base/internal/dynamic_annotations.h +398 -0
  374. data/third_party/abseil-cpp/absl/base/internal/invoke.h +4 -4
  375. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +1 -1
  376. data/third_party/abseil-cpp/absl/base/internal/low_level_scheduling.h +29 -1
  377. data/third_party/abseil-cpp/absl/base/internal/raw_logging.cc +2 -2
  378. data/third_party/abseil-cpp/absl/base/internal/raw_logging.h +7 -5
  379. data/third_party/abseil-cpp/absl/base/internal/spinlock.cc +25 -38
  380. data/third_party/abseil-cpp/absl/base/internal/spinlock.h +19 -25
  381. data/third_party/abseil-cpp/absl/base/internal/spinlock_linux.inc +8 -0
  382. data/third_party/abseil-cpp/absl/base/internal/sysinfo.cc +28 -5
  383. data/third_party/abseil-cpp/absl/base/internal/sysinfo.h +8 -0
  384. data/third_party/abseil-cpp/absl/base/internal/tsan_mutex_interface.h +3 -1
  385. data/third_party/abseil-cpp/absl/base/internal/unaligned_access.h +2 -2
  386. data/third_party/abseil-cpp/absl/base/internal/unscaledcycleclock.h +3 -3
  387. data/third_party/abseil-cpp/absl/base/macros.h +36 -109
  388. data/third_party/abseil-cpp/absl/base/optimization.h +61 -1
  389. data/third_party/abseil-cpp/absl/base/options.h +31 -4
  390. data/third_party/abseil-cpp/absl/base/policy_checks.h +1 -1
  391. data/third_party/abseil-cpp/absl/base/thread_annotations.h +94 -39
  392. data/third_party/abseil-cpp/absl/container/fixed_array.h +42 -25
  393. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +2 -1
  394. data/third_party/abseil-cpp/absl/container/inlined_vector.h +33 -36
  395. data/third_party/abseil-cpp/absl/container/internal/common.h +6 -2
  396. data/third_party/abseil-cpp/absl/container/internal/compressed_tuple.h +33 -8
  397. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +49 -29
  398. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +15 -0
  399. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +24 -7
  400. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +2 -1
  401. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +35 -11
  402. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +10 -9
  403. data/third_party/abseil-cpp/absl/container/internal/layout.h +7 -5
  404. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +55 -34
  405. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +5 -4
  406. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +66 -16
  407. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +4 -0
  408. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +13 -4
  409. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +43 -24
  410. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +12 -3
  411. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +10 -2
  412. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +22 -1
  413. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +0 -21
  414. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +12 -1
  415. data/third_party/abseil-cpp/absl/debugging/symbolize_darwin.inc +101 -0
  416. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +100 -20
  417. data/third_party/abseil-cpp/absl/functional/bind_front.h +184 -0
  418. data/third_party/abseil-cpp/absl/functional/function_ref.h +1 -1
  419. data/third_party/abseil-cpp/absl/functional/internal/front_binder.h +95 -0
  420. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +2 -2
  421. data/third_party/abseil-cpp/absl/hash/hash.h +6 -5
  422. data/third_party/abseil-cpp/absl/hash/internal/hash.h +73 -65
  423. data/third_party/abseil-cpp/absl/memory/memory.h +4 -0
  424. data/third_party/abseil-cpp/absl/meta/type_traits.h +2 -8
  425. data/third_party/abseil-cpp/absl/numeric/int128.cc +13 -27
  426. data/third_party/abseil-cpp/absl/numeric/int128.h +16 -15
  427. data/third_party/abseil-cpp/absl/status/internal/status_internal.h +51 -0
  428. data/third_party/abseil-cpp/absl/status/status.cc +4 -6
  429. data/third_party/abseil-cpp/absl/status/status.h +502 -113
  430. data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +5 -10
  431. data/third_party/abseil-cpp/absl/strings/charconv.cc +2 -2
  432. data/third_party/abseil-cpp/absl/strings/cord.cc +91 -112
  433. data/third_party/abseil-cpp/absl/strings/cord.h +360 -205
  434. data/third_party/abseil-cpp/absl/strings/escaping.cc +9 -9
  435. data/third_party/abseil-cpp/absl/strings/internal/char_map.h +1 -1
  436. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.cc +1 -1
  437. data/third_party/abseil-cpp/absl/strings/internal/charconv_bigint.h +2 -2
  438. data/third_party/abseil-cpp/absl/strings/internal/charconv_parse.cc +2 -2
  439. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +45 -23
  440. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.cc +222 -136
  441. data/third_party/abseil-cpp/absl/strings/internal/str_format/arg.h +136 -64
  442. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.cc +1 -1
  443. data/third_party/abseil-cpp/absl/strings/internal/str_format/bind.h +14 -21
  444. data/third_party/abseil-cpp/absl/strings/internal/str_format/checker.h +7 -14
  445. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.cc +31 -7
  446. data/third_party/abseil-cpp/absl/strings/internal/str_format/extension.h +147 -135
  447. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.cc +999 -87
  448. data/third_party/abseil-cpp/absl/strings/internal/str_format/float_conversion.h +3 -3
  449. data/third_party/abseil-cpp/absl/strings/internal/str_format/output.h +4 -12
  450. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.cc +8 -6
  451. data/third_party/abseil-cpp/absl/strings/internal/str_format/parser.h +13 -11
  452. data/third_party/abseil-cpp/absl/strings/internal/str_split_internal.h +2 -2
  453. data/third_party/abseil-cpp/absl/strings/str_cat.cc +4 -4
  454. data/third_party/abseil-cpp/absl/strings/str_cat.h +1 -1
  455. data/third_party/abseil-cpp/absl/strings/str_format.h +289 -13
  456. data/third_party/abseil-cpp/absl/strings/str_split.cc +2 -2
  457. data/third_party/abseil-cpp/absl/strings/str_split.h +1 -0
  458. data/third_party/abseil-cpp/absl/strings/string_view.h +26 -19
  459. data/third_party/abseil-cpp/absl/strings/substitute.cc +5 -5
  460. data/third_party/abseil-cpp/absl/strings/substitute.h +32 -29
  461. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +3 -3
  462. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +3 -3
  463. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +28 -28
  464. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +4 -16
  465. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +1 -1
  466. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +8 -0
  467. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +2 -2
  468. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +75 -64
  469. data/third_party/abseil-cpp/absl/synchronization/mutex.h +15 -6
  470. data/third_party/abseil-cpp/absl/time/civil_time.cc +9 -9
  471. data/third_party/abseil-cpp/absl/time/clock.cc +3 -3
  472. data/third_party/abseil-cpp/absl/time/duration.cc +90 -59
  473. data/third_party/abseil-cpp/absl/time/format.cc +43 -36
  474. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +26 -16
  475. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +4 -2
  476. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +1 -1
  477. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +136 -29
  478. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +13 -21
  479. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +1 -1
  480. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +136 -129
  481. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +4 -5
  482. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +8 -7
  483. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +6 -6
  484. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +2 -1
  485. data/third_party/abseil-cpp/absl/time/time.h +15 -16
  486. data/third_party/abseil-cpp/absl/types/internal/variant.h +4 -4
  487. data/third_party/abseil-cpp/absl/types/optional.h +9 -9
  488. data/third_party/abseil-cpp/absl/types/span.h +49 -36
  489. data/third_party/abseil-cpp/absl/utility/utility.h +2 -2
  490. data/third_party/address_sorting/include/address_sorting/address_sorting.h +2 -0
  491. data/third_party/boringssl-with-bazel/err_data.c +340 -336
  492. data/third_party/boringssl-with-bazel/src/crypto/bio/bio.c +2 -0
  493. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/cipher/e_aes.c +173 -35
  494. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +46 -7
  495. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +8 -2
  496. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +90 -63
  497. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +60 -60
  498. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +179 -47
  499. data/third_party/boringssl-with-bazel/src/crypto/trust_token/voprf.c +766 -0
  500. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +10 -0
  501. data/third_party/boringssl-with-bazel/src/crypto/x509v3/pcy_data.c +5 -3
  502. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_alt.c +14 -14
  503. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_prn.c +1 -1
  504. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +24 -0
  505. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +7 -5
  506. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +5 -2
  507. data/third_party/boringssl-with-bazel/src/include/openssl/bio.h +4 -0
  508. data/third_party/boringssl-with-bazel/src/include/openssl/des.h +6 -0
  509. data/third_party/boringssl-with-bazel/src/include/openssl/opensslconf.h +3 -0
  510. data/third_party/boringssl-with-bazel/src/include/openssl/pem.h +202 -134
  511. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +55 -1
  512. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +4 -0
  513. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +31 -23
  514. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +435 -394
  515. data/third_party/boringssl-with-bazel/src/ssl/bio_ssl.cc +18 -5
  516. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +35 -0
  517. data/third_party/boringssl-with-bazel/src/ssl/internal.h +36 -1
  518. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +42 -1
  519. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +67 -0
  520. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +11 -14
  521. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +216 -11
  522. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +53 -11
  523. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +133 -39
  524. data/third_party/upb/upb/def.c +2169 -0
  525. data/third_party/upb/upb/def.h +330 -0
  526. data/third_party/upb/upb/def.hpp +525 -0
  527. data/third_party/upb/upb/reflection.c +391 -0
  528. data/third_party/upb/upb/reflection.h +168 -0
  529. data/third_party/upb/upb/text_encode.c +398 -0
  530. data/third_party/upb/upb/text_encode.h +35 -0
  531. metadata +227 -37
  532. data/src/core/ext/filters/client_channel/lb_policy/xds/eds_drop.cc +0 -571
  533. data/third_party/abseil-cpp/absl/base/dynamic_annotations.cc +0 -129
@@ -16,18 +16,13 @@
16
16
 
17
17
  #include <grpc/support/port_platform.h>
18
18
 
19
- #include <inttypes.h>
20
- #include <limits.h>
21
- #include <string.h>
19
+ #include <set>
20
+ #include <string>
21
+ #include <vector>
22
22
 
23
- #include "absl/container/inlined_vector.h"
24
- #include "absl/strings/match.h"
25
- #include "absl/strings/numbers.h"
23
+ #include "absl/status/status.h"
26
24
  #include "absl/strings/str_cat.h"
27
- #include "absl/strings/str_join.h"
28
- #include "absl/strings/str_split.h"
29
25
  #include "absl/strings/string_view.h"
30
- #include "re2/re2.h"
31
26
 
32
27
  #include <grpc/grpc.h>
33
28
 
@@ -36,7 +31,6 @@
36
31
  #include "src/core/ext/filters/client_channel/lb_policy_factory.h"
37
32
  #include "src/core/ext/filters/client_channel/lb_policy_registry.h"
38
33
  #include "src/core/ext/filters/client_channel/resolver/xds/xds_resolver.h"
39
- #include "src/core/ext/xds/xds_api.h"
40
34
  #include "src/core/lib/channel/channel_args.h"
41
35
  #include "src/core/lib/gpr/string.h"
42
36
  #include "src/core/lib/gprpp/orphanable.h"
@@ -109,17 +103,13 @@ class XdsClusterManagerLb : public LoadBalancingPolicy {
109
103
 
110
104
  // It is required that the keys of cluster_map have to live at least as long
111
105
  // as the ClusterPicker instance.
112
- ClusterPicker(ClusterMap cluster_map,
113
- RefCountedPtr<XdsClusterManagerLbConfig> config)
114
- : cluster_map_(std::move(cluster_map)), config_(std::move(config)) {}
106
+ explicit ClusterPicker(ClusterMap cluster_map)
107
+ : cluster_map_(std::move(cluster_map)) {}
115
108
 
116
109
  PickResult Pick(PickArgs args) override;
117
110
 
118
111
  private:
119
112
  ClusterMap cluster_map_;
120
- // Take a reference to config so that we can use
121
- // XdsApi::RdsUpdate::RdsRoute::Matchers from it.
122
- RefCountedPtr<XdsClusterManagerLbConfig> config_;
123
113
  };
124
114
 
125
115
  // Each ClusterChild holds a ref to its parent XdsClusterManagerLb.
@@ -127,7 +117,7 @@ class XdsClusterManagerLb : public LoadBalancingPolicy {
127
117
  public:
128
118
  ClusterChild(RefCountedPtr<XdsClusterManagerLb> xds_cluster_manager_policy,
129
119
  const std::string& name);
130
- ~ClusterChild();
120
+ ~ClusterChild() override;
131
121
 
132
122
  void Orphan() override;
133
123
 
@@ -151,7 +141,9 @@ class XdsClusterManagerLb : public LoadBalancingPolicy {
151
141
  explicit Helper(RefCountedPtr<ClusterChild> xds_cluster_manager_child)
152
142
  : xds_cluster_manager_child_(std::move(xds_cluster_manager_child)) {}
153
143
 
154
- ~Helper() { xds_cluster_manager_child_.reset(DEBUG_LOCATION, "Helper"); }
144
+ ~Helper() override {
145
+ xds_cluster_manager_child_.reset(DEBUG_LOCATION, "Helper");
146
+ }
155
147
 
156
148
  RefCountedPtr<SubchannelInterface> CreateSubchannel(
157
149
  ServerAddress address, const grpc_channel_args& args) override;
@@ -192,7 +184,7 @@ class XdsClusterManagerLb : public LoadBalancingPolicy {
192
184
  bool shutdown_ = false;
193
185
  };
194
186
 
195
- ~XdsClusterManagerLb();
187
+ ~XdsClusterManagerLb() override;
196
188
 
197
189
  void ShutdownLocked() override;
198
190
 
@@ -368,8 +360,7 @@ void XdsClusterManagerLb::UpdateStateLocked() {
368
360
  Ref(DEBUG_LOCATION, "QueuePicker")));
369
361
  }
370
362
  }
371
- picker =
372
- absl::make_unique<ClusterPicker>(std::move(cluster_map), config_);
363
+ picker = absl::make_unique<ClusterPicker>(std::move(cluster_map));
373
364
  break;
374
365
  }
375
366
  case GRPC_CHANNEL_CONNECTING:
@@ -547,8 +538,9 @@ void XdsClusterManagerLb::ClusterChild::OnDelayedRemovalTimerLocked(
547
538
  RefCountedPtr<SubchannelInterface>
548
539
  XdsClusterManagerLb::ClusterChild::Helper::CreateSubchannel(
549
540
  ServerAddress address, const grpc_channel_args& args) {
550
- if (xds_cluster_manager_child_->xds_cluster_manager_policy_->shutting_down_)
541
+ if (xds_cluster_manager_child_->xds_cluster_manager_policy_->shutting_down_) {
551
542
  return nullptr;
543
+ }
552
544
  return xds_cluster_manager_child_->xds_cluster_manager_policy_
553
545
  ->channel_control_helper()
554
546
  ->CreateSubchannel(std::move(address), args);
@@ -566,8 +558,9 @@ void XdsClusterManagerLb::ClusterChild::Helper::UpdateState(
566
558
  xds_cluster_manager_child_->name_.c_str(), ConnectivityStateName(state),
567
559
  status.ToString().c_str(), picker.get());
568
560
  }
569
- if (xds_cluster_manager_child_->xds_cluster_manager_policy_->shutting_down_)
561
+ if (xds_cluster_manager_child_->xds_cluster_manager_policy_->shutting_down_) {
570
562
  return;
563
+ }
571
564
  // Cache the picker in the ClusterChild.
572
565
  xds_cluster_manager_child_->picker_wrapper_ =
573
566
  MakeRefCounted<ChildPickerWrapper>(xds_cluster_manager_child_->name_,
@@ -591,8 +584,9 @@ void XdsClusterManagerLb::ClusterChild::Helper::UpdateState(
591
584
  }
592
585
 
593
586
  void XdsClusterManagerLb::ClusterChild::Helper::RequestReresolution() {
594
- if (xds_cluster_manager_child_->xds_cluster_manager_policy_->shutting_down_)
587
+ if (xds_cluster_manager_child_->xds_cluster_manager_policy_->shutting_down_) {
595
588
  return;
589
+ }
596
590
  xds_cluster_manager_child_->xds_cluster_manager_policy_
597
591
  ->channel_control_helper()
598
592
  ->RequestReresolution();
@@ -600,8 +594,9 @@ void XdsClusterManagerLb::ClusterChild::Helper::RequestReresolution() {
600
594
 
601
595
  void XdsClusterManagerLb::ClusterChild::Helper::AddTraceEvent(
602
596
  TraceSeverity severity, absl::string_view message) {
603
- if (xds_cluster_manager_child_->xds_cluster_manager_policy_->shutting_down_)
597
+ if (xds_cluster_manager_child_->xds_cluster_manager_policy_->shutting_down_) {
604
598
  return;
599
+ }
605
600
  xds_cluster_manager_child_->xds_cluster_manager_policy_
606
601
  ->channel_control_helper()
607
602
  ->AddTraceEvent(severity, message);
@@ -31,7 +31,9 @@ namespace grpc_core {
31
31
 
32
32
  Resolver::Resolver(std::shared_ptr<WorkSerializer> work_serializer,
33
33
  std::unique_ptr<ResultHandler> result_handler)
34
- : InternallyRefCounted(&grpc_trace_resolver_refcount),
34
+ : InternallyRefCounted(GRPC_TRACE_FLAG_ENABLED(grpc_trace_resolver_refcount)
35
+ ? "Resolver"
36
+ : nullptr),
35
37
  work_serializer_(std::move(work_serializer)),
36
38
  result_handler_(std::move(result_handler)) {}
37
39
 
@@ -32,6 +32,9 @@
32
32
 
33
33
  extern grpc_core::DebugOnlyTraceFlag grpc_trace_resolver_refcount;
34
34
 
35
+ // Name associated with individual address, if available.
36
+ #define GRPC_ARG_ADDRESS_NAME "grpc.address_name"
37
+
35
38
  namespace grpc_core {
36
39
 
37
40
  /// Interface for name resolution.
@@ -87,7 +90,7 @@ class Resolver : public InternallyRefCounted<Resolver> {
87
90
  // Not copyable nor movable.
88
91
  Resolver(const Resolver&) = delete;
89
92
  Resolver& operator=(const Resolver&) = delete;
90
- virtual ~Resolver() = default;
93
+ ~Resolver() override = default;
91
94
 
92
95
  /// Starts resolving.
93
96
  virtual void StartLocked() = 0;
@@ -75,7 +75,7 @@ class AresDnsResolver : public Resolver {
75
75
  void ShutdownLocked() override;
76
76
 
77
77
  private:
78
- virtual ~AresDnsResolver();
78
+ ~AresDnsResolver() override;
79
79
 
80
80
  void MaybeStartResolvingLocked();
81
81
  void StartResolvingLocked();
@@ -49,7 +49,7 @@ class GrpcPolledFdPosix : public GrpcPolledFd {
49
49
  grpc_pollset_set_add_fd(driver_pollset_set_, fd_);
50
50
  }
51
51
 
52
- ~GrpcPolledFdPosix() {
52
+ ~GrpcPolledFdPosix() override {
53
53
  grpc_pollset_set_del_fd(driver_pollset_set_, fd_);
54
54
  /* c-ares library will close the fd inside grpc_fd. This fd may be picked up
55
55
  immediately by another thread, and should not be closed by the following
@@ -63,7 +63,7 @@ class NativeDnsResolver : public Resolver {
63
63
  void ShutdownLocked() override;
64
64
 
65
65
  private:
66
- virtual ~NativeDnsResolver();
66
+ ~NativeDnsResolver() override;
67
67
 
68
68
  void MaybeStartResolvingLocked();
69
69
  void StartResolvingLocked();
@@ -59,7 +59,7 @@ class FakeResolver : public Resolver {
59
59
  friend class FakeResolverResponseGenerator;
60
60
  friend class FakeResolverResponseSetter;
61
61
 
62
- virtual ~FakeResolver();
62
+ ~FakeResolver() override;
63
63
 
64
64
  void ShutdownLocked() override;
65
65
 
@@ -43,7 +43,7 @@ class FakeResolverResponseGenerator
43
43
  : public RefCounted<FakeResolverResponseGenerator> {
44
44
  public:
45
45
  FakeResolverResponseGenerator();
46
- ~FakeResolverResponseGenerator();
46
+ ~FakeResolverResponseGenerator() override;
47
47
 
48
48
  // Instructs the fake resolver associated with the response generator
49
49
  // instance to trigger a new resolution with the specified result. If the
@@ -168,6 +168,24 @@ class UnixResolverFactory : public ResolverFactory {
168
168
 
169
169
  const char* scheme() const override { return "unix"; }
170
170
  };
171
+
172
+ class UnixAbstractResolverFactory : public ResolverFactory {
173
+ public:
174
+ bool IsValidUri(const grpc_uri* uri) const override {
175
+ return ParseUri(uri, grpc_parse_unix_abstract, nullptr);
176
+ }
177
+
178
+ OrphanablePtr<Resolver> CreateResolver(ResolverArgs args) const override {
179
+ return CreateSockaddrResolver(std::move(args), grpc_parse_unix_abstract);
180
+ }
181
+
182
+ grpc_core::UniquePtr<char> GetDefaultAuthority(
183
+ grpc_uri* /*uri*/) const override {
184
+ return grpc_core::UniquePtr<char>(gpr_strdup("localhost"));
185
+ }
186
+
187
+ const char* scheme() const override { return "unix-abstract"; }
188
+ };
171
189
  #endif // GRPC_HAVE_UNIX_SOCKET
172
190
 
173
191
  } // namespace
@@ -182,6 +200,8 @@ void grpc_resolver_sockaddr_init() {
182
200
  #ifdef GRPC_HAVE_UNIX_SOCKET
183
201
  grpc_core::ResolverRegistry::Builder::RegisterResolverFactory(
184
202
  absl::make_unique<grpc_core::UnixResolverFactory>());
203
+ grpc_core::ResolverRegistry::Builder::RegisterResolverFactory(
204
+ absl::make_unique<grpc_core::UnixAbstractResolverFactory>());
185
205
  #endif
186
206
  }
187
207
 
@@ -138,8 +138,9 @@ class XdsResolver : public Resolver {
138
138
  class XdsConfigSelector : public ConfigSelector {
139
139
  public:
140
140
  XdsConfigSelector(RefCountedPtr<XdsResolver> resolver,
141
- const std::vector<XdsApi::Route>& routes);
142
- ~XdsConfigSelector();
141
+ const std::vector<XdsApi::Route>& routes,
142
+ grpc_error* error);
143
+ ~XdsConfigSelector() override;
143
144
 
144
145
  const char* name() const override { return "XdsConfigSelector"; }
145
146
 
@@ -157,6 +158,7 @@ class XdsResolver : public Resolver {
157
158
  XdsApi::Route route;
158
159
  absl::InlinedVector<std::pair<uint32_t, absl::string_view>, 2>
159
160
  weighted_cluster_state;
161
+ RefCountedPtr<ServiceConfig> method_config;
160
162
  bool operator==(const Route& other) const {
161
163
  return route == other.route &&
162
164
  weighted_cluster_state == other.weighted_cluster_state;
@@ -165,6 +167,8 @@ class XdsResolver : public Resolver {
165
167
  using RouteTable = std::vector<Route>;
166
168
 
167
169
  void MaybeAddCluster(const std::string& name);
170
+ grpc_error* CreateMethodConfig(RefCountedPtr<ServiceConfig>* method_config,
171
+ const XdsApi::Route& route);
168
172
 
169
173
  RefCountedPtr<XdsResolver> resolver_;
170
174
  RouteTable route_table_;
@@ -189,6 +193,7 @@ class XdsResolver : public Resolver {
189
193
  XdsClient::RouteConfigWatcherInterface* route_config_watcher_ = nullptr;
190
194
  ClusterState::ClusterStateMap cluster_state_map_;
191
195
  std::vector<XdsApi::Route> current_update_;
196
+ XdsApi::Duration http_max_stream_duration_;
192
197
  };
193
198
 
194
199
  //
@@ -261,7 +266,7 @@ void XdsResolver::Notifier::RunInWorkSerializer(grpc_error* error) {
261
266
 
262
267
  XdsResolver::XdsConfigSelector::XdsConfigSelector(
263
268
  RefCountedPtr<XdsResolver> resolver,
264
- const std::vector<XdsApi::Route>& routes)
269
+ const std::vector<XdsApi::Route>& routes, grpc_error* error)
265
270
  : resolver_(std::move(resolver)) {
266
271
  if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_resolver_trace)) {
267
272
  gpr_log(GPR_INFO, "[xds_resolver %p] creating XdsConfigSelector %p",
@@ -285,6 +290,13 @@ XdsResolver::XdsConfigSelector::XdsConfigSelector(
285
290
  route_table_.emplace_back();
286
291
  auto& route_entry = route_table_.back();
287
292
  route_entry.route = route;
293
+ // If the route doesn't specify a timeout, set its timeout to the global
294
+ // one.
295
+ if (!route.max_stream_duration.has_value()) {
296
+ route_entry.route.max_stream_duration =
297
+ resolver_->http_max_stream_duration_;
298
+ }
299
+ error = CreateMethodConfig(&route_entry.method_config, route_entry.route);
288
300
  if (route.weighted_clusters.empty()) {
289
301
  MaybeAddCluster(route.cluster_name);
290
302
  } else {
@@ -299,6 +311,34 @@ XdsResolver::XdsConfigSelector::XdsConfigSelector(
299
311
  }
300
312
  }
301
313
 
314
+ grpc_error* XdsResolver::XdsConfigSelector::CreateMethodConfig(
315
+ RefCountedPtr<ServiceConfig>* method_config, const XdsApi::Route& route) {
316
+ grpc_error* error = GRPC_ERROR_NONE;
317
+ std::vector<std::string> fields;
318
+ if (route.max_stream_duration.has_value() &&
319
+ (route.max_stream_duration->seconds != 0 ||
320
+ route.max_stream_duration->nanos != 0)) {
321
+ fields.emplace_back(absl::StrFormat(" \"timeout\": \"%d.%09ds\"",
322
+ route.max_stream_duration->seconds,
323
+ route.max_stream_duration->nanos));
324
+ }
325
+ if (!fields.empty()) {
326
+ std::string json = absl::StrCat(
327
+ "{\n"
328
+ " \"methodConfig\": [ {\n"
329
+ " \"name\": [\n"
330
+ " {}\n"
331
+ " ],\n"
332
+ " ",
333
+ absl::StrJoin(fields, ",\n"),
334
+ "\n } ]\n"
335
+ "}");
336
+ *method_config =
337
+ ServiceConfig::Create(resolver_->args_, json.c_str(), &error);
338
+ }
339
+ return error;
340
+ }
341
+
302
342
  XdsResolver::XdsConfigSelector::~XdsConfigSelector() {
303
343
  if (GRPC_TRACE_FLAG_ENABLED(grpc_xds_resolver_trace)) {
304
344
  gpr_log(GPR_INFO, "[xds_resolver %p] destroying XdsConfigSelector %p",
@@ -325,10 +365,18 @@ bool PathMatch(const absl::string_view& path,
325
365
  const XdsApi::Route::Matchers::PathMatcher& path_matcher) {
326
366
  switch (path_matcher.type) {
327
367
  case XdsApi::Route::Matchers::PathMatcher::PathMatcherType::PREFIX:
328
- return absl::StartsWith(path, path_matcher.string_matcher);
368
+ return path_matcher.case_sensitive
369
+ ? absl::StartsWith(path, path_matcher.string_matcher)
370
+ : absl::StartsWithIgnoreCase(path,
371
+ path_matcher.string_matcher);
329
372
  case XdsApi::Route::Matchers::PathMatcher::PathMatcherType::PATH:
330
- return path == path_matcher.string_matcher;
373
+ return path_matcher.case_sensitive
374
+ ? path == path_matcher.string_matcher
375
+ : absl::EqualsIgnoreCase(path, path_matcher.string_matcher);
331
376
  case XdsApi::Route::Matchers::PathMatcher::PathMatcherType::REGEX:
377
+ // Note: Case-sensitive option will already have been set appropriately
378
+ // in path_matcher.regex_matcher when it was constructed, so no
379
+ // need to check it here.
332
380
  return RE2::FullMatch(path.data(), *path_matcher.regex_matcher);
333
381
  default:
334
382
  return false;
@@ -476,6 +524,11 @@ ConfigSelector::CallConfig XdsResolver::XdsConfigSelector::GetCallConfig(
476
524
  static_cast<XdsResolver*>(resolver_->Ref().release());
477
525
  ClusterState* cluster_state = it->second->Ref().release();
478
526
  CallConfig call_config;
527
+ if (entry.method_config != nullptr) {
528
+ call_config.service_config = entry.method_config;
529
+ call_config.method_configs =
530
+ entry.method_config->GetMethodParsedConfigVector(grpc_empty_slice());
531
+ }
479
532
  call_config.call_attributes[kXdsClusterAttribute] = it->first;
480
533
  call_config.on_call_committed = [resolver, cluster_state]() {
481
534
  cluster_state->Unref();
@@ -578,6 +631,7 @@ void XdsResolver::OnListenerUpdate(XdsApi::LdsUpdate listener) {
578
631
  xds_client_->WatchRouteConfigData(route_config_name_, std::move(watcher));
579
632
  }
580
633
  }
634
+ http_max_stream_duration_ = listener.http_max_stream_duration;
581
635
  if (route_config_name_.empty()) {
582
636
  GPR_ASSERT(listener.rds_update.has_value());
583
637
  OnRouteConfigUpdate(std::move(*listener.rds_update));
@@ -663,10 +717,15 @@ void XdsResolver::GenerateResult() {
663
717
  if (current_update_.empty()) return;
664
718
  // First create XdsConfigSelector, which may add new entries to the cluster
665
719
  // state map, and then CreateServiceConfig for LB policies.
720
+ grpc_error* error = GRPC_ERROR_NONE;
666
721
  auto config_selector =
667
- MakeRefCounted<XdsConfigSelector>(Ref(), current_update_);
722
+ MakeRefCounted<XdsConfigSelector>(Ref(), current_update_, error);
723
+ if (error != GRPC_ERROR_NONE) {
724
+ OnError(error);
725
+ return;
726
+ }
668
727
  Result result;
669
- grpc_error* error = CreateServiceConfig(&result.service_config);
728
+ error = CreateServiceConfig(&result.service_config);
670
729
  if (error != GRPC_ERROR_NONE) {
671
730
  OnError(error);
672
731
  return;
@@ -68,18 +68,18 @@ class RegistryState {
68
68
  ResolverFactory* FindResolverFactory(const char* target, grpc_uri** uri,
69
69
  std::string* canonical_target) const {
70
70
  GPR_ASSERT(uri != nullptr);
71
- *uri = grpc_uri_parse(target, 1);
71
+ *uri = grpc_uri_parse(target, true);
72
72
  ResolverFactory* factory =
73
73
  *uri == nullptr ? nullptr : LookupResolverFactory((*uri)->scheme);
74
74
  if (factory == nullptr) {
75
75
  grpc_uri_destroy(*uri);
76
76
  *canonical_target = absl::StrCat(default_prefix_.get(), target);
77
- *uri = grpc_uri_parse(canonical_target->c_str(), 1);
77
+ *uri = grpc_uri_parse(canonical_target->c_str(), true);
78
78
  factory =
79
79
  *uri == nullptr ? nullptr : LookupResolverFactory((*uri)->scheme);
80
80
  if (factory == nullptr) {
81
- grpc_uri_destroy(grpc_uri_parse(target, 0));
82
- grpc_uri_destroy(grpc_uri_parse(canonical_target->c_str(), 0));
81
+ grpc_uri_destroy(grpc_uri_parse(target, false));
82
+ grpc_uri_destroy(grpc_uri_parse(canonical_target->c_str(), false));
83
83
  gpr_log(GPR_ERROR, "don't know how to resolve '%s' or '%s'", target,
84
84
  canonical_target->c_str());
85
85
  }
@@ -95,26 +95,19 @@ std::unique_ptr<ClientChannelMethodParsedConfig::RetryPolicy> ParseRetryPolicy(
95
95
  }
96
96
  }
97
97
  // Parse initialBackoff.
98
- it = json.object_value().find("initialBackoff");
99
- if (it != json.object_value().end()) {
100
- if (!ParseDurationFromJson(it->second, &retry_policy->initial_backoff)) {
101
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
102
- "field:initialBackoff error:Failed to parse"));
103
- } else if (retry_policy->initial_backoff == 0) {
104
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
105
- "field:initialBackoff error:must be greater than 0"));
106
- }
98
+ if (ParseJsonObjectFieldAsDuration(json.object_value(), "initialBackoff",
99
+ &retry_policy->initial_backoff,
100
+ &error_list) &&
101
+ retry_policy->initial_backoff == 0) {
102
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
103
+ "field:initialBackoff error:must be greater than 0"));
107
104
  }
108
105
  // Parse maxBackoff.
109
- it = json.object_value().find("maxBackoff");
110
- if (it != json.object_value().end()) {
111
- if (!ParseDurationFromJson(it->second, &retry_policy->max_backoff)) {
112
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
113
- "field:maxBackoff error:failed to parse"));
114
- } else if (retry_policy->max_backoff == 0) {
115
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
116
- "field:maxBackoff error:should be greater than 0"));
117
- }
106
+ if (ParseJsonObjectFieldAsDuration(json.object_value(), "maxBackoff",
107
+ &retry_policy->max_backoff, &error_list) &&
108
+ retry_policy->max_backoff == 0) {
109
+ error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
110
+ "field:maxBackoff error:should be greater than 0"));
118
111
  }
119
112
  // Parse backoffMultiplier.
120
113
  it = json.object_value().find("backoffMultiplier");
@@ -383,13 +376,8 @@ ClientChannelServiceConfigParser::ParsePerMethodParams(
383
376
  }
384
377
  }
385
378
  // Parse timeout.
386
- it = json.object_value().find("timeout");
387
- if (it != json.object_value().end()) {
388
- if (!ParseDurationFromJson(it->second, &timeout)) {
389
- error_list.push_back(GRPC_ERROR_CREATE_FROM_STATIC_STRING(
390
- "field:timeout error:Failed parsing"));
391
- };
392
- }
379
+ ParseJsonObjectFieldAsDuration(json.object_value(), "timeout", &timeout,
380
+ &error_list, false);
393
381
  // Parse retry policy.
394
382
  it = json.object_value().find("retryPolicy");
395
383
  if (it != json.object_value().end()) {