grpc 1.30.2 → 1.32.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 (674) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +723 -15910
  3. data/include/grpc/grpc_security.h +31 -14
  4. data/include/grpc/grpc_security_constants.h +3 -0
  5. data/include/grpc/impl/codegen/README.md +22 -0
  6. data/include/grpc/impl/codegen/grpc_types.h +7 -5
  7. data/include/grpc/impl/codegen/port_platform.h +6 -33
  8. data/src/core/ext/filters/client_channel/backend_metric.cc +12 -9
  9. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -2
  10. data/src/core/ext/filters/client_channel/client_channel.cc +470 -285
  11. data/src/core/ext/filters/client_channel/client_channel.h +1 -1
  12. data/src/core/ext/filters/client_channel/client_channel_channelz.h +0 -3
  13. data/src/core/ext/filters/client_channel/config_selector.cc +62 -0
  14. data/src/core/ext/filters/client_channel/config_selector.h +93 -0
  15. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -2
  16. data/src/core/ext/filters/client_channel/health/health_check_client.cc +8 -1
  17. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +8 -8
  18. data/src/core/ext/filters/client_channel/http_proxy.cc +6 -4
  19. data/src/core/ext/filters/client_channel/lb_policy.h +4 -0
  20. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +6 -4
  21. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +59 -36
  22. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -13
  23. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.h +0 -3
  24. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_channel_secure.cc +1 -37
  25. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +19 -13
  26. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +29 -10
  27. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +5 -4
  28. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +4 -6
  29. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +23 -13
  30. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +18 -12
  31. data/src/core/ext/filters/client_channel/lb_policy/xds/eds.cc +22 -14
  32. data/src/core/ext/filters/client_channel/lb_policy/xds/lrs.cc +18 -9
  33. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +385 -78
  34. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -5
  35. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +5 -2
  36. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +6 -5
  37. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +8 -6
  38. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +9 -7
  39. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +7 -5
  40. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +36 -51
  41. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_libuv.cc +1 -1
  42. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_windows.cc +1 -1
  43. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -2
  44. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -1
  45. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +1 -1
  46. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +383 -31
  47. data/src/core/ext/filters/client_channel/resolver_registry.cc +13 -14
  48. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +6 -7
  49. data/src/core/ext/filters/client_channel/resolver_result_parsing.h +0 -1
  50. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +38 -32
  51. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +39 -20
  52. data/src/core/ext/filters/client_channel/server_address.cc +40 -7
  53. data/src/core/ext/filters/client_channel/server_address.h +42 -4
  54. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +142 -0
  55. data/src/core/ext/filters/client_channel/subchannel.cc +65 -24
  56. data/src/core/ext/filters/client_channel/subchannel.h +16 -4
  57. data/src/core/ext/filters/http/client/http_client_filter.cc +5 -5
  58. data/src/core/ext/filters/http/http_filters_plugin.cc +2 -1
  59. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +74 -33
  60. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +3 -1
  61. data/src/core/ext/filters/max_age/max_age_filter.cc +2 -1
  62. data/src/core/ext/filters/message_size/message_size_filter.cc +56 -80
  63. data/src/core/ext/filters/message_size/message_size_filter.h +6 -0
  64. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +87 -31
  65. data/src/core/ext/transport/chttp2/client/chttp2_connector.h +18 -1
  66. data/src/core/ext/transport/chttp2/client/secure/secure_channel_create.cc +10 -35
  67. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +378 -348
  68. data/src/core/ext/transport/chttp2/server/chttp2_server.h +7 -2
  69. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +3 -3
  70. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +10 -16
  71. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +9 -9
  72. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +256 -279
  73. data/src/core/ext/transport/chttp2/transport/flow_control.cc +23 -28
  74. data/src/core/ext/transport/chttp2/transport/flow_control.h +14 -16
  75. data/src/core/ext/transport/chttp2/transport/frame_data.cc +9 -12
  76. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +4 -6
  77. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -6
  78. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +12 -13
  79. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +8 -9
  80. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +9 -12
  81. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +25 -29
  82. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +13 -17
  83. data/src/core/ext/transport/chttp2/transport/internal.h +18 -1
  84. data/src/core/ext/transport/chttp2/transport/parsing.cc +34 -71
  85. data/src/core/ext/transport/chttp2/transport/writing.cc +15 -19
  86. data/src/core/ext/transport/inproc/inproc_transport.cc +47 -27
  87. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +0 -1
  88. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +3 -4
  89. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.c +224 -0
  90. data/src/core/ext/upb-generated/envoy/config/accesslog/v3/accesslog.upb.h +700 -0
  91. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.c +74 -0
  92. data/src/core/ext/upb-generated/envoy/config/cluster/v3/circuit_breaker.upb.h +226 -0
  93. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +380 -0
  94. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +1378 -0
  95. data/src/core/ext/upb-generated/envoy/{api/v2/cluster → config/cluster/v3}/filter.upb.c +8 -8
  96. data/src/core/ext/upb-generated/envoy/config/cluster/v3/filter.upb.h +69 -0
  97. data/src/core/ext/upb-generated/envoy/{api/v2/cluster → config/cluster/v3}/outlier_detection.upb.c +8 -8
  98. data/src/core/ext/upb-generated/envoy/config/cluster/v3/outlier_detection.upb.h +323 -0
  99. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.c +112 -0
  100. data/src/core/ext/upb-generated/envoy/config/core/v3/address.upb.h +334 -0
  101. data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/backoff.upb.c +8 -8
  102. data/src/core/ext/upb-generated/envoy/config/core/v3/backoff.upb.h +79 -0
  103. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +309 -0
  104. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +869 -0
  105. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.c +96 -0
  106. data/src/core/ext/upb-generated/envoy/config/core/v3/config_source.upb.h +328 -0
  107. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.c +34 -0
  108. data/src/core/ext/upb-generated/envoy/config/core/v3/event_service_config.upb.h +71 -0
  109. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.c +195 -0
  110. data/src/core/ext/upb-generated/envoy/config/core/v3/grpc_service.upb.h +634 -0
  111. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.c +170 -0
  112. data/src/core/ext/upb-generated/envoy/config/core/v3/health_check.upb.h +684 -0
  113. data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/http_uri.upb.c +8 -8
  114. data/src/core/ext/upb-generated/envoy/config/core/v3/http_uri.upb.h +80 -0
  115. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +152 -0
  116. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +536 -0
  117. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.c +28 -0
  118. data/src/core/ext/upb-generated/envoy/config/core/v3/proxy_protocol.upb.h +58 -0
  119. data/src/core/ext/upb-generated/envoy/{api/v2/core → config/core/v3}/socket_option.upb.c +6 -6
  120. data/src/core/ext/upb-generated/envoy/config/core/v3/socket_option.upb.h +88 -0
  121. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.c +91 -0
  122. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint.upb.h +220 -0
  123. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.c +91 -0
  124. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/endpoint_components.upb.h +273 -0
  125. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.c +112 -0
  126. data/src/core/ext/upb-generated/envoy/config/endpoint/v3/load_report.upb.h +332 -0
  127. data/src/core/ext/upb-generated/envoy/config/listener/{v2 → v3}/api_listener.upb.c +8 -8
  128. data/src/core/ext/upb-generated/envoy/config/listener/v3/api_listener.upb.h +65 -0
  129. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +108 -0
  130. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +401 -0
  131. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +138 -0
  132. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +490 -0
  133. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +41 -0
  134. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +94 -0
  135. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +174 -0
  136. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.h +599 -0
  137. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +63 -0
  138. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +204 -0
  139. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +773 -0
  140. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +2855 -0
  141. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.c +59 -0
  142. data/src/core/ext/upb-generated/envoy/config/route/v3/scoped_route.upb.h +135 -0
  143. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.c +50 -0
  144. data/src/core/ext/upb-generated/envoy/config/trace/v3/http_tracer.upb.h +108 -0
  145. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +312 -0
  146. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +1125 -0
  147. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.c +20 -0
  148. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/cert.upb.h +34 -0
  149. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +111 -0
  150. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +401 -0
  151. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.c +72 -0
  152. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/secret.upb.h +198 -0
  153. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.c +105 -0
  154. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/tls.upb.h +388 -0
  155. data/src/core/ext/upb-generated/envoy/{api/v2 → service/cluster/v3}/cds.upb.c +5 -6
  156. data/src/core/ext/upb-generated/envoy/service/cluster/v3/cds.upb.h +49 -0
  157. data/src/core/ext/upb-generated/envoy/service/discovery/{v2 → v3}/ads.upb.c +5 -4
  158. data/src/core/ext/upb-generated/envoy/service/discovery/v3/ads.upb.h +49 -0
  159. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.c +129 -0
  160. data/src/core/ext/upb-generated/envoy/service/discovery/v3/discovery.upb.h +386 -0
  161. data/src/core/ext/upb-generated/envoy/{api/v2 → service/endpoint/v3}/eds.upb.c +5 -6
  162. data/src/core/ext/upb-generated/envoy/service/endpoint/v3/eds.upb.h +49 -0
  163. data/src/core/ext/upb-generated/envoy/{api/v2 → service/listener/v3}/lds.upb.c +5 -6
  164. data/src/core/ext/upb-generated/envoy/service/listener/v3/lds.upb.h +49 -0
  165. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.c +55 -0
  166. data/src/core/ext/upb-generated/envoy/service/load_stats/v3/lrs.upb.h +136 -0
  167. data/src/core/ext/upb-generated/envoy/{api/v2 → service/route/v3}/rds.upb.c +5 -6
  168. data/src/core/ext/upb-generated/envoy/service/route/v3/rds.upb.h +49 -0
  169. data/src/core/ext/upb-generated/envoy/{api/v2 → service/route/v3}/srds.upb.c +5 -6
  170. data/src/core/ext/upb-generated/envoy/service/route/v3/srds.upb.h +49 -0
  171. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.c +47 -0
  172. data/src/core/ext/upb-generated/envoy/type/matcher/v3/metadata.upb.h +114 -0
  173. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.c +35 -0
  174. data/src/core/ext/upb-generated/envoy/type/matcher/v3/number.upb.h +77 -0
  175. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.c +34 -0
  176. data/src/core/ext/upb-generated/envoy/type/matcher/v3/path.upb.h +71 -0
  177. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +64 -0
  178. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.h +145 -0
  179. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.c +53 -0
  180. data/src/core/ext/upb-generated/envoy/type/matcher/v3/string.upb.h +127 -0
  181. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.c +63 -0
  182. data/src/core/ext/upb-generated/envoy/type/matcher/v3/value.upb.h +188 -0
  183. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.c +88 -0
  184. data/src/core/ext/upb-generated/envoy/type/metadata/v3/metadata.upb.h +258 -0
  185. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.c +90 -0
  186. data/src/core/ext/upb-generated/envoy/type/tracing/v3/custom_tag.upb.h +250 -0
  187. data/src/core/ext/upb-generated/envoy/type/{http.upb.c → v3/http.upb.c} +2 -2
  188. data/src/core/ext/upb-generated/envoy/type/{http.upb.h → v3/http.upb.h} +8 -9
  189. data/src/core/ext/upb-generated/envoy/type/{percent.upb.c → v3/percent.upb.c} +9 -8
  190. data/src/core/ext/upb-generated/envoy/type/v3/percent.upb.h +86 -0
  191. data/src/core/ext/upb-generated/envoy/type/{range.upb.c → v3/range.upb.c} +12 -11
  192. data/src/core/ext/upb-generated/envoy/type/v3/range.upb.h +111 -0
  193. data/src/core/ext/upb-generated/envoy/type/{semantic_version.upb.c → v3/semantic_version.upb.c} +6 -5
  194. data/src/core/ext/upb-generated/envoy/type/v3/semantic_version.upb.h +61 -0
  195. data/src/core/ext/upb-generated/gogoproto/gogo.upb.h +0 -1
  196. data/src/core/ext/upb-generated/google/api/annotations.upb.h +0 -1
  197. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.c +234 -0
  198. data/src/core/ext/upb-generated/google/api/expr/v1alpha1/syntax.upb.h +759 -0
  199. data/src/core/ext/upb-generated/google/api/http.upb.h +29 -28
  200. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +5 -6
  201. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +39 -39
  202. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +412 -386
  203. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +5 -6
  204. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +1 -2
  205. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +1 -1
  206. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +34 -55
  207. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +5 -6
  208. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +27 -28
  209. data/src/core/ext/upb-generated/google/rpc/status.upb.h +8 -8
  210. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +1 -1
  211. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +32 -45
  212. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +4 -4
  213. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +157 -178
  214. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +14 -13
  215. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +6 -7
  216. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +59 -56
  217. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +11 -12
  218. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +0 -1
  219. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +5 -6
  220. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.c +27 -0
  221. data/src/core/ext/upb-generated/udpa/annotations/versioning.upb.h +53 -0
  222. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +6 -6
  223. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +41 -68
  224. data/src/core/ext/upb-generated/validate/validate.upb.c +11 -11
  225. data/src/core/ext/upb-generated/validate/validate.upb.h +537 -536
  226. data/src/core/ext/xds/xds_api.cc +2388 -0
  227. data/src/core/ext/{filters/client_channel/xds → xds}/xds_api.h +120 -40
  228. data/src/core/ext/{filters/client_channel/xds → xds}/xds_bootstrap.cc +56 -25
  229. data/src/core/ext/{filters/client_channel/xds → xds}/xds_bootstrap.h +8 -3
  230. data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel.h +4 -4
  231. data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel_args.h +3 -3
  232. data/src/core/ext/{filters/client_channel/xds → xds}/xds_channel_secure.cc +2 -5
  233. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.cc +94 -347
  234. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client.h +12 -45
  235. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.cc +2 -2
  236. data/src/core/ext/{filters/client_channel/xds → xds}/xds_client_stats.h +13 -13
  237. data/src/core/lib/channel/channel_trace.cc +2 -6
  238. data/src/core/lib/channel/channelz.cc +19 -30
  239. data/src/core/lib/channel/channelz.h +1 -1
  240. data/src/core/lib/channel/channelz_registry.cc +3 -1
  241. data/src/core/lib/gpr/log_linux.cc +6 -8
  242. data/src/core/lib/gpr/log_posix.cc +6 -8
  243. data/src/core/lib/gpr/string.cc +10 -9
  244. data/src/core/lib/gpr/string.h +4 -2
  245. data/src/core/lib/gpr/sync_posix.cc +2 -8
  246. data/src/core/lib/gprpp/global_config_env.cc +8 -6
  247. data/src/core/lib/http/httpcli.cc +13 -10
  248. data/src/core/lib/http/httpcli_security_connector.cc +5 -5
  249. data/src/core/lib/iomgr/cfstream_handle.cc +1 -0
  250. data/src/core/lib/iomgr/endpoint.cc +5 -1
  251. data/src/core/lib/iomgr/endpoint.h +7 -3
  252. data/src/core/lib/iomgr/endpoint_cfstream.cc +32 -11
  253. data/src/core/lib/iomgr/endpoint_pair_posix.cc +10 -10
  254. data/src/core/lib/iomgr/error_cfstream.cc +9 -8
  255. data/src/core/lib/iomgr/ev_epoll1_linux.cc +5 -6
  256. data/src/core/lib/iomgr/ev_epollex_linux.cc +15 -21
  257. data/src/core/lib/iomgr/ev_poll_posix.cc +6 -5
  258. data/src/core/lib/iomgr/is_epollexclusive_available.cc +14 -0
  259. data/src/core/{ext/filters/client_channel → lib/iomgr}/parse_address.cc +1 -1
  260. data/src/core/{ext/filters/client_channel → lib/iomgr}/parse_address.h +3 -3
  261. data/src/core/lib/iomgr/port.h +1 -21
  262. data/src/core/lib/iomgr/resolve_address_custom.cc +13 -18
  263. data/src/core/lib/iomgr/resolve_address_windows.cc +8 -8
  264. data/src/core/lib/iomgr/resource_quota.cc +34 -31
  265. data/src/core/lib/iomgr/sockaddr_utils.cc +9 -6
  266. data/src/core/lib/iomgr/sockaddr_utils.h +3 -2
  267. data/src/core/lib/iomgr/socket_utils_common_posix.cc +95 -55
  268. data/src/core/lib/iomgr/socket_windows.cc +4 -5
  269. data/src/core/lib/iomgr/tcp_client_cfstream.cc +9 -11
  270. data/src/core/lib/iomgr/tcp_client_custom.cc +6 -9
  271. data/src/core/lib/iomgr/tcp_client_posix.cc +27 -36
  272. data/src/core/lib/iomgr/tcp_client_windows.cc +9 -9
  273. data/src/core/lib/iomgr/tcp_custom.cc +33 -17
  274. data/src/core/lib/iomgr/tcp_custom.h +1 -1
  275. data/src/core/lib/iomgr/tcp_posix.cc +31 -13
  276. data/src/core/lib/iomgr/tcp_server.cc +3 -4
  277. data/src/core/lib/iomgr/tcp_server.h +7 -5
  278. data/src/core/lib/iomgr/tcp_server_custom.cc +6 -14
  279. data/src/core/lib/iomgr/tcp_server_posix.cc +34 -41
  280. data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -4
  281. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -7
  282. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -9
  283. data/src/core/lib/iomgr/tcp_server_windows.cc +16 -16
  284. data/src/core/lib/iomgr/tcp_windows.cc +26 -10
  285. data/src/core/lib/iomgr/timer_generic.cc +13 -12
  286. data/src/core/lib/iomgr/udp_server.cc +24 -23
  287. data/src/core/lib/iomgr/udp_server.h +5 -2
  288. data/src/core/lib/iomgr/unix_sockets_posix.cc +9 -14
  289. data/src/core/lib/iomgr/unix_sockets_posix.h +3 -1
  290. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +5 -2
  291. data/src/core/lib/json/json_reader.cc +20 -21
  292. data/src/core/lib/security/authorization/authorization_engine.cc +177 -0
  293. data/src/core/lib/security/authorization/authorization_engine.h +84 -0
  294. data/src/core/lib/security/authorization/evaluate_args.cc +153 -0
  295. data/src/core/lib/security/authorization/evaluate_args.h +59 -0
  296. data/src/core/lib/security/authorization/mock_cel/activation.h +57 -0
  297. data/src/core/lib/security/authorization/mock_cel/cel_expr_builder_factory.h +42 -0
  298. data/src/core/lib/security/authorization/mock_cel/cel_expression.h +68 -0
  299. data/src/core/lib/security/authorization/mock_cel/cel_value.h +93 -0
  300. data/src/core/lib/security/authorization/mock_cel/evaluator_core.h +67 -0
  301. data/src/core/lib/security/authorization/mock_cel/flat_expr_builder.h +56 -0
  302. data/src/core/lib/security/authorization/mock_cel/statusor.h +50 -0
  303. data/src/core/lib/security/credentials/credentials.h +5 -3
  304. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +8 -6
  305. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +64 -43
  306. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -4
  307. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +19 -28
  308. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -6
  309. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +20 -0
  310. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +10 -0
  311. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +10 -0
  312. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +11 -12
  313. data/src/core/lib/security/security_connector/security_connector.cc +2 -0
  314. data/src/core/lib/security/security_connector/security_connector.h +1 -1
  315. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +18 -11
  316. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +5 -0
  317. data/src/core/lib/security/security_connector/ssl_utils.cc +44 -23
  318. data/src/core/lib/security/security_connector/ssl_utils.h +6 -2
  319. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +27 -24
  320. data/src/core/lib/security/transport/client_auth_filter.cc +10 -9
  321. data/src/core/lib/security/transport/secure_endpoint.cc +7 -1
  322. data/src/core/lib/security/util/json_util.cc +12 -13
  323. data/src/core/lib/slice/slice.cc +38 -1
  324. data/src/core/lib/slice/slice_internal.h +1 -0
  325. data/src/core/lib/surface/call.cc +52 -53
  326. data/src/core/lib/surface/call.h +2 -1
  327. data/src/core/lib/surface/channel.cc +28 -20
  328. data/src/core/lib/surface/channel.h +12 -2
  329. data/src/core/lib/surface/completion_queue.cc +0 -5
  330. data/src/core/lib/surface/init.cc +1 -1
  331. data/src/core/lib/surface/server.cc +1102 -1347
  332. data/src/core/lib/surface/server.h +369 -71
  333. data/src/core/lib/surface/version.cc +2 -2
  334. data/src/core/lib/transport/authority_override.cc +38 -0
  335. data/src/core/lib/transport/authority_override.h +32 -0
  336. data/src/core/lib/transport/connectivity_state.cc +18 -13
  337. data/src/core/lib/transport/connectivity_state.h +18 -6
  338. data/src/core/lib/transport/error_utils.cc +13 -0
  339. data/src/core/lib/transport/error_utils.h +6 -0
  340. data/src/core/lib/transport/static_metadata.cc +295 -276
  341. data/src/core/lib/transport/static_metadata.h +80 -73
  342. data/src/core/lib/transport/transport.h +13 -0
  343. data/src/core/lib/uri/uri_parser.cc +30 -35
  344. data/src/core/lib/uri/uri_parser.h +3 -1
  345. data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -0
  346. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +23 -13
  347. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +24 -0
  348. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -0
  349. data/src/core/tsi/ssl_transport_security.cc +102 -11
  350. data/src/core/tsi/ssl_transport_security.h +14 -2
  351. data/src/core/tsi/transport_security_interface.h +5 -0
  352. data/src/ruby/bin/math_services_pb.rb +4 -4
  353. data/src/ruby/ext/grpc/extconf.rb +5 -2
  354. data/src/ruby/ext/grpc/rb_call.c +3 -2
  355. data/src/ruby/ext/grpc/rb_call.h +4 -0
  356. data/src/ruby/ext/grpc/rb_call_credentials.c +54 -10
  357. data/src/ruby/ext/grpc/rb_channel_credentials.c +9 -0
  358. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +2 -2
  359. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +4 -4
  360. data/src/ruby/lib/grpc/generic/client_stub.rb +1 -1
  361. data/src/ruby/lib/grpc/generic/interceptors.rb +1 -1
  362. data/src/ruby/lib/grpc/version.rb +1 -1
  363. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +2 -2
  364. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +5 -0
  365. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +28 -12
  366. data/src/ruby/spec/channel_credentials_spec.rb +10 -0
  367. data/src/ruby/spec/generic/active_call_spec.rb +19 -8
  368. data/src/ruby/spec/pb/codegen/grpc/testing/same_package_service_name.proto +27 -0
  369. data/src/ruby/spec/pb/codegen/grpc/testing/same_ruby_package_service_name.proto +29 -0
  370. data/src/ruby/spec/pb/codegen/package_option_spec.rb +20 -0
  371. data/src/ruby/spec/user_agent_spec.rb +74 -0
  372. data/third_party/abseil-cpp/absl/algorithm/container.h +1727 -0
  373. data/third_party/abseil-cpp/absl/base/internal/direct_mmap.h +161 -0
  374. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.cc +93 -0
  375. data/third_party/abseil-cpp/absl/base/internal/exponential_biased.h +130 -0
  376. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.cc +620 -0
  377. data/third_party/abseil-cpp/absl/base/internal/low_level_alloc.h +126 -0
  378. data/third_party/abseil-cpp/absl/container/fixed_array.h +515 -0
  379. data/third_party/abseil-cpp/absl/container/flat_hash_set.h +503 -0
  380. data/third_party/abseil-cpp/absl/container/internal/common.h +202 -0
  381. data/third_party/abseil-cpp/absl/container/internal/container_memory.h +440 -0
  382. data/third_party/abseil-cpp/absl/container/internal/hash_function_defaults.h +146 -0
  383. data/third_party/abseil-cpp/absl/container/internal/hash_policy_traits.h +191 -0
  384. data/third_party/abseil-cpp/absl/container/internal/hashtable_debug_hooks.h +85 -0
  385. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.cc +269 -0
  386. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler.h +297 -0
  387. data/third_party/abseil-cpp/absl/container/internal/hashtablez_sampler_force_weak_definition.cc +30 -0
  388. data/third_party/abseil-cpp/absl/container/internal/have_sse.h +49 -0
  389. data/third_party/abseil-cpp/absl/container/internal/layout.h +741 -0
  390. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.cc +48 -0
  391. data/third_party/abseil-cpp/absl/container/internal/raw_hash_set.h +1882 -0
  392. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.cc +138 -0
  393. data/third_party/abseil-cpp/absl/debugging/internal/address_is_readable.h +32 -0
  394. data/third_party/abseil-cpp/absl/debugging/internal/demangle.cc +1895 -0
  395. data/third_party/abseil-cpp/absl/debugging/internal/demangle.h +71 -0
  396. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.cc +382 -0
  397. data/third_party/abseil-cpp/absl/debugging/internal/elf_mem_image.h +134 -0
  398. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_aarch64-inl.inc +192 -0
  399. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_arm-inl.inc +125 -0
  400. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_config.h +70 -0
  401. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_generic-inl.inc +99 -0
  402. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_powerpc-inl.inc +248 -0
  403. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_unimplemented-inl.inc +24 -0
  404. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_win32-inl.inc +85 -0
  405. data/third_party/abseil-cpp/absl/debugging/internal/stacktrace_x86-inl.inc +346 -0
  406. data/third_party/abseil-cpp/absl/debugging/internal/symbolize.h +128 -0
  407. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.cc +194 -0
  408. data/third_party/abseil-cpp/absl/debugging/internal/vdso_support.h +158 -0
  409. data/third_party/abseil-cpp/absl/debugging/stacktrace.cc +140 -0
  410. data/third_party/abseil-cpp/absl/debugging/stacktrace.h +231 -0
  411. data/third_party/abseil-cpp/absl/debugging/symbolize.cc +25 -0
  412. data/third_party/abseil-cpp/absl/debugging/symbolize.h +99 -0
  413. data/third_party/abseil-cpp/absl/debugging/symbolize_elf.inc +1480 -0
  414. data/third_party/abseil-cpp/absl/debugging/symbolize_unimplemented.inc +40 -0
  415. data/third_party/abseil-cpp/absl/debugging/symbolize_win32.inc +81 -0
  416. data/third_party/abseil-cpp/absl/functional/function_ref.h +139 -0
  417. data/third_party/abseil-cpp/absl/functional/internal/function_ref.h +106 -0
  418. data/third_party/abseil-cpp/absl/hash/hash.h +324 -0
  419. data/third_party/abseil-cpp/absl/hash/internal/city.cc +346 -0
  420. data/third_party/abseil-cpp/absl/hash/internal/city.h +96 -0
  421. data/third_party/abseil-cpp/absl/hash/internal/hash.cc +55 -0
  422. data/third_party/abseil-cpp/absl/hash/internal/hash.h +988 -0
  423. data/third_party/abseil-cpp/absl/status/status.cc +447 -0
  424. data/third_party/abseil-cpp/absl/status/status.h +428 -0
  425. data/third_party/abseil-cpp/absl/status/status_payload_printer.cc +43 -0
  426. data/third_party/abseil-cpp/absl/status/status_payload_printer.h +51 -0
  427. data/third_party/abseil-cpp/absl/strings/cord.cc +2019 -0
  428. data/third_party/abseil-cpp/absl/strings/cord.h +1121 -0
  429. data/third_party/abseil-cpp/absl/strings/internal/cord_internal.h +151 -0
  430. data/third_party/abseil-cpp/absl/synchronization/barrier.cc +52 -0
  431. data/third_party/abseil-cpp/absl/synchronization/barrier.h +79 -0
  432. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.cc +57 -0
  433. data/third_party/abseil-cpp/absl/synchronization/blocking_counter.h +99 -0
  434. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.cc +140 -0
  435. data/third_party/abseil-cpp/absl/synchronization/internal/create_thread_identity.h +60 -0
  436. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.cc +697 -0
  437. data/third_party/abseil-cpp/absl/synchronization/internal/graphcycles.h +141 -0
  438. data/third_party/abseil-cpp/absl/synchronization/internal/kernel_timeout.h +155 -0
  439. data/third_party/abseil-cpp/absl/synchronization/internal/mutex_nonprod.inc +261 -0
  440. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.cc +106 -0
  441. data/third_party/abseil-cpp/absl/synchronization/internal/per_thread_sem.h +115 -0
  442. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.cc +484 -0
  443. data/third_party/abseil-cpp/absl/synchronization/internal/waiter.h +159 -0
  444. data/third_party/abseil-cpp/absl/synchronization/mutex.cc +2728 -0
  445. data/third_party/abseil-cpp/absl/synchronization/mutex.h +1056 -0
  446. data/third_party/abseil-cpp/absl/synchronization/notification.cc +78 -0
  447. data/third_party/abseil-cpp/absl/synchronization/notification.h +123 -0
  448. data/third_party/abseil-cpp/absl/types/bad_variant_access.cc +64 -0
  449. data/third_party/abseil-cpp/absl/types/bad_variant_access.h +82 -0
  450. data/third_party/abseil-cpp/absl/types/internal/variant.h +1646 -0
  451. data/third_party/abseil-cpp/absl/types/variant.h +861 -0
  452. data/third_party/boringssl-with-bazel/err_data.c +266 -254
  453. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +3 -3
  454. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +3 -3
  455. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +1 -1
  456. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +3 -3
  457. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
  458. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +1 -1
  459. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -1
  460. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +1 -1
  461. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +1 -1
  462. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +1 -1
  463. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +1 -1
  464. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +1 -0
  465. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +12 -52
  466. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +0 -22
  467. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +159 -0
  468. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +17 -1
  469. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +11 -1
  470. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +2 -1
  471. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +13 -11
  472. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +24 -23
  473. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +20 -16
  474. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -2
  475. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +3 -3
  476. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +62 -0
  477. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +456 -0
  478. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +192 -0
  479. data/third_party/boringssl-with-bazel/src/crypto/mem.c +29 -15
  480. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +7 -0
  481. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -5
  482. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +0 -29
  483. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +116 -363
  484. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +7 -45
  485. data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +4 -4
  486. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +8 -0
  487. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +4 -4
  488. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -67
  489. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +13 -6
  490. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +10 -0
  491. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +41 -0
  492. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +4 -1
  493. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +28 -9
  494. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +25 -0
  495. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +35 -13
  496. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +0 -154
  497. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +20 -0
  498. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +28 -6
  499. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +5 -0
  500. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +74 -35
  501. data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +16 -4
  502. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +52 -0
  503. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +22 -22
  504. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +2 -2
  505. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +69 -0
  506. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +72 -23
  507. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +2 -3
  508. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +1 -10
  509. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +800 -715
  510. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +3 -3
  511. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +9 -2
  512. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +2 -2
  513. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +9 -0
  514. data/third_party/boringssl-with-bazel/src/ssl/internal.h +21 -14
  515. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +7 -7
  516. data/third_party/boringssl-with-bazel/src/ssl/ssl_cert.cc +3 -6
  517. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +38 -0
  518. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +4 -24
  519. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +5 -5
  520. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +45 -24
  521. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +34 -9
  522. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +31 -21
  523. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +17 -9
  524. data/third_party/boringssl-with-bazel/src/ssl/tls_record.cc +5 -3
  525. data/third_party/re2/re2/bitmap256.h +117 -0
  526. data/third_party/re2/re2/bitstate.cc +385 -0
  527. data/third_party/re2/re2/compile.cc +1279 -0
  528. data/third_party/re2/re2/dfa.cc +2130 -0
  529. data/third_party/re2/re2/filtered_re2.cc +121 -0
  530. data/third_party/re2/re2/filtered_re2.h +109 -0
  531. data/third_party/re2/re2/mimics_pcre.cc +197 -0
  532. data/third_party/re2/re2/nfa.cc +713 -0
  533. data/third_party/re2/re2/onepass.cc +623 -0
  534. data/third_party/re2/re2/parse.cc +2464 -0
  535. data/third_party/re2/re2/perl_groups.cc +119 -0
  536. data/third_party/re2/re2/pod_array.h +55 -0
  537. data/third_party/re2/re2/prefilter.cc +710 -0
  538. data/third_party/re2/re2/prefilter.h +108 -0
  539. data/third_party/re2/re2/prefilter_tree.cc +407 -0
  540. data/third_party/re2/re2/prefilter_tree.h +139 -0
  541. data/third_party/re2/re2/prog.cc +988 -0
  542. data/third_party/re2/re2/prog.h +436 -0
  543. data/third_party/re2/re2/re2.cc +1362 -0
  544. data/third_party/re2/re2/re2.h +1002 -0
  545. data/third_party/re2/re2/regexp.cc +980 -0
  546. data/third_party/re2/re2/regexp.h +659 -0
  547. data/third_party/re2/re2/set.cc +154 -0
  548. data/third_party/re2/re2/set.h +80 -0
  549. data/third_party/re2/re2/simplify.cc +657 -0
  550. data/third_party/re2/re2/sparse_array.h +392 -0
  551. data/third_party/re2/re2/sparse_set.h +264 -0
  552. data/third_party/re2/re2/stringpiece.cc +65 -0
  553. data/third_party/re2/re2/stringpiece.h +210 -0
  554. data/third_party/re2/re2/tostring.cc +351 -0
  555. data/third_party/re2/re2/unicode_casefold.cc +582 -0
  556. data/third_party/re2/re2/unicode_casefold.h +78 -0
  557. data/third_party/re2/re2/unicode_groups.cc +6269 -0
  558. data/third_party/re2/re2/unicode_groups.h +67 -0
  559. data/third_party/re2/re2/walker-inl.h +246 -0
  560. data/third_party/re2/util/benchmark.h +156 -0
  561. data/third_party/re2/util/flags.h +26 -0
  562. data/third_party/re2/util/logging.h +109 -0
  563. data/third_party/re2/util/malloc_counter.h +19 -0
  564. data/third_party/re2/util/mix.h +41 -0
  565. data/third_party/re2/util/mutex.h +148 -0
  566. data/third_party/re2/util/pcre.cc +1025 -0
  567. data/third_party/re2/util/pcre.h +681 -0
  568. data/third_party/re2/util/rune.cc +260 -0
  569. data/third_party/re2/util/strutil.cc +149 -0
  570. data/third_party/re2/util/strutil.h +21 -0
  571. data/third_party/re2/util/test.h +50 -0
  572. data/third_party/re2/util/utf.h +44 -0
  573. data/third_party/re2/util/util.h +42 -0
  574. data/third_party/upb/upb/decode.c +517 -505
  575. data/third_party/upb/upb/encode.c +165 -123
  576. data/third_party/upb/upb/msg.c +130 -64
  577. data/third_party/upb/upb/msg.h +418 -14
  578. data/third_party/upb/upb/port_def.inc +35 -6
  579. data/third_party/upb/upb/port_undef.inc +8 -1
  580. data/third_party/upb/upb/table.c +53 -86
  581. data/third_party/upb/upb/table.int.h +11 -52
  582. data/third_party/upb/upb/upb.c +151 -125
  583. data/third_party/upb/upb/upb.h +91 -147
  584. data/third_party/upb/upb/upb.hpp +88 -0
  585. metadata +308 -148
  586. data/src/core/ext/filters/client_channel/xds/xds_api.cc +0 -1906
  587. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.c +0 -21
  588. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -35
  589. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.c +0 -114
  590. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +0 -418
  591. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.c +0 -72
  592. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +0 -197
  593. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.c +0 -105
  594. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +0 -378
  595. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +0 -53
  596. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +0 -403
  597. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +0 -1447
  598. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.c +0 -74
  599. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +0 -218
  600. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +0 -69
  601. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +0 -305
  602. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.c +0 -112
  603. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +0 -328
  604. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +0 -78
  605. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +0 -313
  606. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +0 -897
  607. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.c +0 -96
  608. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +0 -322
  609. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.c +0 -34
  610. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +0 -72
  611. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.c +0 -197
  612. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +0 -642
  613. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.c +0 -172
  614. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +0 -673
  615. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +0 -80
  616. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.c +0 -152
  617. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +0 -518
  618. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +0 -89
  619. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +0 -129
  620. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +0 -392
  621. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +0 -53
  622. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +0 -92
  623. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +0 -240
  624. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.c +0 -18
  625. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -33
  626. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.c +0 -91
  627. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +0 -266
  628. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.c +0 -112
  629. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +0 -324
  630. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +0 -53
  631. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.c +0 -109
  632. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +0 -399
  633. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.c +0 -18
  634. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -33
  635. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +0 -145
  636. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +0 -527
  637. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.c +0 -43
  638. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +0 -112
  639. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +0 -53
  640. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.c +0 -63
  641. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +0 -199
  642. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.c +0 -18
  643. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -33
  644. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +0 -815
  645. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +0 -3032
  646. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.c +0 -59
  647. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +0 -134
  648. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +0 -53
  649. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +0 -228
  650. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +0 -725
  651. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.c +0 -316
  652. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +0 -1132
  653. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +0 -65
  654. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.c +0 -51
  655. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +0 -125
  656. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +0 -50
  657. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.c +0 -54
  658. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +0 -134
  659. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.c +0 -63
  660. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +0 -144
  661. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.c +0 -53
  662. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +0 -133
  663. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.c +0 -88
  664. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +0 -258
  665. data/src/core/ext/upb-generated/envoy/type/percent.upb.h +0 -87
  666. data/src/core/ext/upb-generated/envoy/type/range.upb.h +0 -112
  667. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +0 -62
  668. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.c +0 -89
  669. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +0 -249
  670. data/src/core/lib/security/transport/target_authority_table.cc +0 -75
  671. data/src/core/lib/security/transport/target_authority_table.h +0 -40
  672. data/src/core/lib/slice/slice_hash_table.h +0 -199
  673. data/src/core/lib/slice/slice_weak_hash_table.h +0 -102
  674. data/third_party/upb/upb/generated_util.h +0 -105
@@ -23,9 +23,10 @@
23
23
  #include <assert.h>
24
24
  #include <string.h>
25
25
 
26
+ #include "absl/strings/str_format.h"
27
+
26
28
  #include <grpc/support/alloc.h>
27
29
  #include <grpc/support/log.h>
28
- #include <grpc/support/string_util.h>
29
30
 
30
31
  #include "src/core/lib/debug/trace.h"
31
32
  #include "src/core/lib/gpr/murmur_hash.h"
@@ -119,13 +120,11 @@ grpc_error* grpc_chttp2_hptbl_set_current_table_size(grpc_chttp2_hptbl* tbl,
119
120
  return GRPC_ERROR_NONE;
120
121
  }
121
122
  if (bytes > tbl->max_bytes) {
122
- char* msg;
123
- gpr_asprintf(&msg,
124
- "Attempt to make hpack table %d bytes when max is %d bytes",
125
- bytes, tbl->max_bytes);
126
- grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
127
- gpr_free(msg);
128
- return err;
123
+ return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
124
+ absl::StrFormat(
125
+ "Attempt to make hpack table %d bytes when max is %d bytes", bytes,
126
+ tbl->max_bytes)
127
+ .c_str());
129
128
  }
130
129
  if (GRPC_TRACE_FLAG_ENABLED(grpc_http_trace)) {
131
130
  gpr_log(GPR_INFO, "Update hpack parser table size to %d", bytes);
@@ -153,15 +152,12 @@ grpc_error* grpc_chttp2_hptbl_add(grpc_chttp2_hptbl* tbl, grpc_mdelem md) {
153
152
  GRPC_CHTTP2_HPACK_ENTRY_OVERHEAD;
154
153
 
155
154
  if (tbl->current_table_bytes > tbl->max_bytes) {
156
- char* msg;
157
- gpr_asprintf(
158
- &msg,
159
- "HPACK max table size reduced to %d but not reflected by hpack "
160
- "stream (still at %d)",
161
- tbl->max_bytes, tbl->current_table_bytes);
162
- grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
163
- gpr_free(msg);
164
- return err;
155
+ return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
156
+ absl::StrFormat(
157
+ "HPACK max table size reduced to %d but not reflected by hpack "
158
+ "stream (still at %d)",
159
+ tbl->max_bytes, tbl->current_table_bytes)
160
+ .c_str());
165
161
  }
166
162
 
167
163
  /* we can't add elements bigger than the max table size */
@@ -52,8 +52,12 @@ class ContextList;
52
52
  /* streams are kept in various linked lists depending on what things need to
53
53
  happen to them... this enum labels each list */
54
54
  typedef enum {
55
+ /* If a stream is in the following two lists, an explicit ref is associated
56
+ with the stream */
55
57
  GRPC_CHTTP2_LIST_WRITABLE,
56
58
  GRPC_CHTTP2_LIST_WRITING,
59
+ /* No additional ref is taken for the following refs. Make sure to remove the
60
+ stream from these lists when the stream is removed. */
57
61
  GRPC_CHTTP2_LIST_STALLED_BY_TRANSPORT,
58
62
  GRPC_CHTTP2_LIST_STALLED_BY_STREAM,
59
63
  /** streams that are waiting to start because there are too many concurrent
@@ -290,7 +294,7 @@ struct grpc_chttp2_transport {
290
294
  grpc_transport base; /* must be first */
291
295
  grpc_core::RefCount refs;
292
296
  grpc_endpoint* ep;
293
- char* peer_string;
297
+ std::string peer_string;
294
298
 
295
299
  grpc_resource_user* resource_user;
296
300
 
@@ -527,6 +531,13 @@ struct grpc_chttp2_stream {
527
531
  grpc_metadata_batch* send_initial_metadata = nullptr;
528
532
  grpc_closure* send_initial_metadata_finished = nullptr;
529
533
  grpc_metadata_batch* send_trailing_metadata = nullptr;
534
+ // TODO(yashykt): Find a better name for the below field and others in this
535
+ // struct to betteer distinguish inputs, return values, and
536
+ // internal state.
537
+ // sent_trailing_metadata_op allows the transport to fill in to the upper
538
+ // layer whether this stream was able to send its trailing metadata (used for
539
+ // detecting cancellation on the server-side)..
540
+ bool* sent_trailing_metadata_op = nullptr;
530
541
  grpc_closure* send_trailing_metadata_finished = nullptr;
531
542
 
532
543
  grpc_core::OrphanablePtr<grpc_core::ByteStream> fetching_send_message;
@@ -836,6 +847,12 @@ void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id);
836
847
  "too_many_pings" followed by immediately closing the connection. */
837
848
  void grpc_chttp2_add_ping_strike(grpc_chttp2_transport* t);
838
849
 
850
+ /** Resets ping clock. Should be called when flushing window updates,
851
+ * initial/trailing metadata or data frames. For a server, it resets the number
852
+ * of ping strikes and the last_ping_recv_time. For a ping sender, it resets
853
+ * pings_before_data_required. */
854
+ void grpc_chttp2_reset_ping_clock(grpc_chttp2_transport* t);
855
+
839
856
  /** add a ref to the stream and add it to the writable list;
840
857
  ref will be dropped in writing.c */
841
858
  void grpc_chttp2_mark_stream_writable(grpc_chttp2_transport* t,
@@ -22,9 +22,11 @@
22
22
 
23
23
  #include <string.h>
24
24
 
25
+ #include "absl/strings/str_cat.h"
26
+ #include "absl/strings/str_format.h"
27
+
25
28
  #include <grpc/support/alloc.h>
26
29
  #include <grpc/support/log.h>
27
- #include <grpc/support/string_util.h>
28
30
 
29
31
  #include "src/core/lib/profiling/timers.h"
30
32
  #include "src/core/lib/slice/slice_string_helpers.h"
@@ -85,18 +87,15 @@ grpc_error* grpc_chttp2_perform_read(grpc_chttp2_transport* t,
85
87
  case GRPC_DTS_CLIENT_PREFIX_23:
86
88
  while (cur != end && t->deframe_state != GRPC_DTS_FH_0) {
87
89
  if (*cur != GRPC_CHTTP2_CLIENT_CONNECT_STRING[t->deframe_state]) {
88
- char* msg;
89
- gpr_asprintf(
90
- &msg,
91
- "Connect string mismatch: expected '%c' (%d) got '%c' (%d) "
92
- "at byte %d",
93
- GRPC_CHTTP2_CLIENT_CONNECT_STRING[t->deframe_state],
94
- static_cast<int>(static_cast<uint8_t>(
95
- GRPC_CHTTP2_CLIENT_CONNECT_STRING[t->deframe_state])),
96
- *cur, static_cast<int>(*cur), t->deframe_state);
97
- err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
98
- gpr_free(msg);
99
- return err;
90
+ return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
91
+ absl::StrFormat(
92
+ "Connect string mismatch: expected '%c' (%d) got '%c' (%d) "
93
+ "at byte %d",
94
+ GRPC_CHTTP2_CLIENT_CONNECT_STRING[t->deframe_state],
95
+ static_cast<int>(static_cast<uint8_t>(
96
+ GRPC_CHTTP2_CLIENT_CONNECT_STRING[t->deframe_state])),
97
+ *cur, static_cast<int>(*cur), t->deframe_state)
98
+ .c_str());
100
99
  }
101
100
  ++cur;
102
101
  t->deframe_state = static_cast<grpc_chttp2_deframe_transport_state>(
@@ -194,14 +193,12 @@ grpc_error* grpc_chttp2_perform_read(grpc_chttp2_transport* t,
194
193
  t->incoming_frame_size >
195
194
  t->settings[GRPC_ACKED_SETTINGS]
196
195
  [GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE]) {
197
- char* msg;
198
- gpr_asprintf(&msg, "Frame size %d is larger than max frame size %d",
199
- t->incoming_frame_size,
200
- t->settings[GRPC_ACKED_SETTINGS]
201
- [GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE]);
202
- err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
203
- gpr_free(msg);
204
- return err;
196
+ return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
197
+ absl::StrFormat("Frame size %d is larger than max frame size %d",
198
+ t->incoming_frame_size,
199
+ t->settings[GRPC_ACKED_SETTINGS]
200
+ [GRPC_CHTTP2_SETTINGS_MAX_FRAME_SIZE])
201
+ .c_str());
205
202
  }
206
203
  if (++cur == end) {
207
204
  return GRPC_ERROR_NONE;
@@ -255,34 +252,27 @@ grpc_error* grpc_chttp2_perform_read(grpc_chttp2_transport* t,
255
252
  static grpc_error* init_frame_parser(grpc_chttp2_transport* t) {
256
253
  if (t->is_first_frame &&
257
254
  t->incoming_frame_type != GRPC_CHTTP2_FRAME_SETTINGS) {
258
- char* msg;
259
- gpr_asprintf(
260
- &msg, "Expected SETTINGS frame as the first frame, got frame type %d",
261
- t->incoming_frame_type);
262
- grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
263
- gpr_free(msg);
264
- return err;
255
+ return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
256
+ absl::StrCat(
257
+ "Expected SETTINGS frame as the first frame, got frame type ",
258
+ t->incoming_frame_type)
259
+ .c_str());
265
260
  }
266
261
  t->is_first_frame = false;
267
262
  if (t->expect_continuation_stream_id != 0) {
268
263
  if (t->incoming_frame_type != GRPC_CHTTP2_FRAME_CONTINUATION) {
269
- char* msg;
270
- gpr_asprintf(&msg, "Expected CONTINUATION frame, got frame type %02x",
271
- t->incoming_frame_type);
272
- grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
273
- gpr_free(msg);
274
- return err;
264
+ return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
265
+ absl::StrFormat("Expected CONTINUATION frame, got frame type %02x",
266
+ t->incoming_frame_type)
267
+ .c_str());
275
268
  }
276
269
  if (t->expect_continuation_stream_id != t->incoming_stream_id) {
277
- char* msg;
278
- gpr_asprintf(
279
- &msg,
280
- "Expected CONTINUATION frame for grpc_chttp2_stream %08x, got "
281
- "grpc_chttp2_stream %08x",
282
- t->expect_continuation_stream_id, t->incoming_stream_id);
283
- grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
284
- gpr_free(msg);
285
- return err;
270
+ return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
271
+ absl::StrFormat(
272
+ "Expected CONTINUATION frame for grpc_chttp2_stream %08x, got "
273
+ "grpc_chttp2_stream %08x",
274
+ t->expect_continuation_stream_id, t->incoming_stream_id)
275
+ .c_str());
286
276
  }
287
277
  return init_header_frame_parser(t, 1);
288
278
  }
@@ -401,27 +391,6 @@ static bool md_key_cmp(grpc_mdelem md, const grpc_slice& reference) {
401
391
  return GRPC_MDKEY(md).refcount == reference.refcount;
402
392
  }
403
393
 
404
- static bool md_cmp(grpc_mdelem md, grpc_mdelem ref_md,
405
- const grpc_slice& ref_key) {
406
- if (GPR_LIKELY(GRPC_MDELEM_IS_INTERNED(md))) {
407
- return md.payload == ref_md.payload;
408
- }
409
- if (md_key_cmp(md, ref_key)) {
410
- return grpc_slice_eq_static_interned(GRPC_MDVALUE(md),
411
- GRPC_MDVALUE(ref_md));
412
- }
413
- return false;
414
- }
415
-
416
- static bool is_nonzero_status(grpc_mdelem md) {
417
- // If md.payload == GRPC_MDELEM_GRPC_STATUS_1 or GRPC_MDELEM_GRPC_STATUS_2,
418
- // then we have seen an error. In fact, if it is a GRPC_STATUS and it's
419
- // not equal to GRPC_MDELEM_GRPC_STATUS_0, then we have seen an error.
420
- // TODO(ctiller): check for a status like " 0"
421
- return md_key_cmp(md, GRPC_MDSTR_GRPC_STATUS) &&
422
- !md_cmp(md, GRPC_MDELEM_GRPC_STATUS_0, GRPC_MDSTR_GRPC_STATUS);
423
- }
424
-
425
394
  static void GPR_ATTRIBUTE_NOINLINE on_initial_header_log(
426
395
  grpc_chttp2_transport* t, grpc_chttp2_stream* s, grpc_mdelem md) {
427
396
  char* key = grpc_slice_to_c_string(GRPC_MDKEY(md));
@@ -503,9 +472,7 @@ static grpc_error* on_initial_header(void* tp, grpc_mdelem md) {
503
472
  on_initial_header_log(t, s, md);
504
473
  }
505
474
 
506
- if (is_nonzero_status(md)) { // not GRPC_MDELEM_GRPC_STATUS_0?
507
- s->seen_error = true;
508
- } else if (md_key_cmp(md, GRPC_MDSTR_GRPC_TIMEOUT)) {
475
+ if (md_key_cmp(md, GRPC_MDSTR_GRPC_TIMEOUT)) {
509
476
  return handle_timeout(s, md);
510
477
  }
511
478
 
@@ -544,10 +511,6 @@ static grpc_error* on_trailing_header(void* tp, grpc_mdelem md) {
544
511
  gpr_free(value);
545
512
  }
546
513
 
547
- if (is_nonzero_status(md)) { // not GRPC_MDELEM_GRPC_STATUS_0?
548
- s->seen_error = true;
549
- }
550
-
551
514
  const size_t new_size = s->metadata_buffer[1].size + GRPC_MDELEM_LENGTH(md);
552
515
  const size_t metadata_size_limit =
553
516
  t->settings[GRPC_ACKED_SETTINGS]
@@ -58,7 +58,7 @@ static void maybe_initiate_ping(grpc_chttp2_transport* t) {
58
58
  GRPC_TRACE_FLAG_ENABLED(grpc_bdp_estimator_trace) ||
59
59
  GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
60
60
  gpr_log(GPR_INFO, "%s: Ping delayed [%s]: already pinging",
61
- t->is_client ? "CLIENT" : "SERVER", t->peer_string);
61
+ t->is_client ? "CLIENT" : "SERVER", t->peer_string.c_str());
62
62
  }
63
63
  return;
64
64
  }
@@ -69,7 +69,7 @@ static void maybe_initiate_ping(grpc_chttp2_transport* t) {
69
69
  GRPC_TRACE_FLAG_ENABLED(grpc_bdp_estimator_trace) ||
70
70
  GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
71
71
  gpr_log(GPR_INFO, "%s: Ping delayed [%s]: too many recent pings: %d/%d",
72
- t->is_client ? "CLIENT" : "SERVER", t->peer_string,
72
+ t->is_client ? "CLIENT" : "SERVER", t->peer_string.c_str(),
73
73
  t->ping_state.pings_before_data_required,
74
74
  t->ping_policy.max_pings_without_data);
75
75
  }
@@ -95,7 +95,7 @@ static void maybe_initiate_ping(grpc_chttp2_transport* t) {
95
95
  gpr_log(GPR_INFO,
96
96
  "%s: Ping delayed [%s]: not enough time elapsed since last ping. "
97
97
  " Last ping %f: Next ping %f: Now %f",
98
- t->is_client ? "CLIENT" : "SERVER", t->peer_string,
98
+ t->is_client ? "CLIENT" : "SERVER", t->peer_string.c_str(),
99
99
  static_cast<double>(t->ping_state.last_ping_sent_time),
100
100
  static_cast<double>(next_allowed_ping), static_cast<double>(now));
101
101
  }
@@ -125,7 +125,7 @@ static void maybe_initiate_ping(grpc_chttp2_transport* t) {
125
125
  GRPC_TRACE_FLAG_ENABLED(grpc_bdp_estimator_trace) ||
126
126
  GRPC_TRACE_FLAG_ENABLED(grpc_keepalive_trace)) {
127
127
  gpr_log(GPR_INFO, "%s: Ping sent [%s]: %d/%d",
128
- t->is_client ? "CLIENT" : "SERVER", t->peer_string,
128
+ t->is_client ? "CLIENT" : "SERVER", t->peer_string.c_str(),
129
129
  t->ping_state.pings_before_data_required,
130
130
  t->ping_policy.max_pings_without_data);
131
131
  }
@@ -165,7 +165,8 @@ static void report_stall(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
165
165
  "helpful data: [fc:pending=%" PRIdPTR ":pending-compressed=%" PRIdPTR
166
166
  ":flowed=%" PRId64 ":peer_initwin=%d:t_win=%" PRId64
167
167
  ":s_win=%d:s_delta=%" PRId64 "]",
168
- t->peer_string, t, s->id, staller, s->flow_controlled_buffer.length,
168
+ t->peer_string.c_str(), t, s->id, staller,
169
+ s->flow_controlled_buffer.length,
169
170
  s->stream_compression_method ==
170
171
  GRPC_STREAM_COMPRESSION_IDENTITY_COMPRESS
171
172
  ? 0
@@ -242,7 +243,7 @@ class WriteContext {
242
243
  grpc_slice_buffer_add(
243
244
  &t_->outbuf, grpc_chttp2_window_update_create(0, transport_announce,
244
245
  &throwaway_stats));
245
- ResetPingClock();
246
+ grpc_chttp2_reset_ping_clock(t_);
246
247
  }
247
248
  }
248
249
 
@@ -287,15 +288,6 @@ class WriteContext {
287
288
  return s;
288
289
  }
289
290
 
290
- void ResetPingClock() {
291
- if (!t_->is_client) {
292
- t_->ping_recv_state.last_ping_recv_time = GRPC_MILLIS_INF_PAST;
293
- t_->ping_recv_state.ping_strikes = 0;
294
- }
295
- t_->ping_state.pings_before_data_required =
296
- t_->ping_policy.max_pings_without_data;
297
- }
298
-
299
291
  void IncInitialMetadataWrites() { ++initial_metadata_writes_; }
300
292
  void IncWindowUpdateWrites() { ++flow_control_writes_; }
301
293
  void IncMessageWrites() { ++message_writes_; }
@@ -474,7 +466,7 @@ class StreamWriteContext {
474
466
  };
475
467
  grpc_chttp2_encode_header(&t_->hpack_compressor, nullptr, 0,
476
468
  s_->send_initial_metadata, &hopt, &t_->outbuf);
477
- write_context_->ResetPingClock();
469
+ grpc_chttp2_reset_ping_clock(t_);
478
470
  write_context_->IncInitialMetadataWrites();
479
471
  }
480
472
 
@@ -501,7 +493,7 @@ class StreamWriteContext {
501
493
  grpc_slice_buffer_add(
502
494
  &t_->outbuf, grpc_chttp2_window_update_create(s_->id, stream_announce,
503
495
  &s_->stats.outgoing));
504
- write_context_->ResetPingClock();
496
+ grpc_chttp2_reset_ping_clock(t_);
505
497
  write_context_->IncWindowUpdateWrites();
506
498
  }
507
499
 
@@ -543,7 +535,7 @@ class StreamWriteContext {
543
535
  }
544
536
  }
545
537
  }
546
- write_context_->ResetPingClock();
538
+ grpc_chttp2_reset_ping_clock(t_);
547
539
  if (data_send_context.is_last_frame()) {
548
540
  SentLastFrame();
549
541
  }
@@ -584,7 +576,7 @@ class StreamWriteContext {
584
576
  s_->send_trailing_metadata, &hopt, &t_->outbuf);
585
577
  }
586
578
  write_context_->IncTrailingMetadataWrites();
587
- write_context_->ResetPingClock();
579
+ grpc_chttp2_reset_ping_clock(t_);
588
580
  SentLastFrame();
589
581
 
590
582
  write_context_->NoteScheduledResults();
@@ -615,6 +607,10 @@ class StreamWriteContext {
615
607
 
616
608
  void SentLastFrame() {
617
609
  s_->send_trailing_metadata = nullptr;
610
+ if (s_->sent_trailing_metadata_op) {
611
+ *s_->sent_trailing_metadata_op = true;
612
+ s_->sent_trailing_metadata_op = nullptr;
613
+ }
618
614
  s_->sent_trailing_metadata = true;
619
615
  s_->eos_sent = true;
620
616
 
@@ -202,11 +202,6 @@ struct inproc_stream {
202
202
  }
203
203
 
204
204
  t->unref();
205
-
206
- if (closure_at_destroy) {
207
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure_at_destroy,
208
- GRPC_ERROR_NONE);
209
- }
210
205
  }
211
206
 
212
207
  #ifndef NDEBUG
@@ -249,7 +244,6 @@ struct inproc_stream {
249
244
  bool other_side_closed = false; // won't talk anymore
250
245
  bool write_buffer_other_side_closed = false; // on hold
251
246
  grpc_stream_refcount* refs;
252
- grpc_closure* closure_at_destroy = nullptr;
253
247
 
254
248
  grpc_core::Arena* arena;
255
249
 
@@ -267,6 +261,11 @@ struct inproc_stream {
267
261
  bool trailing_md_sent = false;
268
262
  bool initial_md_recvd = false;
269
263
  bool trailing_md_recvd = false;
264
+ // The following tracks if the server-side only pretends to have received
265
+ // trailing metadata since it no longer cares about the RPC. If that is the
266
+ // case, it is still ok for the client to send trailing metadata (in which
267
+ // case it will be ignored).
268
+ bool trailing_md_recvd_implicit_only = false;
270
269
 
271
270
  bool closed = false;
272
271
 
@@ -617,7 +616,7 @@ void op_state_machine_locked(inproc_stream* s, grpc_error* error) {
617
616
  s->send_message_op->payload->send_message.send_message.reset();
618
617
  complete_if_batch_end_locked(
619
618
  s, GRPC_ERROR_NONE, s->send_message_op,
620
- "op_state_machine scheduling send-message-on-complete");
619
+ "op_state_machine scheduling send-message-on-complete case 1");
621
620
  s->send_message_op = nullptr;
622
621
  }
623
622
  }
@@ -652,6 +651,9 @@ void op_state_machine_locked(inproc_stream* s, grpc_error* error) {
652
651
  0, dest, nullptr, destfilled);
653
652
  }
654
653
  s->trailing_md_sent = true;
654
+ if (s->send_trailing_md_op->payload->send_trailing_metadata.sent) {
655
+ *s->send_trailing_md_op->payload->send_trailing_metadata.sent = true;
656
+ }
655
657
  if (!s->t->is_client && s->trailing_md_recvd && s->recv_trailing_md_op) {
656
658
  INPROC_LOG(GPR_INFO,
657
659
  "op_state_machine %p scheduling trailing-metadata-ready", s);
@@ -736,15 +738,25 @@ void op_state_machine_locked(inproc_stream* s, grpc_error* error) {
736
738
  }
737
739
  if (s->to_read_trailing_md_filled) {
738
740
  if (s->trailing_md_recvd) {
739
- new_err =
740
- GRPC_ERROR_CREATE_FROM_STATIC_STRING("Already recvd trailing md");
741
- INPROC_LOG(
742
- GPR_INFO,
743
- "op_state_machine %p scheduling on_complete errors for already "
744
- "recvd trailing md %p",
745
- s, new_err);
746
- fail_helper_locked(s, GRPC_ERROR_REF(new_err));
747
- goto done;
741
+ if (s->trailing_md_recvd_implicit_only) {
742
+ INPROC_LOG(GPR_INFO,
743
+ "op_state_machine %p already implicitly received trailing "
744
+ "metadata, so ignoring new trailing metadata from client",
745
+ s);
746
+ grpc_metadata_batch_clear(&s->to_read_trailing_md);
747
+ s->to_read_trailing_md_filled = false;
748
+ s->trailing_md_recvd_implicit_only = false;
749
+ } else {
750
+ new_err =
751
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("Already recvd trailing md");
752
+ INPROC_LOG(
753
+ GPR_INFO,
754
+ "op_state_machine %p scheduling on_complete errors for already "
755
+ "recvd trailing md %p",
756
+ s, new_err);
757
+ fail_helper_locked(s, GRPC_ERROR_REF(new_err));
758
+ goto done;
759
+ }
748
760
  }
749
761
  if (s->recv_message_op != nullptr) {
750
762
  // This message needs to be wrapped up because it will never be
@@ -767,7 +779,7 @@ void op_state_machine_locked(inproc_stream* s, grpc_error* error) {
767
779
  s->send_message_op->payload->send_message.stream_write_closed = true;
768
780
  complete_if_batch_end_locked(
769
781
  s, new_err, s->send_message_op,
770
- "op_state_machine scheduling send-message-on-complete");
782
+ "op_state_machine scheduling send-message-on-complete case 2");
771
783
  s->send_message_op = nullptr;
772
784
  }
773
785
  if (s->recv_trailing_md_op != nullptr) {
@@ -806,7 +818,7 @@ void op_state_machine_locked(inproc_stream* s, grpc_error* error) {
806
818
  "trailing-md-on-complete %p",
807
819
  s, new_err);
808
820
  }
809
- } else {
821
+ } else if (!s->trailing_md_recvd) {
810
822
  INPROC_LOG(
811
823
  GPR_INFO,
812
824
  "op_state_machine %p has trailing md but not yet waiting for it", s);
@@ -829,6 +841,9 @@ void op_state_machine_locked(inproc_stream* s, grpc_error* error) {
829
841
  "op_state_machine scheduling recv-trailing-md-on-complete");
830
842
  s->trailing_md_recvd = true;
831
843
  s->recv_trailing_md_op = nullptr;
844
+ // Since we are only pretending to have received the trailing MD, it would
845
+ // be ok (not an error) if the client actually sends it later.
846
+ s->trailing_md_recvd_implicit_only = true;
832
847
  }
833
848
  if (s->trailing_md_recvd && s->recv_message_op) {
834
849
  // No further message will come on this stream, so finish off the
@@ -844,14 +859,13 @@ void op_state_machine_locked(inproc_stream* s, grpc_error* error) {
844
859
  "op_state_machine scheduling recv-message-on-complete");
845
860
  s->recv_message_op = nullptr;
846
861
  }
847
- if (s->trailing_md_recvd && (s->trailing_md_sent || s->t->is_client) &&
848
- s->send_message_op) {
862
+ if (s->trailing_md_recvd && s->send_message_op && s->t->is_client) {
849
863
  // Nothing further will try to receive from this stream, so finish off
850
864
  // any outstanding send_message op
851
865
  s->send_message_op->payload->send_message.send_message.reset();
852
866
  complete_if_batch_end_locked(
853
867
  s, new_err, s->send_message_op,
854
- "op_state_machine scheduling send-message-on-complete");
868
+ "op_state_machine scheduling send-message-on-complete case 3");
855
869
  s->send_message_op = nullptr;
856
870
  }
857
871
  if (s->send_message_op || s->send_trailing_md_op || s->recv_initial_md_op ||
@@ -1112,7 +1126,8 @@ void perform_stream_op(grpc_transport* gt, grpc_stream* gs,
1112
1126
 
1113
1127
  void close_transport_locked(inproc_transport* t) {
1114
1128
  INPROC_LOG(GPR_INFO, "close_transport %p %d", t, t->is_closed);
1115
- t->state_tracker.SetState(GRPC_CHANNEL_SHUTDOWN, "close transport");
1129
+ t->state_tracker.SetState(GRPC_CHANNEL_SHUTDOWN, absl::Status(),
1130
+ "close transport");
1116
1131
  if (!t->is_closed) {
1117
1132
  t->is_closed = true;
1118
1133
  /* Also end all streams on this transport */
@@ -1162,12 +1177,17 @@ void perform_transport_op(grpc_transport* gt, grpc_transport_op* op) {
1162
1177
  gpr_mu_unlock(&t->mu->mu);
1163
1178
  }
1164
1179
 
1165
- void destroy_stream(grpc_transport* /*gt*/, grpc_stream* gs,
1180
+ void destroy_stream(grpc_transport* gt, grpc_stream* gs,
1166
1181
  grpc_closure* then_schedule_closure) {
1167
1182
  INPROC_LOG(GPR_INFO, "destroy_stream %p %p", gs, then_schedule_closure);
1183
+ inproc_transport* t = reinterpret_cast<inproc_transport*>(gt);
1168
1184
  inproc_stream* s = reinterpret_cast<inproc_stream*>(gs);
1169
- s->closure_at_destroy = then_schedule_closure;
1185
+ gpr_mu_lock(&t->mu->mu);
1186
+ close_stream_locked(s);
1187
+ gpr_mu_unlock(&t->mu->mu);
1170
1188
  s->~inproc_stream();
1189
+ grpc_core::ExecCtx::Run(DEBUG_LOCATION, then_schedule_closure,
1190
+ GRPC_ERROR_NONE);
1171
1191
  }
1172
1192
 
1173
1193
  void destroy_transport(grpc_transport* gt) {
@@ -1255,7 +1275,7 @@ grpc_channel* grpc_inproc_channel_create(grpc_server* server,
1255
1275
  const char* args_to_remove[] = {GRPC_ARG_MAX_CONNECTION_IDLE_MS,
1256
1276
  GRPC_ARG_MAX_CONNECTION_AGE_MS};
1257
1277
  const grpc_channel_args* server_args = grpc_channel_args_copy_and_remove(
1258
- grpc_server_get_channel_args(server), args_to_remove,
1278
+ server->core_server->channel_args(), args_to_remove,
1259
1279
  GPR_ARRAY_SIZE(args_to_remove));
1260
1280
 
1261
1281
  // Add a default authority channel argument for the client
@@ -1272,8 +1292,8 @@ grpc_channel* grpc_inproc_channel_create(grpc_server* server,
1272
1292
  client_args);
1273
1293
 
1274
1294
  // TODO(ncteisen): design and support channelz GetSocket for inproc.
1275
- grpc_server_setup_transport(server, server_transport, nullptr, server_args,
1276
- nullptr);
1295
+ server->core_server->SetupTransport(server_transport, nullptr, server_args,
1296
+ nullptr);
1277
1297
  grpc_channel* channel = grpc_channel_create(
1278
1298
  "inproc", client_args, GRPC_CLIENT_DIRECT_CHANNEL, client_transport);
1279
1299