grpc 1.28.0 → 1.31.0.pre2

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 (707) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +8314 -11869
  3. data/include/grpc/grpc.h +2 -2
  4. data/include/grpc/grpc_security.h +30 -9
  5. data/include/grpc/grpc_security_constants.h +4 -0
  6. data/include/grpc/impl/codegen/grpc_types.h +23 -23
  7. data/include/grpc/impl/codegen/port_platform.h +6 -34
  8. data/include/grpc/module.modulemap +24 -39
  9. data/src/core/ext/filters/client_channel/backend_metric.cc +18 -12
  10. data/src/core/ext/filters/client_channel/client_channel.cc +591 -479
  11. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +3 -2
  12. data/src/core/ext/filters/client_channel/config_selector.cc +62 -0
  13. data/src/core/ext/filters/client_channel/config_selector.h +93 -0
  14. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -2
  15. data/src/core/ext/filters/client_channel/health/health_check_client.cc +9 -22
  16. data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
  17. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +6 -5
  18. data/src/core/ext/filters/client_channel/http_proxy.cc +23 -14
  19. data/src/core/ext/filters/client_channel/lb_policy.cc +19 -18
  20. data/src/core/ext/filters/client_channel/lb_policy.h +44 -33
  21. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +83 -0
  22. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.h +99 -0
  23. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +10 -4
  24. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +279 -324
  25. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +89 -0
  26. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +40 -0
  27. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +11 -9
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.h +3 -2
  29. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +871 -0
  30. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +1 -1
  31. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +9 -17
  32. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +733 -0
  33. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +84 -37
  34. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +938 -0
  35. data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +528 -0
  36. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.h +1 -2
  37. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +1143 -0
  38. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +10 -7
  39. data/src/core/ext/filters/client_channel/local_subchannel_pool.h +2 -1
  40. data/src/core/ext/filters/client_channel/parse_address.cc +22 -21
  41. data/src/core/ext/filters/client_channel/resolver.cc +5 -8
  42. data/src/core/ext/filters/client_channel/resolver.h +12 -14
  43. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +78 -61
  44. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +41 -40
  45. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.h +8 -7
  46. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +22 -24
  47. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +12 -10
  48. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +79 -122
  49. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +199 -163
  50. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +5 -3
  51. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_fallback.cc +7 -4
  52. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +46 -45
  53. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +93 -102
  54. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.h +0 -4
  55. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +2 -2
  56. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +38 -8
  57. data/src/core/ext/filters/client_channel/resolver_factory.h +2 -2
  58. data/src/core/ext/filters/client_channel/resolver_registry.cc +19 -17
  59. data/src/core/ext/filters/client_channel/resolver_registry.h +8 -8
  60. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +21 -22
  61. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +19 -16
  62. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +49 -55
  63. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +43 -23
  64. data/src/core/ext/filters/client_channel/server_address.cc +6 -9
  65. data/src/core/ext/filters/client_channel/server_address.h +6 -12
  66. data/src/core/ext/filters/client_channel/service_config.cc +104 -144
  67. data/src/core/ext/filters/client_channel/service_config.h +28 -98
  68. data/src/core/ext/filters/client_channel/service_config_call_data.h +68 -0
  69. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +142 -0
  70. data/src/core/ext/filters/client_channel/service_config_parser.cc +87 -0
  71. data/src/core/ext/filters/client_channel/service_config_parser.h +89 -0
  72. data/src/core/ext/filters/client_channel/subchannel.cc +55 -25
  73. data/src/core/ext/filters/client_channel/subchannel.h +35 -11
  74. data/src/core/ext/filters/client_channel/xds/xds_api.cc +565 -234
  75. data/src/core/ext/filters/client_channel/xds/xds_api.h +102 -37
  76. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +55 -71
  77. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.h +4 -3
  78. data/src/core/ext/filters/client_channel/xds/xds_channel_secure.cc +4 -2
  79. data/src/core/ext/filters/client_channel/xds/xds_client.cc +619 -347
  80. data/src/core/ext/filters/client_channel/xds/xds_client.h +57 -22
  81. data/src/core/ext/filters/client_channel/xds/xds_client_stats.cc +11 -12
  82. data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +40 -28
  83. data/src/core/ext/filters/http/client/http_client_filter.cc +28 -33
  84. data/src/core/ext/filters/http/client_authority_filter.cc +4 -4
  85. data/src/core/ext/filters/http/http_filters_plugin.cc +28 -12
  86. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +258 -221
  87. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +399 -0
  88. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +31 -0
  89. data/src/core/ext/filters/message_size/message_size_filter.cc +61 -88
  90. data/src/core/ext/filters/message_size/message_size_filter.h +10 -4
  91. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +386 -350
  92. data/src/core/ext/transport/chttp2/server/chttp2_server.h +6 -2
  93. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +1 -1
  94. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +7 -13
  95. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +7 -8
  96. data/src/core/ext/transport/chttp2/transport/bin_encoder.cc +4 -6
  97. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +42 -26
  98. data/src/core/ext/transport/chttp2/transport/chttp2_transport.h +1 -0
  99. data/src/core/ext/transport/chttp2/transport/flow_control.cc +25 -30
  100. data/src/core/ext/transport/chttp2/transport/flow_control.h +14 -16
  101. data/src/core/ext/transport/chttp2/transport/frame_data.cc +9 -12
  102. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +4 -6
  103. data/src/core/ext/transport/chttp2/transport/frame_goaway.h +2 -3
  104. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -6
  105. data/src/core/ext/transport/chttp2/transport/frame_ping.h +2 -3
  106. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +12 -13
  107. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.h +2 -3
  108. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -7
  109. data/src/core/ext/transport/chttp2/transport/frame_settings.h +2 -3
  110. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +9 -12
  111. data/src/core/ext/transport/chttp2/transport/frame_window_update.h +2 -3
  112. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +29 -16
  113. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +2 -3
  114. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +25 -29
  115. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +2 -3
  116. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +13 -17
  117. data/src/core/ext/transport/chttp2/transport/hpack_table.h +2 -2
  118. data/src/core/ext/transport/chttp2/transport/http2_settings.h +4 -5
  119. data/src/core/ext/transport/chttp2/transport/huffsyms.h +2 -3
  120. data/src/core/ext/transport/chttp2/transport/internal.h +27 -21
  121. data/src/core/ext/transport/chttp2/transport/parsing.cc +33 -43
  122. data/src/core/ext/transport/chttp2/transport/stream_map.h +2 -3
  123. data/src/core/ext/transport/chttp2/transport/writing.cc +24 -22
  124. data/src/core/ext/transport/inproc/inproc_transport.cc +54 -15
  125. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +0 -1
  126. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +3 -4
  127. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +4 -229
  128. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +5 -876
  129. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +114 -0
  130. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +429 -0
  131. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +72 -0
  132. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +198 -0
  133. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +105 -0
  134. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +388 -0
  135. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.c +1 -0
  136. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +1 -2
  137. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +23 -10
  138. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +352 -310
  139. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +1 -0
  140. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +42 -34
  141. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.c +1 -0
  142. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +7 -7
  143. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.c +1 -0
  144. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +79 -61
  145. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +2 -1
  146. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +55 -49
  147. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.c +35 -0
  148. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +79 -0
  149. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +48 -27
  150. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +258 -214
  151. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +1 -0
  152. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +51 -45
  153. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +34 -0
  154. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +71 -0
  155. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +2 -1
  156. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +107 -100
  157. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +24 -20
  158. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +157 -122
  159. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.c +1 -0
  160. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +9 -9
  161. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +38 -18
  162. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +173 -73
  163. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.c +34 -0
  164. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +88 -0
  165. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +2 -1
  166. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +95 -101
  167. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.c +1 -0
  168. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +1 -2
  169. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +2 -1
  170. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +49 -65
  171. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +1 -0
  172. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -1
  173. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +9 -6
  174. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +53 -38
  175. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +1 -0
  176. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +70 -62
  177. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.c +1 -0
  178. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +1 -2
  179. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +15 -10
  180. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +95 -63
  181. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +1 -0
  182. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -1
  183. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +3 -2
  184. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +91 -80
  185. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +1 -0
  186. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +9 -10
  187. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.c +1 -0
  188. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +1 -2
  189. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +1 -0
  190. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +36 -31
  191. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +1 -0
  192. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -1
  193. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +68 -46
  194. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +770 -722
  195. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +1 -0
  196. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +16 -15
  197. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.c +1 -0
  198. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +1 -2
  199. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +2 -1
  200. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +95 -88
  201. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +48 -28
  202. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +305 -210
  203. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.c +1 -0
  204. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +5 -5
  205. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +51 -0
  206. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +125 -0
  207. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.c +1 -0
  208. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +1 -2
  209. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +4 -2
  210. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +22 -16
  211. data/src/core/ext/upb-generated/envoy/type/http.upb.c +1 -0
  212. data/src/core/ext/upb-generated/envoy/type/http.upb.h +0 -1
  213. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +16 -0
  214. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +48 -11
  215. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +1 -0
  216. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +14 -14
  217. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +1 -0
  218. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +23 -23
  219. data/src/core/ext/upb-generated/envoy/type/percent.upb.c +1 -0
  220. data/src/core/ext/upb-generated/envoy/type/percent.upb.h +8 -9
  221. data/src/core/ext/upb-generated/envoy/type/range.upb.c +1 -0
  222. data/src/core/ext/upb-generated/envoy/type/range.upb.h +15 -16
  223. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.c +1 -0
  224. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +7 -8
  225. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +1 -0
  226. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +36 -35
  227. data/src/core/ext/upb-generated/gogoproto/gogo.upb.h +0 -1
  228. data/src/core/ext/upb-generated/google/api/annotations.upb.h +0 -1
  229. data/src/core/ext/upb-generated/google/api/http.upb.h +29 -28
  230. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +5 -6
  231. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +12 -11
  232. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +421 -389
  233. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +5 -6
  234. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +1 -2
  235. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +1 -1
  236. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +33 -54
  237. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +5 -6
  238. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +27 -28
  239. data/src/core/ext/upb-generated/google/rpc/status.upb.h +8 -8
  240. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +1 -1
  241. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +32 -45
  242. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +4 -4
  243. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +157 -178
  244. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +14 -13
  245. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +6 -7
  246. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +59 -56
  247. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +11 -12
  248. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +0 -1
  249. data/src/core/ext/upb-generated/udpa/annotations/status.upb.c +28 -0
  250. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +64 -0
  251. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +6 -6
  252. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +41 -68
  253. data/src/core/ext/upb-generated/validate/validate.upb.c +21 -20
  254. data/src/core/ext/upb-generated/validate/validate.upb.h +569 -562
  255. data/src/core/lib/channel/channel_args.cc +15 -14
  256. data/src/core/lib/channel/channel_args.h +3 -1
  257. data/src/core/lib/channel/channel_stack.h +20 -13
  258. data/src/core/lib/channel/channel_trace.cc +2 -6
  259. data/src/core/lib/channel/channelz.cc +10 -21
  260. data/src/core/lib/channel/channelz.h +3 -2
  261. data/src/core/lib/channel/channelz_registry.cc +5 -3
  262. data/src/core/lib/channel/connected_channel.cc +7 -5
  263. data/src/core/lib/channel/context.h +1 -1
  264. data/src/core/lib/channel/handshaker.cc +11 -13
  265. data/src/core/lib/channel/handshaker.h +4 -2
  266. data/src/core/lib/channel/handshaker_registry.cc +5 -17
  267. data/src/core/lib/channel/status_util.cc +2 -3
  268. data/src/core/lib/compression/message_compress.cc +5 -1
  269. data/src/core/lib/debug/stats.cc +21 -27
  270. data/src/core/lib/debug/stats.h +3 -1
  271. data/src/core/lib/gpr/log_linux.cc +6 -8
  272. data/src/core/lib/gpr/log_posix.cc +6 -8
  273. data/src/core/lib/gpr/spinlock.h +2 -3
  274. data/src/core/lib/gpr/string.cc +10 -33
  275. data/src/core/lib/gpr/string.h +4 -18
  276. data/src/core/lib/gpr/sync_abseil.cc +2 -0
  277. data/src/core/lib/gpr/time.cc +4 -0
  278. data/src/core/lib/gpr/time_posix.cc +1 -1
  279. data/src/core/lib/gprpp/atomic.h +6 -6
  280. data/src/core/lib/gprpp/fork.cc +1 -1
  281. data/src/core/lib/gprpp/global_config_env.cc +8 -6
  282. data/src/core/lib/gprpp/host_port.cc +29 -35
  283. data/src/core/lib/gprpp/host_port.h +14 -17
  284. data/src/core/lib/gprpp/map.h +5 -11
  285. data/src/core/lib/gprpp/ref_counted_ptr.h +5 -0
  286. data/src/core/lib/http/format_request.cc +46 -65
  287. data/src/core/lib/http/httpcli.cc +15 -13
  288. data/src/core/lib/http/httpcli.h +2 -3
  289. data/src/core/lib/http/httpcli_security_connector.cc +10 -10
  290. data/src/core/lib/http/parser.h +2 -3
  291. data/src/core/lib/iomgr/buffer_list.h +22 -21
  292. data/src/core/lib/iomgr/call_combiner.h +3 -2
  293. data/src/core/lib/iomgr/cfstream_handle.cc +4 -2
  294. data/src/core/lib/iomgr/closure.h +2 -3
  295. data/src/core/lib/iomgr/dualstack_socket_posix.cc +47 -0
  296. data/src/core/lib/iomgr/endpoint_cfstream.cc +2 -3
  297. data/src/core/lib/iomgr/endpoint_pair.h +2 -3
  298. data/src/core/lib/iomgr/endpoint_pair_posix.cc +10 -10
  299. data/src/core/lib/iomgr/error.cc +6 -9
  300. data/src/core/lib/iomgr/error.h +0 -1
  301. data/src/core/lib/iomgr/error_cfstream.cc +9 -8
  302. data/src/core/lib/iomgr/ev_apple.cc +356 -0
  303. data/src/core/lib/iomgr/ev_apple.h +43 -0
  304. data/src/core/lib/iomgr/ev_epoll1_linux.cc +25 -29
  305. data/src/core/lib/iomgr/ev_epollex_linux.cc +17 -24
  306. data/src/core/lib/iomgr/ev_poll_posix.cc +9 -8
  307. data/src/core/lib/iomgr/ev_posix.cc +4 -3
  308. data/src/core/lib/iomgr/exec_ctx.h +14 -2
  309. data/src/core/lib/iomgr/iomgr.cc +10 -0
  310. data/src/core/lib/iomgr/iomgr.h +10 -0
  311. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +84 -20
  312. data/src/core/lib/iomgr/is_epollexclusive_available.cc +14 -0
  313. data/src/core/lib/iomgr/pollset_set_custom.cc +10 -10
  314. data/src/core/lib/{gprpp/optional.h → iomgr/pollset_uv.h} +11 -12
  315. data/src/core/lib/iomgr/port.h +2 -21
  316. data/src/core/lib/iomgr/python_util.h +46 -0
  317. data/src/core/lib/iomgr/resolve_address.h +4 -6
  318. data/src/core/lib/iomgr/resolve_address_custom.cc +42 -57
  319. data/src/core/lib/iomgr/resolve_address_custom.h +4 -2
  320. data/src/core/lib/iomgr/resolve_address_posix.cc +10 -11
  321. data/src/core/lib/iomgr/resolve_address_windows.cc +16 -25
  322. data/src/core/lib/iomgr/resource_quota.cc +38 -37
  323. data/src/core/lib/iomgr/sockaddr_utils.cc +29 -33
  324. data/src/core/lib/iomgr/sockaddr_utils.h +10 -15
  325. data/src/core/lib/iomgr/socket_factory_posix.h +2 -3
  326. data/src/core/lib/iomgr/socket_mutator.h +2 -3
  327. data/src/core/lib/iomgr/socket_utils_common_posix.cc +102 -81
  328. data/src/core/lib/iomgr/socket_utils_posix.h +3 -0
  329. data/src/core/lib/iomgr/socket_windows.cc +4 -5
  330. data/src/core/lib/iomgr/tcp_client_cfstream.cc +14 -18
  331. data/src/core/lib/iomgr/tcp_client_custom.cc +6 -9
  332. data/src/core/lib/iomgr/tcp_client_posix.cc +30 -36
  333. data/src/core/lib/iomgr/tcp_client_windows.cc +10 -11
  334. data/src/core/lib/iomgr/tcp_custom.cc +3 -4
  335. data/src/core/lib/iomgr/tcp_custom.h +1 -1
  336. data/src/core/lib/iomgr/tcp_server.cc +3 -4
  337. data/src/core/lib/iomgr/tcp_server.h +7 -5
  338. data/src/core/lib/iomgr/tcp_server_custom.cc +11 -23
  339. data/src/core/lib/iomgr/tcp_server_posix.cc +38 -44
  340. data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -4
  341. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +7 -8
  342. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +10 -18
  343. data/src/core/lib/iomgr/tcp_server_windows.cc +16 -16
  344. data/src/core/lib/iomgr/tcp_uv.cc +3 -2
  345. data/src/core/lib/iomgr/time_averaged_stats.h +2 -3
  346. data/src/core/lib/iomgr/timer_generic.cc +15 -15
  347. data/src/core/lib/{gprpp/inlined_vector.h → iomgr/timer_generic.h} +19 -17
  348. data/src/core/lib/iomgr/timer_heap.h +2 -3
  349. data/src/core/lib/iomgr/udp_server.cc +32 -36
  350. data/src/core/lib/iomgr/udp_server.h +5 -2
  351. data/src/core/lib/iomgr/unix_sockets_posix.cc +9 -14
  352. data/src/core/lib/iomgr/unix_sockets_posix.h +3 -1
  353. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +5 -2
  354. data/src/core/lib/json/json.h +3 -2
  355. data/src/core/lib/json/json_reader.cc +25 -26
  356. data/src/core/lib/json/json_writer.cc +13 -12
  357. data/src/core/lib/security/credentials/composite/composite_credentials.cc +12 -0
  358. data/src/core/lib/security/credentials/composite/composite_credentials.h +6 -3
  359. data/src/core/lib/security/credentials/credentials.cc +0 -84
  360. data/src/core/lib/security/credentials/credentials.h +13 -62
  361. data/src/core/lib/security/credentials/fake/fake_credentials.h +4 -0
  362. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +8 -6
  363. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +15 -17
  364. data/src/core/lib/security/credentials/iam/iam_credentials.cc +8 -6
  365. data/src/core/lib/security/credentials/iam/iam_credentials.h +4 -0
  366. data/src/core/lib/security/credentials/jwt/json_token.cc +1 -1
  367. data/src/core/lib/security/credentials/jwt/json_token.h +2 -5
  368. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -4
  369. data/src/core/lib/security/credentials/jwt/jwt_credentials.h +12 -0
  370. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +8 -15
  371. data/src/core/lib/security/credentials/jwt/jwt_verifier.h +2 -3
  372. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +73 -54
  373. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.h +9 -3
  374. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +19 -6
  375. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +2 -0
  376. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +20 -0
  377. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +10 -0
  378. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.cc +23 -13
  379. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +48 -11
  380. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +21 -6
  381. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +17 -17
  382. data/src/core/lib/security/security_connector/load_system_roots_linux.cc +3 -2
  383. data/src/core/lib/security/security_connector/local/local_security_connector.cc +1 -1
  384. data/src/core/lib/security/security_connector/security_connector.cc +2 -0
  385. data/src/core/lib/security/security_connector/security_connector.h +2 -2
  386. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +38 -36
  387. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +8 -5
  388. data/src/core/lib/security/security_connector/ssl_utils.cc +89 -21
  389. data/src/core/lib/security/security_connector/ssl_utils.h +18 -12
  390. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +101 -72
  391. data/src/core/lib/security/security_connector/tls/tls_security_connector.h +27 -5
  392. data/src/core/lib/security/transport/auth_filters.h +0 -5
  393. data/src/core/lib/security/transport/client_auth_filter.cc +11 -11
  394. data/src/core/lib/security/util/json_util.cc +12 -13
  395. data/src/core/lib/slice/slice.cc +38 -1
  396. data/src/core/lib/slice/slice_intern.cc +2 -3
  397. data/src/core/lib/slice/slice_internal.h +15 -0
  398. data/src/core/lib/slice/slice_utils.h +9 -0
  399. data/src/core/lib/surface/byte_buffer_reader.cc +2 -47
  400. data/src/core/lib/surface/call.cc +42 -44
  401. data/src/core/lib/surface/call_log_batch.cc +50 -58
  402. data/src/core/lib/surface/channel.cc +53 -31
  403. data/src/core/lib/surface/channel.h +35 -4
  404. data/src/core/lib/surface/channel_ping.cc +2 -3
  405. data/src/core/lib/surface/completion_queue.cc +304 -47
  406. data/src/core/lib/surface/completion_queue.h +8 -0
  407. data/src/core/lib/surface/event_string.cc +18 -25
  408. data/src/core/lib/surface/event_string.h +3 -1
  409. data/src/core/lib/surface/init.cc +2 -0
  410. data/src/core/lib/surface/init_secure.cc +1 -4
  411. data/src/core/lib/surface/server.cc +971 -837
  412. data/src/core/lib/surface/server.h +66 -12
  413. data/src/core/lib/surface/version.cc +2 -2
  414. data/src/core/lib/transport/byte_stream.h +7 -2
  415. data/src/core/lib/transport/connectivity_state.cc +7 -6
  416. data/src/core/lib/transport/connectivity_state.h +5 -3
  417. data/src/core/lib/transport/metadata.cc +3 -3
  418. data/src/core/lib/transport/metadata_batch.h +2 -3
  419. data/src/core/lib/transport/static_metadata.h +1 -1
  420. data/src/core/lib/transport/status_conversion.cc +6 -14
  421. data/src/core/lib/transport/transport.cc +2 -3
  422. data/src/core/lib/transport/transport.h +9 -2
  423. data/src/core/lib/transport/transport_op_string.cc +61 -102
  424. data/src/core/lib/uri/uri_parser.cc +8 -15
  425. data/src/core/lib/uri/uri_parser.h +2 -3
  426. data/src/core/plugin_registry/grpc_plugin_registry.cc +24 -4
  427. data/src/core/tsi/alts/crypt/aes_gcm.cc +0 -2
  428. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +31 -14
  429. data/src/core/tsi/alts/handshaker/alts_handshaker_client.h +8 -4
  430. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +34 -2
  431. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.h +9 -1
  432. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -0
  433. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.h +2 -3
  434. data/src/core/tsi/fake_transport_security.cc +10 -15
  435. data/src/core/tsi/ssl/session_cache/ssl_session.h +0 -2
  436. data/src/core/tsi/ssl/session_cache/ssl_session_cache.h +0 -2
  437. data/src/core/tsi/ssl_transport_security.cc +154 -50
  438. data/src/core/tsi/ssl_transport_security.h +22 -10
  439. data/src/core/tsi/ssl_types.h +0 -2
  440. data/src/core/tsi/transport_security.h +6 -9
  441. data/src/core/tsi/transport_security_grpc.h +2 -3
  442. data/src/core/tsi/transport_security_interface.h +8 -3
  443. data/src/ruby/ext/grpc/extconf.rb +5 -2
  444. data/src/ruby/ext/grpc/rb_call.c +12 -3
  445. data/src/ruby/ext/grpc/rb_call.h +4 -0
  446. data/src/ruby/ext/grpc/rb_call_credentials.c +57 -12
  447. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
  448. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
  449. data/src/ruby/lib/grpc/errors.rb +103 -42
  450. data/src/ruby/lib/grpc/generic/active_call.rb +2 -3
  451. data/src/ruby/lib/grpc/generic/interceptors.rb +5 -5
  452. data/src/ruby/lib/grpc/generic/rpc_server.rb +9 -10
  453. data/src/ruby/lib/grpc/generic/service.rb +5 -4
  454. data/src/ruby/lib/grpc/structs.rb +1 -1
  455. data/src/ruby/lib/grpc/version.rb +1 -1
  456. data/src/ruby/pb/generate_proto_ruby.sh +5 -3
  457. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +11 -0
  458. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +16 -0
  459. data/src/ruby/spec/debug_message_spec.rb +134 -0
  460. data/src/ruby/spec/generic/service_spec.rb +2 -0
  461. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_import2.proto +23 -0
  462. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +7 -0
  463. data/src/ruby/spec/pb/codegen/package_option_spec.rb +7 -1
  464. data/src/ruby/spec/support/services.rb +10 -4
  465. data/src/ruby/spec/testdata/ca.pem +18 -13
  466. data/src/ruby/spec/testdata/client.key +26 -14
  467. data/src/ruby/spec/testdata/client.pem +18 -12
  468. data/src/ruby/spec/testdata/server1.key +26 -14
  469. data/src/ruby/spec/testdata/server1.pem +20 -14
  470. data/third_party/abseil-cpp/absl/time/civil_time.cc +175 -0
  471. data/third_party/abseil-cpp/absl/time/civil_time.h +538 -0
  472. data/third_party/abseil-cpp/absl/time/clock.cc +569 -0
  473. data/third_party/abseil-cpp/absl/time/clock.h +74 -0
  474. data/third_party/abseil-cpp/absl/time/duration.cc +922 -0
  475. data/third_party/abseil-cpp/absl/time/format.cc +153 -0
  476. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time.h +332 -0
  477. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/civil_time_detail.h +622 -0
  478. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/time_zone.h +384 -0
  479. data/third_party/abseil-cpp/absl/time/internal/cctz/include/cctz/zone_info_source.h +102 -0
  480. data/third_party/abseil-cpp/absl/time/internal/cctz/src/civil_time_detail.cc +94 -0
  481. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.cc +140 -0
  482. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_fixed.h +52 -0
  483. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_format.cc +922 -0
  484. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.cc +45 -0
  485. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_if.h +76 -0
  486. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.cc +121 -0
  487. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_impl.h +93 -0
  488. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.cc +958 -0
  489. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_info.h +138 -0
  490. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.cc +308 -0
  491. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_libc.h +55 -0
  492. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_lookup.cc +187 -0
  493. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.cc +159 -0
  494. data/third_party/abseil-cpp/absl/time/internal/cctz/src/time_zone_posix.h +132 -0
  495. data/third_party/abseil-cpp/absl/time/internal/cctz/src/tzfile.h +122 -0
  496. data/third_party/abseil-cpp/absl/time/internal/cctz/src/zone_info_source.cc +115 -0
  497. data/third_party/abseil-cpp/absl/time/internal/get_current_time_chrono.inc +31 -0
  498. data/third_party/abseil-cpp/absl/time/internal/get_current_time_posix.inc +24 -0
  499. data/third_party/abseil-cpp/absl/time/time.cc +499 -0
  500. data/third_party/abseil-cpp/absl/time/time.h +1584 -0
  501. data/third_party/boringssl-with-bazel/err_data.c +335 -297
  502. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +3 -3
  503. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +3 -3
  504. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +1 -1
  505. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +3 -3
  506. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
  507. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +1 -1
  508. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -1
  509. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +1 -1
  510. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +1 -1
  511. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +1 -1
  512. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +1 -1
  513. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/derive_key.c +1 -1
  514. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +1 -0
  515. data/third_party/boringssl-with-bazel/src/crypto/cpu-arm-linux.c +7 -5
  516. data/third_party/boringssl-with-bazel/src/crypto/cpu-intel.c +13 -4
  517. data/third_party/boringssl-with-bazel/src/crypto/crypto.c +11 -0
  518. data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519.c +18 -26
  519. data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/curve25519_tables.h +13 -21
  520. data/third_party/boringssl-with-bazel/src/{third_party/fiat → crypto/curve25519}/internal.h +14 -22
  521. data/third_party/boringssl-with-bazel/src/crypto/curve25519/spake25519.c +1 -1
  522. data/third_party/boringssl-with-bazel/src/crypto/dh/dh.c +15 -0
  523. data/third_party/boringssl-with-bazel/src/crypto/dsa/dsa.c +10 -0
  524. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +385 -0
  525. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +56 -0
  526. data/third_party/boringssl-with-bazel/src/crypto/ecdh_extra/ecdh_extra.c +2 -2
  527. data/third_party/boringssl-with-bazel/src/crypto/err/err.c +33 -32
  528. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +143 -0
  529. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/aes_nohw.c +1 -1
  530. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +17 -1
  531. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bcm.c +2 -1
  532. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/exponentiation.c +3 -3
  533. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +25 -12
  534. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/montgomery.c +8 -8
  535. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/mul.c +30 -154
  536. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digests.c +16 -0
  537. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec.c +289 -117
  538. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_key.c +13 -27
  539. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/ec_montgomery.c +96 -55
  540. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/felem.c +25 -7
  541. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +434 -161
  542. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/oct.c +63 -71
  543. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +18 -25
  544. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64-table.h +9481 -9485
  545. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +104 -122
  546. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +740 -0
  547. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256_table.h +297 -0
  548. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/scalar.c +90 -11
  549. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple.c +125 -148
  550. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +189 -3
  551. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +3 -3
  552. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/wnaf.c +61 -18
  553. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdh/ecdh.c +2 -2
  554. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ecdsa/ecdsa.c +20 -5
  555. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.c +137 -0
  556. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/fork_detect.h +49 -0
  557. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/getrandom_fillin.h +64 -0
  558. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +41 -5
  559. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +32 -17
  560. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/urandom.c +24 -114
  561. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/blinding.c +4 -0
  562. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/internal.h +1 -0
  563. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +51 -38
  564. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +15 -1
  565. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +62 -0
  566. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +44 -35
  567. data/third_party/boringssl-with-bazel/src/crypto/mem.c +47 -16
  568. data/third_party/boringssl-with-bazel/src/crypto/obj/obj_dat.h +15 -1
  569. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +7 -0
  570. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -5
  571. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/deterministic.c +6 -10
  572. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/windows.c +16 -0
  573. data/third_party/boringssl-with-bazel/src/crypto/thread_pthread.c +4 -0
  574. data/third_party/boringssl-with-bazel/src/crypto/thread_win.c +4 -0
  575. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +249 -0
  576. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +1227 -0
  577. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +682 -0
  578. data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +4 -4
  579. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +8 -0
  580. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +4 -4
  581. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -67
  582. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +13 -6
  583. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +10 -0
  584. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +57 -0
  585. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +4 -1
  586. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +33 -9
  587. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +25 -0
  588. data/third_party/boringssl-with-bazel/src/crypto/x509/x509name.c +4 -3
  589. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +35 -13
  590. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +0 -154
  591. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +28 -6
  592. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +5 -0
  593. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +74 -35
  594. data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +16 -4
  595. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +22 -22
  596. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +6 -2
  597. data/third_party/boringssl-with-bazel/src/include/openssl/crypto.h +9 -4
  598. data/third_party/boringssl-with-bazel/src/include/openssl/dh.h +20 -0
  599. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +1 -0
  600. data/third_party/boringssl-with-bazel/src/include/openssl/dsa.h +16 -0
  601. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +6 -0
  602. data/third_party/boringssl-with-bazel/src/include/openssl/err.h +2 -0
  603. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +69 -0
  604. data/third_party/boringssl-with-bazel/src/include/openssl/nid.h +5 -0
  605. data/third_party/boringssl-with-bazel/src/include/openssl/rand.h +3 -17
  606. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +31 -0
  607. data/third_party/boringssl-with-bazel/src/include/openssl/sha.h +26 -0
  608. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +191 -79
  609. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +1 -0
  610. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +282 -0
  611. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +791 -715
  612. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +1 -0
  613. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +0 -4
  614. data/third_party/boringssl-with-bazel/src/ssl/d1_lib.cc +3 -3
  615. data/third_party/boringssl-with-bazel/src/ssl/dtls_method.cc +13 -4
  616. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +146 -57
  617. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +23 -5
  618. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +30 -22
  619. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +21 -4
  620. data/third_party/boringssl-with-bazel/src/ssl/internal.h +74 -54
  621. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +10 -10
  622. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
  623. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +21 -21
  624. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +29 -0
  625. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +4 -0
  626. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +34 -1
  627. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +13 -2
  628. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +44 -5
  629. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +6 -0
  630. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +5 -5
  631. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +51 -26
  632. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +47 -53
  633. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +1 -1
  634. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +129 -48
  635. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +23 -75
  636. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +55 -22
  637. data/third_party/boringssl-with-bazel/src/ssl/tls_method.cc +63 -25
  638. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_32.h +245 -175
  639. data/third_party/boringssl-with-bazel/src/third_party/fiat/curve25519_64.h +135 -75
  640. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_32.h +1593 -1672
  641. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256_64.h +512 -503
  642. data/third_party/re2/re2/bitmap256.h +117 -0
  643. data/third_party/re2/re2/bitstate.cc +385 -0
  644. data/third_party/re2/re2/compile.cc +1279 -0
  645. data/third_party/re2/re2/dfa.cc +2130 -0
  646. data/third_party/re2/re2/filtered_re2.cc +121 -0
  647. data/third_party/re2/re2/filtered_re2.h +109 -0
  648. data/third_party/re2/re2/mimics_pcre.cc +197 -0
  649. data/third_party/re2/re2/nfa.cc +713 -0
  650. data/third_party/re2/re2/onepass.cc +623 -0
  651. data/third_party/re2/re2/parse.cc +2464 -0
  652. data/third_party/re2/re2/perl_groups.cc +119 -0
  653. data/third_party/re2/re2/pod_array.h +55 -0
  654. data/third_party/re2/re2/prefilter.cc +710 -0
  655. data/third_party/re2/re2/prefilter.h +108 -0
  656. data/third_party/re2/re2/prefilter_tree.cc +407 -0
  657. data/third_party/re2/re2/prefilter_tree.h +139 -0
  658. data/third_party/re2/re2/prog.cc +988 -0
  659. data/third_party/re2/re2/prog.h +436 -0
  660. data/third_party/re2/re2/re2.cc +1362 -0
  661. data/third_party/re2/re2/re2.h +1002 -0
  662. data/third_party/re2/re2/regexp.cc +980 -0
  663. data/third_party/re2/re2/regexp.h +659 -0
  664. data/third_party/re2/re2/set.cc +154 -0
  665. data/third_party/re2/re2/set.h +80 -0
  666. data/third_party/re2/re2/simplify.cc +657 -0
  667. data/third_party/re2/re2/sparse_array.h +392 -0
  668. data/third_party/re2/re2/sparse_set.h +264 -0
  669. data/third_party/re2/re2/stringpiece.cc +65 -0
  670. data/third_party/re2/re2/stringpiece.h +210 -0
  671. data/third_party/re2/re2/tostring.cc +351 -0
  672. data/third_party/re2/re2/unicode_casefold.cc +582 -0
  673. data/third_party/re2/re2/unicode_casefold.h +78 -0
  674. data/third_party/re2/re2/unicode_groups.cc +6269 -0
  675. data/third_party/re2/re2/unicode_groups.h +67 -0
  676. data/third_party/re2/re2/walker-inl.h +246 -0
  677. data/third_party/re2/util/benchmark.h +156 -0
  678. data/third_party/re2/util/flags.h +26 -0
  679. data/third_party/re2/util/logging.h +109 -0
  680. data/third_party/re2/util/malloc_counter.h +19 -0
  681. data/third_party/re2/util/mix.h +41 -0
  682. data/third_party/re2/util/mutex.h +148 -0
  683. data/third_party/re2/util/pcre.cc +1025 -0
  684. data/third_party/re2/util/pcre.h +681 -0
  685. data/third_party/re2/util/rune.cc +260 -0
  686. data/third_party/re2/util/strutil.cc +149 -0
  687. data/third_party/re2/util/strutil.h +21 -0
  688. data/third_party/re2/util/test.h +50 -0
  689. data/third_party/re2/util/utf.h +44 -0
  690. data/third_party/re2/util/util.h +42 -0
  691. data/third_party/upb/upb/decode.c +467 -504
  692. data/third_party/upb/upb/encode.c +163 -121
  693. data/third_party/upb/upb/msg.c +130 -64
  694. data/third_party/upb/upb/msg.h +418 -14
  695. data/third_party/upb/upb/port_def.inc +35 -6
  696. data/third_party/upb/upb/port_undef.inc +8 -1
  697. data/third_party/upb/upb/table.c +53 -75
  698. data/third_party/upb/upb/table.int.h +11 -43
  699. data/third_party/upb/upb/upb.c +148 -124
  700. data/third_party/upb/upb/upb.h +65 -147
  701. data/third_party/upb/upb/upb.hpp +86 -0
  702. metadata +175 -47
  703. data/src/core/ext/filters/client_channel/lb_policy/xds/xds.cc +0 -1754
  704. data/src/core/lib/gprpp/string_view.h +0 -60
  705. data/src/core/tsi/grpc_shadow_boringssl.h +0 -3311
  706. data/third_party/boringssl-with-bazel/src/third_party/fiat/p256.c +0 -1063
  707. data/third_party/upb/upb/generated_util.h +0 -105
@@ -32,14 +32,36 @@ extern const grpc_channel_filter grpc_server_top_filter;
32
32
  /** Lightweight tracing of server channel state */
33
33
  extern grpc_core::TraceFlag grpc_server_channel_trace;
34
34
 
35
- /* Add a listener to the server: when the server starts, it will call start,
36
- and when it shuts down, it will call destroy */
35
+ namespace grpc_core {
36
+
37
+ /// Interface for listeners.
38
+ /// Implementations must override the Orphan() method, which should stop
39
+ /// listening and initiate destruction of the listener.
40
+ class ServerListenerInterface : public Orphanable {
41
+ public:
42
+ virtual ~ServerListenerInterface() = default;
43
+
44
+ /// Starts listening. This listener may refer to the pollset object beyond
45
+ /// this call, so it is a pointer rather than a reference.
46
+ virtual void Start(grpc_server* server,
47
+ const std::vector<grpc_pollset*>* pollsets) = 0;
48
+
49
+ /// Returns the channelz node for the listen socket, or null if not
50
+ /// supported.
51
+ virtual channelz::ListenSocketNode* channelz_listen_socket_node() const = 0;
52
+
53
+ /// Sets a closure to be invoked by the listener when its destruction
54
+ /// is complete.
55
+ virtual void SetOnDestroyDone(grpc_closure* on_destroy_done) = 0;
56
+ };
57
+
58
+ } // namespace grpc_core
59
+
60
+ /* Add a listener to the server: when the server starts, it will call Start(),
61
+ and when it shuts down, it will orphan the listener. */
37
62
  void grpc_server_add_listener(
38
- grpc_server* server, void* listener_arg,
39
- void (*start)(grpc_server* server, void* arg, grpc_pollset** pollsets,
40
- size_t npollsets),
41
- void (*destroy)(grpc_server* server, void* arg, grpc_closure* on_done),
42
- grpc_core::RefCountedPtr<grpc_core::channelz::ListenSocketNode> node);
63
+ grpc_server* server,
64
+ grpc_core::OrphanablePtr<grpc_core::ServerListenerInterface> listener);
43
65
 
44
66
  /* Setup a transport - creates a channel stack, binds the transport to the
45
67
  server */
@@ -57,11 +79,43 @@ const grpc_channel_args* grpc_server_get_channel_args(grpc_server* server);
57
79
 
58
80
  grpc_resource_user* grpc_server_get_default_resource_user(grpc_server* server);
59
81
 
60
- int grpc_server_has_open_connections(grpc_server* server);
82
+ bool grpc_server_has_open_connections(grpc_server* server);
83
+
84
+ // Do not call this before grpc_server_start. Returns the pollsets. The vector
85
+ // itself is immutable, but the pollsets inside are mutable. The result is valid
86
+ // for the lifetime of the server.
87
+ const std::vector<grpc_pollset*>& grpc_server_get_pollsets(grpc_server* server);
88
+
89
+ namespace grpc_core {
90
+
91
+ // An object to represent the most relevant characteristics of a newly-allocated
92
+ // call object when using an AllocatingRequestMatcherBatch
93
+ struct ServerBatchCallAllocation {
94
+ grpc_experimental_completion_queue_functor* tag;
95
+ grpc_call** call;
96
+ grpc_metadata_array* initial_metadata;
97
+ grpc_call_details* details;
98
+ };
99
+
100
+ // An object to represent the most relevant characteristics of a newly-allocated
101
+ // call object when using an AllocatingRequestMatcherRegistered
102
+ struct ServerRegisteredCallAllocation {
103
+ grpc_experimental_completion_queue_functor* tag;
104
+ grpc_call** call;
105
+ grpc_metadata_array* initial_metadata;
106
+ gpr_timespec* deadline;
107
+ grpc_byte_buffer** optional_payload;
108
+ };
109
+
110
+ // Functions to specify that a specific registered method or the unregistered
111
+ // collection should use a specific allocator for request matching.
112
+ void SetServerRegisteredMethodAllocator(
113
+ grpc_server* server, grpc_completion_queue* cq, void* method_tag,
114
+ std::function<ServerRegisteredCallAllocation()> allocator);
115
+ void SetServerBatchMethodAllocator(
116
+ grpc_server* server, grpc_completion_queue* cq,
117
+ std::function<ServerBatchCallAllocation()> allocator);
61
118
 
62
- /* Do not call this before grpc_server_start. Returns the pollsets and the
63
- * number of pollsets via 'pollsets' and 'pollset_count'. */
64
- void grpc_server_get_pollsets(grpc_server* server, grpc_pollset*** pollsets,
65
- size_t* pollset_count);
119
+ } // namespace grpc_core
66
120
 
67
121
  #endif /* GRPC_CORE_LIB_SURFACE_SERVER_H */
@@ -23,6 +23,6 @@
23
23
 
24
24
  #include <grpc/grpc.h>
25
25
 
26
- const char* grpc_version_string(void) { return "9.0.0"; }
26
+ const char* grpc_version_string(void) { return "11.0.0"; }
27
27
 
28
- const char* grpc_g_stands_for(void) { return "galactic"; }
28
+ const char* grpc_g_stands_for(void) { return "galore"; }
@@ -26,10 +26,15 @@
26
26
  #include "src/core/lib/iomgr/closure.h"
27
27
 
28
28
  /** Internal bit flag for grpc_begin_message's \a flags signaling the use of
29
- * compression for the message */
29
+ * compression for the message. (Does not apply for stream compression.) */
30
30
  #define GRPC_WRITE_INTERNAL_COMPRESS (0x80000000u)
31
+ /** Internal bit flag for determining whether the message was compressed and had
32
+ * to be decompressed by the message_decompress filter. (Does not apply for
33
+ * stream compression.) */
34
+ #define GRPC_WRITE_INTERNAL_TEST_ONLY_WAS_COMPRESSED (0x40000000u)
31
35
  /** Mask of all valid internal flags. */
32
- #define GRPC_WRITE_INTERNAL_USED_MASK (GRPC_WRITE_INTERNAL_COMPRESS)
36
+ #define GRPC_WRITE_INTERNAL_USED_MASK \
37
+ (GRPC_WRITE_INTERNAL_COMPRESS | GRPC_WRITE_INTERNAL_TEST_ONLY_WAS_COMPRESSED)
33
38
 
34
39
  namespace grpc_core {
35
40
 
@@ -58,12 +58,13 @@ const char* ConnectivityStateName(grpc_connectivity_state state) {
58
58
  class AsyncConnectivityStateWatcherInterface::Notifier {
59
59
  public:
60
60
  Notifier(RefCountedPtr<AsyncConnectivityStateWatcherInterface> watcher,
61
- grpc_connectivity_state state, Combiner* combiner)
61
+ grpc_connectivity_state state,
62
+ const std::shared_ptr<WorkSerializer>& work_serializer)
62
63
  : watcher_(std::move(watcher)), state_(state) {
63
- if (combiner != nullptr) {
64
- combiner->Run(
65
- GRPC_CLOSURE_INIT(&closure_, SendNotification, this, nullptr),
66
- GRPC_ERROR_NONE);
64
+ if (work_serializer != nullptr) {
65
+ work_serializer->Run(
66
+ [this]() { SendNotification(this, GRPC_ERROR_NONE); },
67
+ DEBUG_LOCATION);
67
68
  } else {
68
69
  GRPC_CLOSURE_INIT(&closure_, SendNotification, this,
69
70
  grpc_schedule_on_exec_ctx);
@@ -89,7 +90,7 @@ class AsyncConnectivityStateWatcherInterface::Notifier {
89
90
 
90
91
  void AsyncConnectivityStateWatcherInterface::Notify(
91
92
  grpc_connectivity_state state) {
92
- new Notifier(Ref(), state, combiner_); // Deletes itself when done.
93
+ new Notifier(Ref(), state, work_serializer_); // Deletes itself when done.
93
94
  }
94
95
 
95
96
  //
@@ -29,6 +29,7 @@
29
29
  #include "src/core/lib/gprpp/orphanable.h"
30
30
  #include "src/core/lib/iomgr/closure.h"
31
31
  #include "src/core/lib/iomgr/exec_ctx.h"
32
+ #include "src/core/lib/iomgr/work_serializer.h"
32
33
 
33
34
  namespace grpc_core {
34
35
 
@@ -70,14 +71,15 @@ class AsyncConnectivityStateWatcherInterface
70
71
 
71
72
  // If \a combiner is nullptr, then the notification will be scheduled on the
72
73
  // ExecCtx.
73
- explicit AsyncConnectivityStateWatcherInterface(Combiner* combiner = nullptr)
74
- : combiner_(combiner) {}
74
+ explicit AsyncConnectivityStateWatcherInterface(
75
+ std::shared_ptr<WorkSerializer> work_serializer = nullptr)
76
+ : work_serializer_(std::move(work_serializer)) {}
75
77
 
76
78
  // Invoked asynchronously when Notify() is called.
77
79
  virtual void OnConnectivityStateChange(grpc_connectivity_state new_state) = 0;
78
80
 
79
81
  private:
80
- Combiner* combiner_;
82
+ std::shared_ptr<WorkSerializer> work_serializer_;
81
83
  };
82
84
 
83
85
  // Tracks connectivity state. Maintains a list of watchers that are
@@ -256,9 +256,9 @@ void grpc_mdctx_global_shutdown() {
256
256
  abort();
257
257
  }
258
258
  }
259
- // For ASAN builds, we don't want to crash here, because that will
260
- // prevent ASAN from providing leak detection information, which is
261
- // far more useful than this simple assertion.
259
+ // For ASAN builds, we don't want to crash here, because that will
260
+ // prevent ASAN from providing leak detection information, which is
261
+ // far more useful than this simple assertion.
262
262
  #ifndef GRPC_ASAN_ENABLED
263
263
  GPR_DEBUG_ASSERT(shard->count == 0);
264
264
  #endif
@@ -154,11 +154,10 @@ inline grpc_error* GRPC_MUST_USE_RESULT grpc_metadata_batch_add_tail(
154
154
 
155
155
  grpc_error* grpc_attach_md_to_error(grpc_error* src, grpc_mdelem md);
156
156
 
157
- typedef struct {
157
+ struct grpc_filtered_mdelem {
158
158
  grpc_error* error;
159
159
  grpc_mdelem md;
160
- } grpc_filtered_mdelem;
161
-
160
+ };
162
161
  #define GRPC_FILTERED_ERROR(error) \
163
162
  { (error), GRPC_MDNULL }
164
163
  #define GRPC_FILTERED_MDELEM(md) \
@@ -46,7 +46,7 @@ constexpr uint64_t kGrpcStaticMetadataInitCanary = 0xCAFEF00DC0FFEE11L;
46
46
  uint64_t StaticMetadataInitCanary();
47
47
  #endif
48
48
  extern const StaticMetadataSlice* g_static_metadata_slice_table;
49
- }
49
+ } // namespace grpc_core
50
50
  inline const grpc_core::StaticMetadataSlice* grpc_static_slice_table() {
51
51
  GPR_DEBUG_ASSERT(grpc_core::StaticMetadataInitCanary() ==
52
52
  grpc_core::kGrpcStaticMetadataInitCanary);
@@ -68,29 +68,21 @@ grpc_status_code grpc_http2_status_to_grpc_status(int status) {
68
68
  case 200:
69
69
  return GRPC_STATUS_OK;
70
70
  case 400:
71
- return GRPC_STATUS_INVALID_ARGUMENT;
71
+ return GRPC_STATUS_INTERNAL;
72
72
  case 401:
73
73
  return GRPC_STATUS_UNAUTHENTICATED;
74
74
  case 403:
75
75
  return GRPC_STATUS_PERMISSION_DENIED;
76
76
  case 404:
77
- return GRPC_STATUS_NOT_FOUND;
78
- case 409:
79
- return GRPC_STATUS_ABORTED;
80
- case 412:
81
- return GRPC_STATUS_FAILED_PRECONDITION;
82
- case 429:
83
- return GRPC_STATUS_RESOURCE_EXHAUSTED;
84
- case 499:
85
- return GRPC_STATUS_CANCELLED;
86
- case 500:
87
- return GRPC_STATUS_UNKNOWN;
88
- case 501:
89
77
  return GRPC_STATUS_UNIMPLEMENTED;
78
+ case 429:
79
+ return GRPC_STATUS_UNAVAILABLE;
80
+ case 502:
81
+ return GRPC_STATUS_UNAVAILABLE;
90
82
  case 503:
91
83
  return GRPC_STATUS_UNAVAILABLE;
92
84
  case 504:
93
- return GRPC_STATUS_DEADLINE_EXCEEDED;
85
+ return GRPC_STATUS_UNAVAILABLE;
94
86
  /* everything else is unknown */
95
87
  default:
96
88
  return GRPC_STATUS_UNKNOWN;
@@ -233,13 +233,12 @@ grpc_transport_op* grpc_make_transport_op(grpc_closure* on_complete) {
233
233
  return &op->op;
234
234
  }
235
235
 
236
- typedef struct {
236
+ struct made_transport_stream_op {
237
237
  grpc_closure outer_on_complete;
238
238
  grpc_closure* inner_on_complete;
239
239
  grpc_transport_stream_op_batch op;
240
240
  grpc_transport_stream_op_batch_payload payload;
241
- } made_transport_stream_op;
242
-
241
+ };
243
242
  static void destroy_made_transport_stream_op(void* arg, grpc_error* error) {
244
243
  made_transport_stream_op* op = static_cast<made_transport_stream_op*>(arg);
245
244
  grpc_closure* c = op->inner_on_complete;
@@ -242,6 +242,12 @@ struct grpc_transport_stream_op_batch_payload {
242
242
 
243
243
  struct {
244
244
  grpc_metadata_batch* send_trailing_metadata = nullptr;
245
+ // Set by the transport to true if the stream successfully wrote the
246
+ // trailing metadata. If this is not set but there was a send trailing
247
+ // metadata op present, this can indicate that a server call can be marked
248
+ // as a cancellation (since the stream was write-closed before status could
249
+ // be delivered).
250
+ bool* sent = nullptr;
245
251
  } send_trailing_metadata;
246
252
 
247
253
  struct {
@@ -408,8 +414,9 @@ void grpc_transport_stream_op_batch_finish_with_failure(
408
414
  grpc_transport_stream_op_batch* op, grpc_error* error,
409
415
  grpc_core::CallCombiner* call_combiner);
410
416
 
411
- char* grpc_transport_stream_op_batch_string(grpc_transport_stream_op_batch* op);
412
- char* grpc_transport_op_string(grpc_transport_op* op);
417
+ std::string grpc_transport_stream_op_batch_string(
418
+ grpc_transport_stream_op_batch* op);
419
+ std::string grpc_transport_op_string(grpc_transport_op* op);
413
420
 
414
421
  /* Send a batch of operations on a transport
415
422
 
@@ -25,6 +25,12 @@
25
25
  #include <stdio.h>
26
26
  #include <string.h>
27
27
 
28
+ #include <vector>
29
+
30
+ #include "absl/strings/str_cat.h"
31
+ #include "absl/strings/str_format.h"
32
+ #include "absl/strings/str_join.h"
33
+
28
34
  #include <grpc/support/alloc.h>
29
35
  #include <grpc/support/string_util.h>
30
36
  #include "src/core/lib/gpr/string.h"
@@ -34,177 +40,130 @@
34
40
  /* These routines are here to facilitate debugging - they produce string
35
41
  representations of various transport data structures */
36
42
 
37
- static void put_metadata(gpr_strvec* b, grpc_mdelem md) {
38
- gpr_strvec_add(b, gpr_strdup("key="));
39
- gpr_strvec_add(
40
- b, grpc_dump_slice(GRPC_MDKEY(md), GPR_DUMP_HEX | GPR_DUMP_ASCII));
41
-
42
- gpr_strvec_add(b, gpr_strdup(" value="));
43
- gpr_strvec_add(
44
- b, grpc_dump_slice(GRPC_MDVALUE(md), GPR_DUMP_HEX | GPR_DUMP_ASCII));
43
+ static void put_metadata(grpc_mdelem md, std::vector<std::string>* out) {
44
+ out->push_back("key=");
45
+ char* dump = grpc_dump_slice(GRPC_MDKEY(md), GPR_DUMP_HEX | GPR_DUMP_ASCII);
46
+ out->push_back(dump);
47
+ gpr_free(dump);
48
+ out->push_back(" value=");
49
+ dump = grpc_dump_slice(GRPC_MDVALUE(md), GPR_DUMP_HEX | GPR_DUMP_ASCII);
50
+ out->push_back(dump);
51
+ gpr_free(dump);
45
52
  }
46
53
 
47
- static void put_metadata_list(gpr_strvec* b, grpc_metadata_batch md) {
54
+ static void put_metadata_list(grpc_metadata_batch md,
55
+ std::vector<std::string>* out) {
48
56
  grpc_linked_mdelem* m;
49
57
  for (m = md.list.head; m != nullptr; m = m->next) {
50
- if (m != md.list.head) gpr_strvec_add(b, gpr_strdup(", "));
51
- put_metadata(b, m->md);
58
+ if (m != md.list.head) out->push_back(", ");
59
+ put_metadata(m->md, out);
52
60
  }
53
61
  if (md.deadline != GRPC_MILLIS_INF_FUTURE) {
54
- char* tmp;
55
- gpr_asprintf(&tmp, " deadline=%" PRId64, md.deadline);
56
- gpr_strvec_add(b, tmp);
62
+ out->push_back(absl::StrFormat(" deadline=%" PRId64, md.deadline));
57
63
  }
58
64
  }
59
65
 
60
- char* grpc_transport_stream_op_batch_string(
66
+ std::string grpc_transport_stream_op_batch_string(
61
67
  grpc_transport_stream_op_batch* op) {
62
- char* tmp;
63
- char* out;
64
-
65
- gpr_strvec b;
66
- gpr_strvec_init(&b);
68
+ std::vector<std::string> out;
67
69
 
68
70
  if (op->send_initial_metadata) {
69
- gpr_strvec_add(&b, gpr_strdup(" "));
70
- gpr_strvec_add(&b, gpr_strdup("SEND_INITIAL_METADATA{"));
71
- put_metadata_list(
72
- &b, *op->payload->send_initial_metadata.send_initial_metadata);
73
- gpr_strvec_add(&b, gpr_strdup("}"));
71
+ out.push_back(" SEND_INITIAL_METADATA{");
72
+ put_metadata_list(*op->payload->send_initial_metadata.send_initial_metadata,
73
+ &out);
74
+ out.push_back("}");
74
75
  }
75
76
 
76
77
  if (op->send_message) {
77
- gpr_strvec_add(&b, gpr_strdup(" "));
78
78
  if (op->payload->send_message.send_message != nullptr) {
79
- gpr_asprintf(&tmp, "SEND_MESSAGE:flags=0x%08x:len=%d",
80
- op->payload->send_message.send_message->flags(),
81
- op->payload->send_message.send_message->length());
79
+ out.push_back(
80
+ absl::StrFormat(" SEND_MESSAGE:flags=0x%08x:len=%d",
81
+ op->payload->send_message.send_message->flags(),
82
+ op->payload->send_message.send_message->length()));
82
83
  } else {
83
84
  // This can happen when we check a batch after the transport has
84
85
  // processed and cleared the send_message op.
85
- tmp =
86
- gpr_strdup("SEND_MESSAGE(flag and length unknown, already orphaned)");
86
+ out.push_back(" SEND_MESSAGE(flag and length unknown, already orphaned)");
87
87
  }
88
- gpr_strvec_add(&b, tmp);
89
88
  }
90
89
 
91
90
  if (op->send_trailing_metadata) {
92
- gpr_strvec_add(&b, gpr_strdup(" "));
93
- gpr_strvec_add(&b, gpr_strdup("SEND_TRAILING_METADATA{"));
91
+ out.push_back(" SEND_TRAILING_METADATA{");
94
92
  put_metadata_list(
95
- &b, *op->payload->send_trailing_metadata.send_trailing_metadata);
96
- gpr_strvec_add(&b, gpr_strdup("}"));
93
+ *op->payload->send_trailing_metadata.send_trailing_metadata, &out);
94
+ out.push_back("}");
97
95
  }
98
96
 
99
97
  if (op->recv_initial_metadata) {
100
- gpr_strvec_add(&b, gpr_strdup(" "));
101
- gpr_strvec_add(&b, gpr_strdup("RECV_INITIAL_METADATA"));
98
+ out.push_back(" RECV_INITIAL_METADATA");
102
99
  }
103
100
 
104
101
  if (op->recv_message) {
105
- gpr_strvec_add(&b, gpr_strdup(" "));
106
- gpr_strvec_add(&b, gpr_strdup("RECV_MESSAGE"));
102
+ out.push_back(" RECV_MESSAGE");
107
103
  }
108
104
 
109
105
  if (op->recv_trailing_metadata) {
110
- gpr_strvec_add(&b, gpr_strdup(" "));
111
- gpr_strvec_add(&b, gpr_strdup("RECV_TRAILING_METADATA"));
106
+ out.push_back(" RECV_TRAILING_METADATA");
112
107
  }
113
108
 
114
109
  if (op->cancel_stream) {
115
- gpr_strvec_add(&b, gpr_strdup(" "));
116
- const char* msg =
117
- grpc_error_string(op->payload->cancel_stream.cancel_error);
118
- gpr_asprintf(&tmp, "CANCEL:%s", msg);
119
-
120
- gpr_strvec_add(&b, tmp);
110
+ out.push_back(absl::StrCat(
111
+ " CANCEL:",
112
+ grpc_error_string(op->payload->cancel_stream.cancel_error)));
121
113
  }
122
114
 
123
- out = gpr_strvec_flatten(&b, nullptr);
124
- gpr_strvec_destroy(&b);
125
-
126
- return out;
115
+ return absl::StrJoin(out, "");
127
116
  }
128
117
 
129
- char* grpc_transport_op_string(grpc_transport_op* op) {
130
- char* tmp;
131
- char* out;
132
- bool first = true;
133
-
134
- gpr_strvec b;
135
- gpr_strvec_init(&b);
118
+ std::string grpc_transport_op_string(grpc_transport_op* op) {
119
+ std::vector<std::string> out;
136
120
 
137
121
  if (op->start_connectivity_watch != nullptr) {
138
- if (!first) gpr_strvec_add(&b, gpr_strdup(" "));
139
- first = false;
140
- gpr_asprintf(
141
- &tmp, "START_CONNECTIVITY_WATCH:watcher=%p:from=%s",
122
+ out.push_back(absl::StrFormat(
123
+ " START_CONNECTIVITY_WATCH:watcher=%p:from=%s",
142
124
  op->start_connectivity_watch.get(),
143
- grpc_core::ConnectivityStateName(op->start_connectivity_watch_state));
144
- gpr_strvec_add(&b, tmp);
125
+ grpc_core::ConnectivityStateName(op->start_connectivity_watch_state)));
145
126
  }
146
127
 
147
128
  if (op->stop_connectivity_watch != nullptr) {
148
- if (!first) gpr_strvec_add(&b, gpr_strdup(" "));
149
- first = false;
150
- gpr_asprintf(&tmp, "STOP_CONNECTIVITY_WATCH:watcher=%p",
151
- op->stop_connectivity_watch);
152
- gpr_strvec_add(&b, tmp);
129
+ out.push_back(absl::StrFormat(" STOP_CONNECTIVITY_WATCH:watcher=%p",
130
+ op->stop_connectivity_watch));
153
131
  }
154
132
 
155
133
  if (op->disconnect_with_error != GRPC_ERROR_NONE) {
156
- if (!first) gpr_strvec_add(&b, gpr_strdup(" "));
157
- first = false;
158
- const char* err = grpc_error_string(op->disconnect_with_error);
159
- gpr_asprintf(&tmp, "DISCONNECT:%s", err);
160
- gpr_strvec_add(&b, tmp);
134
+ out.push_back(absl::StrCat(" DISCONNECT:",
135
+ grpc_error_string(op->disconnect_with_error)));
161
136
  }
162
137
 
163
138
  if (op->goaway_error) {
164
- if (!first) gpr_strvec_add(&b, gpr_strdup(" "));
165
- first = false;
166
- const char* msg = grpc_error_string(op->goaway_error);
167
- gpr_asprintf(&tmp, "SEND_GOAWAY:%s", msg);
168
-
169
- gpr_strvec_add(&b, tmp);
139
+ out.push_back(
140
+ absl::StrCat(" SEND_GOAWAY:%s", grpc_error_string(op->goaway_error)));
170
141
  }
171
142
 
172
143
  if (op->set_accept_stream) {
173
- if (!first) gpr_strvec_add(&b, gpr_strdup(" "));
174
- first = false;
175
- gpr_asprintf(&tmp, "SET_ACCEPT_STREAM:%p(%p,...)", op->set_accept_stream_fn,
176
- op->set_accept_stream_user_data);
177
- gpr_strvec_add(&b, tmp);
144
+ out.push_back(absl::StrFormat(" SET_ACCEPT_STREAM:%p(%p,...)",
145
+ op->set_accept_stream_fn,
146
+ op->set_accept_stream_user_data));
178
147
  }
179
148
 
180
149
  if (op->bind_pollset != nullptr) {
181
- if (!first) gpr_strvec_add(&b, gpr_strdup(" "));
182
- first = false;
183
- gpr_strvec_add(&b, gpr_strdup("BIND_POLLSET"));
150
+ out.push_back(" BIND_POLLSET");
184
151
  }
185
152
 
186
153
  if (op->bind_pollset_set != nullptr) {
187
- if (!first) gpr_strvec_add(&b, gpr_strdup(" "));
188
- first = false;
189
- gpr_strvec_add(&b, gpr_strdup("BIND_POLLSET_SET"));
154
+ out.push_back(" BIND_POLLSET_SET");
190
155
  }
191
156
 
192
157
  if (op->send_ping.on_initiate != nullptr || op->send_ping.on_ack != nullptr) {
193
- if (!first) gpr_strvec_add(&b, gpr_strdup(" "));
194
- // first = false;
195
- gpr_strvec_add(&b, gpr_strdup("SEND_PING"));
158
+ out.push_back(" SEND_PING");
196
159
  }
197
160
 
198
- out = gpr_strvec_flatten(&b, nullptr);
199
- gpr_strvec_destroy(&b);
200
-
201
- return out;
161
+ return absl::StrJoin(out, "");
202
162
  }
203
163
 
204
164
  void grpc_call_log_op(const char* file, int line, gpr_log_severity severity,
205
165
  grpc_call_element* elem,
206
166
  grpc_transport_stream_op_batch* op) {
207
- char* str = grpc_transport_stream_op_batch_string(op);
208
- gpr_log(file, line, severity, "OP[%s:%p]: %s", elem->filter->name, elem, str);
209
- gpr_free(str);
167
+ gpr_log(file, line, severity, "OP[%s:%p]: %s", elem->filter->name, elem,
168
+ grpc_transport_stream_op_batch_string(op).c_str());
210
169
  }