grpc 1.30.0 → 1.31.1

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

Potentially problematic release.


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

Files changed (383) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +560 -619
  3. data/include/grpc/grpc_security.h +8 -0
  4. data/include/grpc/grpc_security_constants.h +3 -0
  5. data/include/grpc/impl/codegen/grpc_types.h +7 -5
  6. data/include/grpc/impl/codegen/port_platform.h +0 -32
  7. data/src/core/ext/filters/client_channel/backend_metric.cc +12 -9
  8. data/src/core/ext/filters/client_channel/client_channel.cc +406 -261
  9. data/src/core/ext/filters/client_channel/config_selector.cc +62 -0
  10. data/src/core/ext/filters/client_channel/config_selector.h +93 -0
  11. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -2
  12. data/src/core/ext/filters/client_channel/health/health_check_client.cc +2 -0
  13. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +6 -5
  14. data/src/core/ext/filters/client_channel/http_proxy.cc +6 -4
  15. data/src/core/ext/filters/client_channel/lb_policy.h +2 -0
  16. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +39 -23
  17. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +4 -6
  18. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +3 -4
  19. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +381 -72
  20. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -5
  21. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +5 -2
  22. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +6 -5
  23. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +8 -6
  24. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +9 -7
  25. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +7 -5
  26. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +33 -48
  27. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -2
  28. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +21 -18
  29. data/src/core/ext/filters/client_channel/resolver_registry.cc +13 -14
  30. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +6 -7
  31. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +33 -28
  32. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +39 -20
  33. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +142 -0
  34. data/src/core/ext/filters/client_channel/subchannel.cc +1 -1
  35. data/src/core/ext/filters/client_channel/xds/xds_api.cc +327 -123
  36. data/src/core/ext/filters/client_channel/xds/xds_api.h +72 -7
  37. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +12 -23
  38. data/src/core/ext/filters/client_channel/xds/xds_client.cc +112 -33
  39. data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +10 -10
  40. data/src/core/ext/filters/http/client/http_client_filter.cc +5 -5
  41. data/src/core/ext/filters/http/http_filters_plugin.cc +2 -1
  42. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +74 -33
  43. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +3 -1
  44. data/src/core/ext/filters/message_size/message_size_filter.cc +56 -80
  45. data/src/core/ext/filters/message_size/message_size_filter.h +6 -0
  46. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +383 -347
  47. data/src/core/ext/transport/chttp2/server/chttp2_server.h +6 -2
  48. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +1 -1
  49. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +7 -13
  50. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +7 -8
  51. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +19 -4
  52. data/src/core/ext/transport/chttp2/transport/flow_control.cc +22 -27
  53. data/src/core/ext/transport/chttp2/transport/flow_control.h +14 -16
  54. data/src/core/ext/transport/chttp2/transport/frame_data.cc +9 -12
  55. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +4 -6
  56. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -6
  57. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +12 -13
  58. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -7
  59. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +9 -12
  60. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +25 -29
  61. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +13 -17
  62. data/src/core/ext/transport/chttp2/transport/internal.h +13 -0
  63. data/src/core/ext/transport/chttp2/transport/parsing.cc +33 -43
  64. data/src/core/ext/transport/chttp2/transport/writing.cc +9 -14
  65. data/src/core/ext/transport/inproc/inproc_transport.cc +35 -15
  66. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +0 -1
  67. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +3 -4
  68. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -1
  69. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +80 -69
  70. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +24 -23
  71. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +66 -56
  72. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +1 -2
  73. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +2 -2
  74. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +317 -311
  75. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +42 -34
  76. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +7 -7
  77. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +79 -61
  78. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +55 -49
  79. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +9 -8
  80. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +1 -1
  81. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +163 -169
  82. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +51 -45
  83. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +4 -5
  84. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +107 -100
  85. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +137 -117
  86. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +9 -9
  87. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +105 -87
  88. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +12 -13
  89. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +1 -1
  90. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +95 -101
  91. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +1 -2
  92. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +1 -1
  93. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +49 -65
  94. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -1
  95. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +49 -42
  96. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +70 -62
  97. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +1 -2
  98. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +81 -65
  99. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -1
  100. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +1 -1
  101. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +91 -80
  102. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +9 -10
  103. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +1 -2
  104. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +36 -31
  105. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -1
  106. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +7 -7
  107. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +648 -696
  108. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +16 -15
  109. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +1 -2
  110. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +1 -1
  111. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +95 -88
  112. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +234 -199
  113. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +5 -5
  114. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +13 -13
  115. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +1 -2
  116. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +20 -18
  117. data/src/core/ext/upb-generated/envoy/type/http.upb.h +0 -1
  118. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +18 -17
  119. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +14 -14
  120. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +23 -23
  121. data/src/core/ext/upb-generated/envoy/type/percent.upb.h +8 -9
  122. data/src/core/ext/upb-generated/envoy/type/range.upb.h +15 -16
  123. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +7 -8
  124. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +36 -35
  125. data/src/core/ext/upb-generated/gogoproto/gogo.upb.h +0 -1
  126. data/src/core/ext/upb-generated/google/api/annotations.upb.h +0 -1
  127. data/src/core/ext/upb-generated/google/api/http.upb.h +29 -28
  128. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +5 -6
  129. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +3 -3
  130. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +412 -386
  131. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +5 -6
  132. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +1 -2
  133. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +1 -1
  134. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +33 -54
  135. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +5 -6
  136. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +27 -28
  137. data/src/core/ext/upb-generated/google/rpc/status.upb.h +8 -8
  138. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +1 -1
  139. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +32 -45
  140. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +4 -4
  141. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +157 -178
  142. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +14 -13
  143. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +6 -7
  144. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +59 -56
  145. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +11 -12
  146. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +0 -1
  147. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +5 -6
  148. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +6 -6
  149. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +41 -68
  150. data/src/core/ext/upb-generated/validate/validate.upb.h +536 -535
  151. data/src/core/lib/channel/channel_trace.cc +2 -6
  152. data/src/core/lib/channel/channelz.cc +5 -15
  153. data/src/core/lib/gpr/log_linux.cc +6 -8
  154. data/src/core/lib/gpr/log_posix.cc +6 -8
  155. data/src/core/lib/gpr/string.cc +10 -9
  156. data/src/core/lib/gpr/string.h +4 -2
  157. data/src/core/lib/gprpp/global_config_env.cc +8 -6
  158. data/src/core/lib/http/httpcli.cc +13 -10
  159. data/src/core/lib/http/httpcli_security_connector.cc +5 -5
  160. data/src/core/lib/iomgr/cfstream_handle.cc +1 -0
  161. data/src/core/lib/iomgr/endpoint_pair_posix.cc +10 -10
  162. data/src/core/lib/iomgr/error_cfstream.cc +9 -8
  163. data/src/core/lib/iomgr/ev_epoll1_linux.cc +5 -6
  164. data/src/core/lib/iomgr/ev_epollex_linux.cc +15 -21
  165. data/src/core/lib/iomgr/ev_poll_posix.cc +6 -5
  166. data/src/core/lib/iomgr/ev_posix.cc +2 -0
  167. data/src/core/lib/iomgr/iomgr.cc +10 -0
  168. data/src/core/lib/iomgr/iomgr.h +10 -0
  169. data/src/core/lib/iomgr/is_epollexclusive_available.cc +14 -0
  170. data/src/core/lib/iomgr/port.h +1 -21
  171. data/src/core/lib/iomgr/resolve_address_custom.cc +13 -18
  172. data/src/core/lib/iomgr/resolve_address_windows.cc +8 -8
  173. data/src/core/lib/iomgr/resource_quota.cc +34 -31
  174. data/src/core/lib/iomgr/sockaddr_utils.cc +7 -5
  175. data/src/core/lib/iomgr/sockaddr_utils.h +1 -1
  176. data/src/core/lib/iomgr/socket_utils_common_posix.cc +95 -55
  177. data/src/core/lib/iomgr/socket_windows.cc +4 -5
  178. data/src/core/lib/iomgr/tcp_client_cfstream.cc +9 -11
  179. data/src/core/lib/iomgr/tcp_client_custom.cc +6 -9
  180. data/src/core/lib/iomgr/tcp_client_posix.cc +27 -36
  181. data/src/core/lib/iomgr/tcp_client_windows.cc +9 -9
  182. data/src/core/lib/iomgr/tcp_custom.cc +1 -1
  183. data/src/core/lib/iomgr/tcp_custom.h +1 -1
  184. data/src/core/lib/iomgr/tcp_server.cc +3 -4
  185. data/src/core/lib/iomgr/tcp_server.h +7 -5
  186. data/src/core/lib/iomgr/tcp_server_custom.cc +6 -14
  187. data/src/core/lib/iomgr/tcp_server_posix.cc +34 -41
  188. data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -4
  189. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -7
  190. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -9
  191. data/src/core/lib/iomgr/tcp_server_windows.cc +16 -16
  192. data/src/core/lib/iomgr/timer_generic.cc +13 -12
  193. data/src/core/lib/iomgr/udp_server.cc +24 -23
  194. data/src/core/lib/iomgr/udp_server.h +5 -2
  195. data/src/core/lib/iomgr/unix_sockets_posix.cc +9 -14
  196. data/src/core/lib/iomgr/unix_sockets_posix.h +3 -1
  197. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +5 -2
  198. data/src/core/lib/json/json_reader.cc +20 -21
  199. data/src/core/lib/security/credentials/credentials.h +5 -3
  200. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +8 -6
  201. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +12 -9
  202. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -4
  203. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +19 -28
  204. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -6
  205. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +20 -0
  206. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +10 -0
  207. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +10 -0
  208. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +10 -10
  209. data/src/core/lib/security/security_connector/security_connector.cc +2 -0
  210. data/src/core/lib/security/security_connector/security_connector.h +1 -1
  211. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +18 -11
  212. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +5 -0
  213. data/src/core/lib/security/security_connector/ssl_utils.cc +44 -23
  214. data/src/core/lib/security/security_connector/ssl_utils.h +6 -2
  215. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +27 -24
  216. data/src/core/lib/security/transport/auth_filters.h +0 -5
  217. data/src/core/lib/security/transport/client_auth_filter.cc +10 -9
  218. data/src/core/lib/security/util/json_util.cc +12 -13
  219. data/src/core/lib/slice/slice.cc +38 -1
  220. data/src/core/lib/slice/slice_internal.h +1 -0
  221. data/src/core/lib/surface/call.cc +40 -41
  222. data/src/core/lib/surface/completion_queue.cc +271 -14
  223. data/src/core/lib/surface/completion_queue.h +8 -0
  224. data/src/core/lib/surface/init.cc +2 -0
  225. data/src/core/lib/surface/server.cc +565 -632
  226. data/src/core/lib/surface/server.h +34 -12
  227. data/src/core/lib/surface/version.cc +2 -2
  228. data/src/core/lib/transport/transport.h +6 -0
  229. data/src/core/lib/uri/uri_parser.cc +8 -15
  230. data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -0
  231. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +23 -13
  232. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +2 -0
  233. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -0
  234. data/src/core/tsi/ssl_transport_security.cc +108 -11
  235. data/src/core/tsi/ssl_transport_security.h +14 -2
  236. data/src/core/tsi/transport_security_interface.h +5 -0
  237. data/src/ruby/bin/math_services_pb.rb +4 -4
  238. data/src/ruby/ext/grpc/extconf.rb +5 -2
  239. data/src/ruby/ext/grpc/rb_call.c +3 -2
  240. data/src/ruby/ext/grpc/rb_call.h +4 -0
  241. data/src/ruby/ext/grpc/rb_call_credentials.c +57 -12
  242. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +4 -0
  243. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +6 -0
  244. data/src/ruby/lib/grpc/generic/client_stub.rb +1 -1
  245. data/src/ruby/lib/grpc/generic/interceptors.rb +1 -1
  246. data/src/ruby/lib/grpc/version.rb +1 -1
  247. data/src/ruby/pb/grpc/health/v1/health_services_pb.rb +2 -2
  248. data/src/ruby/pb/src/proto/grpc/testing/messages_pb.rb +5 -0
  249. data/src/ruby/pb/src/proto/grpc/testing/test_services_pb.rb +28 -12
  250. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_import2.proto +23 -0
  251. data/src/ruby/spec/pb/codegen/grpc/testing/package_options_ruby_style.proto +2 -0
  252. data/src/ruby/spec/pb/codegen/grpc/testing/same_package_service_name.proto +27 -0
  253. data/src/ruby/spec/pb/codegen/grpc/testing/same_ruby_package_service_name.proto +29 -0
  254. data/src/ruby/spec/pb/codegen/package_option_spec.rb +25 -1
  255. data/src/ruby/spec/support/services.rb +10 -4
  256. data/src/ruby/spec/user_agent_spec.rb +74 -0
  257. data/third_party/boringssl-with-bazel/err_data.c +89 -83
  258. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +3 -3
  259. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +3 -3
  260. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +1 -1
  261. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +3 -3
  262. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
  263. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +1 -1
  264. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -1
  265. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +1 -1
  266. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +1 -1
  267. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +1 -1
  268. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +1 -1
  269. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +1 -0
  270. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +12 -52
  271. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +0 -22
  272. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +143 -0
  273. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +17 -1
  274. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +11 -1
  275. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +2 -1
  276. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +13 -11
  277. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +24 -23
  278. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +20 -16
  279. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -2
  280. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +3 -3
  281. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +62 -0
  282. data/third_party/boringssl-with-bazel/src/crypto/mem.c +29 -15
  283. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +7 -0
  284. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -5
  285. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +0 -29
  286. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +116 -363
  287. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +7 -45
  288. data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +4 -4
  289. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +8 -0
  290. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +4 -4
  291. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -67
  292. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +13 -6
  293. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +10 -0
  294. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +41 -0
  295. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +4 -1
  296. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +28 -9
  297. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +25 -0
  298. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +35 -13
  299. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +0 -154
  300. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +28 -6
  301. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +5 -0
  302. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +74 -35
  303. data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +16 -4
  304. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +22 -22
  305. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +1 -1
  306. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +69 -0
  307. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +33 -16
  308. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +1 -10
  309. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +789 -715
  310. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +3 -3
  311. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +9 -2
  312. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +2 -2
  313. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +9 -0
  314. data/third_party/boringssl-with-bazel/src/ssl/internal.h +17 -14
  315. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +7 -7
  316. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +28 -0
  317. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +4 -24
  318. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +5 -5
  319. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +45 -24
  320. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +31 -21
  321. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +12 -9
  322. data/third_party/re2/re2/bitmap256.h +117 -0
  323. data/third_party/re2/re2/bitstate.cc +385 -0
  324. data/third_party/re2/re2/compile.cc +1279 -0
  325. data/third_party/re2/re2/dfa.cc +2130 -0
  326. data/third_party/re2/re2/filtered_re2.cc +121 -0
  327. data/third_party/re2/re2/filtered_re2.h +109 -0
  328. data/third_party/re2/re2/mimics_pcre.cc +197 -0
  329. data/third_party/re2/re2/nfa.cc +713 -0
  330. data/third_party/re2/re2/onepass.cc +623 -0
  331. data/third_party/re2/re2/parse.cc +2464 -0
  332. data/third_party/re2/re2/perl_groups.cc +119 -0
  333. data/third_party/re2/re2/pod_array.h +55 -0
  334. data/third_party/re2/re2/prefilter.cc +710 -0
  335. data/third_party/re2/re2/prefilter.h +108 -0
  336. data/third_party/re2/re2/prefilter_tree.cc +407 -0
  337. data/third_party/re2/re2/prefilter_tree.h +139 -0
  338. data/third_party/re2/re2/prog.cc +988 -0
  339. data/third_party/re2/re2/prog.h +436 -0
  340. data/third_party/re2/re2/re2.cc +1362 -0
  341. data/third_party/re2/re2/re2.h +1002 -0
  342. data/third_party/re2/re2/regexp.cc +980 -0
  343. data/third_party/re2/re2/regexp.h +659 -0
  344. data/third_party/re2/re2/set.cc +154 -0
  345. data/third_party/re2/re2/set.h +80 -0
  346. data/third_party/re2/re2/simplify.cc +657 -0
  347. data/third_party/re2/re2/sparse_array.h +392 -0
  348. data/third_party/re2/re2/sparse_set.h +264 -0
  349. data/third_party/re2/re2/stringpiece.cc +65 -0
  350. data/third_party/re2/re2/stringpiece.h +210 -0
  351. data/third_party/re2/re2/tostring.cc +351 -0
  352. data/third_party/re2/re2/unicode_casefold.cc +582 -0
  353. data/third_party/re2/re2/unicode_casefold.h +78 -0
  354. data/third_party/re2/re2/unicode_groups.cc +6269 -0
  355. data/third_party/re2/re2/unicode_groups.h +67 -0
  356. data/third_party/re2/re2/walker-inl.h +246 -0
  357. data/third_party/re2/util/benchmark.h +156 -0
  358. data/third_party/re2/util/flags.h +26 -0
  359. data/third_party/re2/util/logging.h +109 -0
  360. data/third_party/re2/util/malloc_counter.h +19 -0
  361. data/third_party/re2/util/mix.h +41 -0
  362. data/third_party/re2/util/mutex.h +148 -0
  363. data/third_party/re2/util/pcre.cc +1025 -0
  364. data/third_party/re2/util/pcre.h +681 -0
  365. data/third_party/re2/util/rune.cc +260 -0
  366. data/third_party/re2/util/strutil.cc +149 -0
  367. data/third_party/re2/util/strutil.h +21 -0
  368. data/third_party/re2/util/test.h +50 -0
  369. data/third_party/re2/util/utf.h +44 -0
  370. data/third_party/re2/util/util.h +42 -0
  371. data/third_party/upb/upb/decode.c +467 -504
  372. data/third_party/upb/upb/encode.c +163 -121
  373. data/third_party/upb/upb/msg.c +130 -64
  374. data/third_party/upb/upb/msg.h +418 -14
  375. data/third_party/upb/upb/port_def.inc +35 -6
  376. data/third_party/upb/upb/port_undef.inc +8 -1
  377. data/third_party/upb/upb/table.c +53 -75
  378. data/third_party/upb/upb/table.int.h +11 -43
  379. data/third_party/upb/upb/upb.c +148 -124
  380. data/third_party/upb/upb/upb.h +65 -147
  381. data/third_party/upb/upb/upb.hpp +86 -0
  382. metadata +90 -30
  383. data/third_party/upb/upb/generated_util.h +0 -105
@@ -21,9 +21,11 @@
21
21
  #include "src/core/ext/transport/chttp2/transport/frame_rst_stream.h"
22
22
  #include "src/core/ext/transport/chttp2/transport/internal.h"
23
23
 
24
+ #include "absl/strings/str_cat.h"
25
+ #include "absl/strings/str_format.h"
26
+
24
27
  #include <grpc/support/alloc.h>
25
28
  #include <grpc/support/log.h>
26
- #include <grpc/support/string_util.h>
27
29
 
28
30
  #include "src/core/ext/transport/chttp2/transport/frame.h"
29
31
  #include "src/core/lib/gprpp/memory.h"
@@ -69,12 +71,10 @@ void grpc_chttp2_add_rst_stream_to_next_write(
69
71
  grpc_error* grpc_chttp2_rst_stream_parser_begin_frame(
70
72
  grpc_chttp2_rst_stream_parser* parser, uint32_t length, uint8_t flags) {
71
73
  if (length != 4) {
72
- char* msg;
73
- gpr_asprintf(&msg, "invalid rst_stream: length=%d, flags=%02x", length,
74
- flags);
75
- grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
76
- gpr_free(msg);
77
- return err;
74
+ return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
75
+ absl::StrFormat("invalid rst_stream: length=%d, flags=%02x", length,
76
+ flags)
77
+ .c_str());
78
78
  }
79
79
  parser->byte = 0;
80
80
  return GRPC_ERROR_NONE;
@@ -106,13 +106,12 @@ grpc_error* grpc_chttp2_rst_stream_parser_parse(void* parser,
106
106
  ((static_cast<uint32_t>(p->reason_bytes[3])));
107
107
  grpc_error* error = GRPC_ERROR_NONE;
108
108
  if (reason != GRPC_HTTP2_NO_ERROR || s->metadata_buffer[1].size == 0) {
109
- char* message;
110
- gpr_asprintf(&message, "Received RST_STREAM with error code %d", reason);
111
109
  error = grpc_error_set_int(
112
- grpc_error_set_str(GRPC_ERROR_CREATE_FROM_STATIC_STRING("RST_STREAM"),
113
- GRPC_ERROR_STR_GRPC_MESSAGE,
114
- grpc_slice_from_moved_string(
115
- grpc_core::UniquePtr<char>(message))),
110
+ grpc_error_set_str(
111
+ GRPC_ERROR_CREATE_FROM_STATIC_STRING("RST_STREAM"),
112
+ GRPC_ERROR_STR_GRPC_MESSAGE,
113
+ grpc_slice_from_cpp_string(absl::StrCat(
114
+ "Received RST_STREAM with error code ", reason))),
116
115
  GRPC_ERROR_INT_HTTP2_ERROR, static_cast<intptr_t>(reason));
117
116
  }
118
117
  grpc_chttp2_mark_stream_closed(t, s, true, true, error);
@@ -23,9 +23,10 @@
23
23
 
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/ext/transport/chttp2/transport/chttp2_transport.h"
31
32
  #include "src/core/ext/transport/chttp2/transport/frame.h"
@@ -117,7 +118,6 @@ grpc_error* grpc_chttp2_settings_parser_parse(void* p, grpc_chttp2_transport* t,
117
118
  static_cast<grpc_chttp2_settings_parser*>(p);
118
119
  const uint8_t* cur = GRPC_SLICE_START_PTR(slice);
119
120
  const uint8_t* end = GRPC_SLICE_END_PTR(slice);
120
- char* msg;
121
121
  grpc_chttp2_setting_id id;
122
122
 
123
123
  if (parser->is_ack) {
@@ -208,11 +208,10 @@ grpc_error* grpc_chttp2_settings_parser_parse(void* p, grpc_chttp2_transport* t,
208
208
  t->last_new_stream_id, sp->error_value,
209
209
  grpc_slice_from_static_string("HTTP2 settings error"),
210
210
  &t->qbuf);
211
- gpr_asprintf(&msg, "invalid value %u passed for %s",
212
- parser->value, sp->name);
213
- grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
214
- gpr_free(msg);
215
- return err;
211
+ return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
212
+ absl::StrFormat("invalid value %u passed for %s",
213
+ parser->value, sp->name)
214
+ .c_str());
216
215
  }
217
216
  }
218
217
  if (id == GRPC_CHTTP2_SETTINGS_INITIAL_WINDOW_SIZE &&
@@ -21,9 +21,11 @@
21
21
  #include "src/core/ext/transport/chttp2/transport/frame_window_update.h"
22
22
  #include "src/core/ext/transport/chttp2/transport/internal.h"
23
23
 
24
+ #include "absl/strings/str_cat.h"
25
+ #include "absl/strings/str_format.h"
26
+
24
27
  #include <grpc/support/alloc.h>
25
28
  #include <grpc/support/log.h>
26
- #include <grpc/support/string_util.h>
27
29
 
28
30
  grpc_slice grpc_chttp2_window_update_create(
29
31
  uint32_t id, uint32_t window_update, grpc_transport_one_way_stats* stats) {
@@ -54,12 +56,10 @@ grpc_slice grpc_chttp2_window_update_create(
54
56
  grpc_error* grpc_chttp2_window_update_parser_begin_frame(
55
57
  grpc_chttp2_window_update_parser* parser, uint32_t length, uint8_t flags) {
56
58
  if (flags || length != 4) {
57
- char* msg;
58
- gpr_asprintf(&msg, "invalid window update: length=%d, flags=%02x", length,
59
- flags);
60
- grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
61
- gpr_free(msg);
62
- return err;
59
+ return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
60
+ absl::StrFormat("invalid window update: length=%d, flags=%02x", length,
61
+ flags)
62
+ .c_str());
63
63
  }
64
64
  parser->byte = 0;
65
65
  parser->amount = 0;
@@ -91,11 +91,8 @@ grpc_error* grpc_chttp2_window_update_parser_parse(void* parser,
91
91
  // top bit is reserved and must be ignored.
92
92
  uint32_t received_update = p->amount & 0x7fffffffu;
93
93
  if (received_update == 0) {
94
- char* msg;
95
- gpr_asprintf(&msg, "invalid window update bytes: %d", p->amount);
96
- grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
97
- gpr_free(msg);
98
- return err;
94
+ return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
95
+ absl::StrCat("invalid window update bytes: ", p->amount).c_str());
99
96
  }
100
97
  GPR_ASSERT(is_last);
101
98
 
@@ -25,9 +25,11 @@
25
25
  #include <stddef.h>
26
26
  #include <string.h>
27
27
 
28
+ #include "absl/strings/str_cat.h"
29
+ #include "absl/strings/str_format.h"
30
+
28
31
  #include <grpc/support/alloc.h>
29
32
  #include <grpc/support/log.h>
30
- #include <grpc/support/string_util.h>
31
33
 
32
34
  #include "src/core/ext/transport/chttp2/transport/bin_encoder.h"
33
35
  #include "src/core/lib/debug/stats.h"
@@ -1087,10 +1089,8 @@ static grpc_error* still_parse_error(grpc_chttp2_hpack_parser* p,
1087
1089
  static grpc_error* parse_illegal_op(grpc_chttp2_hpack_parser* p,
1088
1090
  const uint8_t* cur, const uint8_t* end) {
1089
1091
  GPR_ASSERT(cur != end);
1090
- char* msg;
1091
- gpr_asprintf(&msg, "Illegal hpack op code %d", *cur);
1092
- grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
1093
- gpr_free(msg);
1092
+ grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
1093
+ absl::StrCat("Illegal hpack op code ", *cur).c_str());
1094
1094
  return parse_error(p, cur, end, err);
1095
1095
  }
1096
1096
 
@@ -1173,7 +1173,6 @@ static grpc_error* parse_value4(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
1173
1173
  uint8_t c;
1174
1174
  uint32_t cur_value;
1175
1175
  uint32_t add_value;
1176
- char* msg;
1177
1176
 
1178
1177
  if (cur == end) {
1179
1178
  p->state = parse_value4;
@@ -1200,12 +1199,12 @@ static grpc_error* parse_value4(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
1200
1199
  }
1201
1200
 
1202
1201
  error:
1203
- gpr_asprintf(&msg,
1204
- "integer overflow in hpack integer decoding: have 0x%08x, "
1205
- "got byte 0x%02x on byte 5",
1206
- *p->parsing.value, *cur);
1207
- grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
1208
- gpr_free(msg);
1202
+ grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
1203
+ absl::StrFormat(
1204
+ "integer overflow in hpack integer decoding: have 0x%08x, "
1205
+ "got byte 0x%02x on byte 5",
1206
+ *p->parsing.value, *cur)
1207
+ .c_str());
1209
1208
  return parse_error(p, cur, end, err);
1210
1209
  }
1211
1210
 
@@ -1227,13 +1226,12 @@ static grpc_error* parse_value5up(grpc_chttp2_hpack_parser* p,
1227
1226
  return parse_next(p, cur + 1, end);
1228
1227
  }
1229
1228
 
1230
- char* msg;
1231
- gpr_asprintf(&msg,
1232
- "integer overflow in hpack integer decoding: have 0x%08x, "
1233
- "got byte 0x%02x sometime after byte 5",
1234
- *p->parsing.value, *cur);
1235
- grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
1236
- gpr_free(msg);
1229
+ grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
1230
+ absl::StrFormat(
1231
+ "integer overflow in hpack integer decoding: have 0x%08x, "
1232
+ "got byte 0x%02x sometime after byte 5",
1233
+ *p->parsing.value, *cur)
1234
+ .c_str());
1237
1235
  return parse_error(p, cur, end, err);
1238
1236
  }
1239
1237
 
@@ -1389,11 +1387,10 @@ static grpc_error* finish_str(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
1389
1387
  case B64_BYTE2:
1390
1388
  bits = p->base64_buffer;
1391
1389
  if (bits & 0xffff) {
1392
- char* msg;
1393
- gpr_asprintf(&msg, "trailing bits in base64 encoding: 0x%04x",
1394
- bits & 0xffff);
1395
- grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
1396
- gpr_free(msg);
1390
+ grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
1391
+ absl::StrFormat("trailing bits in base64 encoding: 0x%04x",
1392
+ bits & 0xffff)
1393
+ .c_str());
1397
1394
  return parse_error(p, cur, end, err);
1398
1395
  }
1399
1396
  decoded[0] = static_cast<uint8_t>(bits >> 16);
@@ -1402,11 +1399,10 @@ static grpc_error* finish_str(grpc_chttp2_hpack_parser* p, const uint8_t* cur,
1402
1399
  case B64_BYTE3:
1403
1400
  bits = p->base64_buffer;
1404
1401
  if (bits & 0xff) {
1405
- char* msg;
1406
- gpr_asprintf(&msg, "trailing bits in base64 encoding: 0x%02x",
1407
- bits & 0xff);
1408
- grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
1409
- gpr_free(msg);
1402
+ grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
1403
+ absl::StrFormat("trailing bits in base64 encoding: 0x%02x",
1404
+ bits & 0xff)
1405
+ .c_str());
1410
1406
  return parse_error(p, cur, end, err);
1411
1407
  }
1412
1408
  decoded[0] = static_cast<uint8_t>(bits >> 16);
@@ -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 */
@@ -527,6 +527,13 @@ struct grpc_chttp2_stream {
527
527
  grpc_metadata_batch* send_initial_metadata = nullptr;
528
528
  grpc_closure* send_initial_metadata_finished = nullptr;
529
529
  grpc_metadata_batch* send_trailing_metadata = nullptr;
530
+ // TODO(yashykt): Find a better name for the below field and others in this
531
+ // struct to betteer distinguish inputs, return values, and
532
+ // internal state.
533
+ // sent_trailing_metadata_op allows the transport to fill in to the upper
534
+ // layer whether this stream was able to send its trailing metadata (used for
535
+ // detecting cancellation on the server-side)..
536
+ bool* sent_trailing_metadata_op = nullptr;
530
537
  grpc_closure* send_trailing_metadata_finished = nullptr;
531
538
 
532
539
  grpc_core::OrphanablePtr<grpc_core::ByteStream> fetching_send_message;
@@ -836,6 +843,12 @@ void grpc_chttp2_ack_ping(grpc_chttp2_transport* t, uint64_t id);
836
843
  "too_many_pings" followed by immediately closing the connection. */
837
844
  void grpc_chttp2_add_ping_strike(grpc_chttp2_transport* t);
838
845
 
846
+ /** Resets ping clock. Should be called when flushing window updates,
847
+ * initial/trailing metadata or data frames. For a server, it resets the number
848
+ * of ping strikes and the last_ping_recv_time. For a ping sender, it resets
849
+ * pings_before_data_required. */
850
+ void grpc_chttp2_reset_ping_clock(grpc_chttp2_transport* t);
851
+
839
852
  /** add a ref to the stream and add it to the writable list;
840
853
  ref will be dropped in writing.c */
841
854
  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
  }
@@ -242,7 +242,7 @@ class WriteContext {
242
242
  grpc_slice_buffer_add(
243
243
  &t_->outbuf, grpc_chttp2_window_update_create(0, transport_announce,
244
244
  &throwaway_stats));
245
- ResetPingClock();
245
+ grpc_chttp2_reset_ping_clock(t_);
246
246
  }
247
247
  }
248
248
 
@@ -287,15 +287,6 @@ class WriteContext {
287
287
  return s;
288
288
  }
289
289
 
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
290
  void IncInitialMetadataWrites() { ++initial_metadata_writes_; }
300
291
  void IncWindowUpdateWrites() { ++flow_control_writes_; }
301
292
  void IncMessageWrites() { ++message_writes_; }
@@ -474,7 +465,7 @@ class StreamWriteContext {
474
465
  };
475
466
  grpc_chttp2_encode_header(&t_->hpack_compressor, nullptr, 0,
476
467
  s_->send_initial_metadata, &hopt, &t_->outbuf);
477
- write_context_->ResetPingClock();
468
+ grpc_chttp2_reset_ping_clock(t_);
478
469
  write_context_->IncInitialMetadataWrites();
479
470
  }
480
471
 
@@ -501,7 +492,7 @@ class StreamWriteContext {
501
492
  grpc_slice_buffer_add(
502
493
  &t_->outbuf, grpc_chttp2_window_update_create(s_->id, stream_announce,
503
494
  &s_->stats.outgoing));
504
- write_context_->ResetPingClock();
495
+ grpc_chttp2_reset_ping_clock(t_);
505
496
  write_context_->IncWindowUpdateWrites();
506
497
  }
507
498
 
@@ -543,7 +534,7 @@ class StreamWriteContext {
543
534
  }
544
535
  }
545
536
  }
546
- write_context_->ResetPingClock();
537
+ grpc_chttp2_reset_ping_clock(t_);
547
538
  if (data_send_context.is_last_frame()) {
548
539
  SentLastFrame();
549
540
  }
@@ -584,7 +575,7 @@ class StreamWriteContext {
584
575
  s_->send_trailing_metadata, &hopt, &t_->outbuf);
585
576
  }
586
577
  write_context_->IncTrailingMetadataWrites();
587
- write_context_->ResetPingClock();
578
+ grpc_chttp2_reset_ping_clock(t_);
588
579
  SentLastFrame();
589
580
 
590
581
  write_context_->NoteScheduledResults();
@@ -615,6 +606,10 @@ class StreamWriteContext {
615
606
 
616
607
  void SentLastFrame() {
617
608
  s_->send_trailing_metadata = nullptr;
609
+ if (s_->sent_trailing_metadata_op) {
610
+ *s_->sent_trailing_metadata_op = true;
611
+ s_->sent_trailing_metadata_op = nullptr;
612
+ }
618
613
  s_->sent_trailing_metadata = true;
619
614
  s_->eos_sent = true;
620
615