grpc 1.30.2 → 1.31.0.pre1

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

Potentially problematic release.


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

Files changed (317) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +560 -619
  3. data/include/grpc/grpc_security_constants.h +3 -0
  4. data/include/grpc/impl/codegen/grpc_types.h +7 -5
  5. data/include/grpc/impl/codegen/port_platform.h +0 -32
  6. data/src/core/ext/filters/client_channel/backend_metric.cc +12 -9
  7. data/src/core/ext/filters/client_channel/client_channel.cc +406 -265
  8. data/src/core/ext/filters/client_channel/config_selector.cc +62 -0
  9. data/src/core/ext/filters/client_channel/config_selector.h +93 -0
  10. data/src/core/ext/filters/client_channel/global_subchannel_pool.cc +24 -2
  11. data/src/core/ext/filters/client_channel/health/health_check_client.cc +2 -0
  12. data/src/core/ext/filters/client_channel/http_connect_handshaker.cc +6 -5
  13. data/src/core/ext/filters/client_channel/http_proxy.cc +6 -4
  14. data/src/core/ext/filters/client_channel/lb_policy.h +2 -0
  15. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +39 -23
  16. data/src/core/ext/filters/client_channel/lb_policy/subchannel_list.h +4 -6
  17. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_routing.cc +376 -68
  18. data/src/core/ext/filters/client_channel/lb_policy_registry.cc +4 -5
  19. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +5 -2
  20. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver.cc +6 -5
  21. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_libuv.cc +8 -6
  22. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +9 -7
  23. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +7 -5
  24. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +33 -48
  25. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +6 -2
  26. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +21 -18
  27. data/src/core/ext/filters/client_channel/resolver_registry.cc +13 -14
  28. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +6 -7
  29. data/src/core/ext/filters/client_channel/resolving_lb_policy.cc +33 -28
  30. data/src/core/ext/filters/client_channel/resolving_lb_policy.h +39 -20
  31. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +142 -0
  32. data/src/core/ext/filters/client_channel/subchannel.cc +1 -1
  33. data/src/core/ext/filters/client_channel/xds/xds_api.cc +327 -123
  34. data/src/core/ext/filters/client_channel/xds/xds_api.h +72 -7
  35. data/src/core/ext/filters/client_channel/xds/xds_bootstrap.cc +12 -23
  36. data/src/core/ext/filters/client_channel/xds/xds_client.cc +112 -33
  37. data/src/core/ext/filters/client_channel/xds/xds_client_stats.h +10 -10
  38. data/src/core/ext/filters/http/client/http_client_filter.cc +5 -5
  39. data/src/core/ext/filters/http/http_filters_plugin.cc +2 -1
  40. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +74 -33
  41. data/src/core/ext/filters/http/message_compress/message_decompress_filter.h +3 -1
  42. data/src/core/ext/filters/message_size/message_size_filter.cc +56 -80
  43. data/src/core/ext/filters/message_size/message_size_filter.h +6 -0
  44. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +383 -347
  45. data/src/core/ext/transport/chttp2/server/chttp2_server.h +6 -2
  46. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2.cc +1 -1
  47. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +7 -13
  48. data/src/core/ext/transport/chttp2/server/secure/server_secure_chttp2.cc +7 -8
  49. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +19 -4
  50. data/src/core/ext/transport/chttp2/transport/flow_control.cc +22 -27
  51. data/src/core/ext/transport/chttp2/transport/flow_control.h +14 -16
  52. data/src/core/ext/transport/chttp2/transport/frame_data.cc +9 -12
  53. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +4 -6
  54. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +5 -6
  55. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +12 -13
  56. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +6 -7
  57. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +9 -12
  58. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +25 -29
  59. data/src/core/ext/transport/chttp2/transport/hpack_table.cc +13 -17
  60. data/src/core/ext/transport/chttp2/transport/internal.h +13 -0
  61. data/src/core/ext/transport/chttp2/transport/parsing.cc +33 -43
  62. data/src/core/ext/transport/chttp2/transport/writing.cc +9 -14
  63. data/src/core/ext/transport/inproc/inproc_transport.cc +35 -15
  64. data/src/core/ext/upb-generated/envoy/annotations/deprecation.upb.h +0 -1
  65. data/src/core/ext/upb-generated/envoy/annotations/resource.upb.h +3 -4
  66. data/src/core/ext/upb-generated/envoy/api/v2/auth/cert.upb.h +0 -1
  67. data/src/core/ext/upb-generated/envoy/api/v2/auth/common.upb.h +80 -69
  68. data/src/core/ext/upb-generated/envoy/api/v2/auth/secret.upb.h +24 -23
  69. data/src/core/ext/upb-generated/envoy/api/v2/auth/tls.upb.h +66 -56
  70. data/src/core/ext/upb-generated/envoy/api/v2/cds.upb.h +1 -2
  71. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.c +2 -2
  72. data/src/core/ext/upb-generated/envoy/api/v2/cluster.upb.h +317 -311
  73. data/src/core/ext/upb-generated/envoy/api/v2/cluster/circuit_breaker.upb.h +42 -34
  74. data/src/core/ext/upb-generated/envoy/api/v2/cluster/filter.upb.h +7 -7
  75. data/src/core/ext/upb-generated/envoy/api/v2/cluster/outlier_detection.upb.h +79 -61
  76. data/src/core/ext/upb-generated/envoy/api/v2/core/address.upb.h +55 -49
  77. data/src/core/ext/upb-generated/envoy/api/v2/core/backoff.upb.h +9 -8
  78. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.c +1 -1
  79. data/src/core/ext/upb-generated/envoy/api/v2/core/base.upb.h +163 -169
  80. data/src/core/ext/upb-generated/envoy/api/v2/core/config_source.upb.h +51 -45
  81. data/src/core/ext/upb-generated/envoy/api/v2/core/event_service_config.upb.h +4 -5
  82. data/src/core/ext/upb-generated/envoy/api/v2/core/grpc_service.upb.h +107 -100
  83. data/src/core/ext/upb-generated/envoy/api/v2/core/health_check.upb.h +137 -117
  84. data/src/core/ext/upb-generated/envoy/api/v2/core/http_uri.upb.h +9 -9
  85. data/src/core/ext/upb-generated/envoy/api/v2/core/protocol.upb.h +105 -87
  86. data/src/core/ext/upb-generated/envoy/api/v2/core/socket_option.upb.h +12 -13
  87. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.c +1 -1
  88. data/src/core/ext/upb-generated/envoy/api/v2/discovery.upb.h +95 -101
  89. data/src/core/ext/upb-generated/envoy/api/v2/eds.upb.h +1 -2
  90. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.c +1 -1
  91. data/src/core/ext/upb-generated/envoy/api/v2/endpoint.upb.h +49 -65
  92. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint.upb.h +0 -1
  93. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/endpoint_components.upb.h +49 -42
  94. data/src/core/ext/upb-generated/envoy/api/v2/endpoint/load_report.upb.h +70 -62
  95. data/src/core/ext/upb-generated/envoy/api/v2/lds.upb.h +1 -2
  96. data/src/core/ext/upb-generated/envoy/api/v2/listener.upb.h +81 -65
  97. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener.upb.h +0 -1
  98. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.c +1 -1
  99. data/src/core/ext/upb-generated/envoy/api/v2/listener/listener_components.upb.h +91 -80
  100. data/src/core/ext/upb-generated/envoy/api/v2/listener/udp_listener_config.upb.h +9 -10
  101. data/src/core/ext/upb-generated/envoy/api/v2/rds.upb.h +1 -2
  102. data/src/core/ext/upb-generated/envoy/api/v2/route.upb.h +36 -31
  103. data/src/core/ext/upb-generated/envoy/api/v2/route/route.upb.h +0 -1
  104. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.c +7 -7
  105. data/src/core/ext/upb-generated/envoy/api/v2/route/route_components.upb.h +648 -696
  106. data/src/core/ext/upb-generated/envoy/api/v2/scoped_route.upb.h +16 -15
  107. data/src/core/ext/upb-generated/envoy/api/v2/srds.upb.h +1 -2
  108. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.c +1 -1
  109. data/src/core/ext/upb-generated/envoy/config/filter/accesslog/v2/accesslog.upb.h +95 -88
  110. data/src/core/ext/upb-generated/envoy/config/filter/network/http_connection_manager/v2/http_connection_manager.upb.h +234 -199
  111. data/src/core/ext/upb-generated/envoy/config/listener/v2/api_listener.upb.h +5 -5
  112. data/src/core/ext/upb-generated/envoy/config/trace/v2/http_tracer.upb.h +13 -13
  113. data/src/core/ext/upb-generated/envoy/service/discovery/v2/ads.upb.h +1 -2
  114. data/src/core/ext/upb-generated/envoy/service/load_stats/v2/lrs.upb.h +20 -18
  115. data/src/core/ext/upb-generated/envoy/type/http.upb.h +0 -1
  116. data/src/core/ext/upb-generated/envoy/type/matcher/regex.upb.h +18 -17
  117. data/src/core/ext/upb-generated/envoy/type/matcher/string.upb.h +14 -14
  118. data/src/core/ext/upb-generated/envoy/type/metadata/v2/metadata.upb.h +23 -23
  119. data/src/core/ext/upb-generated/envoy/type/percent.upb.h +8 -9
  120. data/src/core/ext/upb-generated/envoy/type/range.upb.h +15 -16
  121. data/src/core/ext/upb-generated/envoy/type/semantic_version.upb.h +7 -8
  122. data/src/core/ext/upb-generated/envoy/type/tracing/v2/custom_tag.upb.h +36 -35
  123. data/src/core/ext/upb-generated/gogoproto/gogo.upb.h +0 -1
  124. data/src/core/ext/upb-generated/google/api/annotations.upb.h +0 -1
  125. data/src/core/ext/upb-generated/google/api/http.upb.h +29 -28
  126. data/src/core/ext/upb-generated/google/protobuf/any.upb.h +5 -6
  127. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.c +3 -3
  128. data/src/core/ext/upb-generated/google/protobuf/descriptor.upb.h +412 -386
  129. data/src/core/ext/upb-generated/google/protobuf/duration.upb.h +5 -6
  130. data/src/core/ext/upb-generated/google/protobuf/empty.upb.h +1 -2
  131. data/src/core/ext/upb-generated/google/protobuf/struct.upb.c +1 -1
  132. data/src/core/ext/upb-generated/google/protobuf/struct.upb.h +33 -54
  133. data/src/core/ext/upb-generated/google/protobuf/timestamp.upb.h +5 -6
  134. data/src/core/ext/upb-generated/google/protobuf/wrappers.upb.h +27 -28
  135. data/src/core/ext/upb-generated/google/rpc/status.upb.h +8 -8
  136. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.c +1 -1
  137. data/src/core/ext/upb-generated/src/proto/grpc/gcp/altscontext.upb.h +32 -45
  138. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.c +4 -4
  139. data/src/core/ext/upb-generated/src/proto/grpc/gcp/handshaker.upb.h +157 -178
  140. data/src/core/ext/upb-generated/src/proto/grpc/gcp/transport_security_common.upb.h +14 -13
  141. data/src/core/ext/upb-generated/src/proto/grpc/health/v1/health.upb.h +6 -7
  142. data/src/core/ext/upb-generated/src/proto/grpc/lb/v1/load_balancer.upb.h +59 -56
  143. data/src/core/ext/upb-generated/udpa/annotations/migrate.upb.h +11 -12
  144. data/src/core/ext/upb-generated/udpa/annotations/sensitive.upb.h +0 -1
  145. data/src/core/ext/upb-generated/udpa/annotations/status.upb.h +5 -6
  146. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.c +6 -6
  147. data/src/core/ext/upb-generated/udpa/data/orca/v1/orca_load_report.upb.h +41 -68
  148. data/src/core/ext/upb-generated/validate/validate.upb.h +536 -535
  149. data/src/core/lib/channel/channel_trace.cc +2 -6
  150. data/src/core/lib/channel/channelz.cc +5 -15
  151. data/src/core/lib/gpr/log_linux.cc +6 -8
  152. data/src/core/lib/gpr/log_posix.cc +6 -8
  153. data/src/core/lib/gpr/string.cc +10 -9
  154. data/src/core/lib/gpr/string.h +4 -2
  155. data/src/core/lib/gprpp/global_config_env.cc +8 -6
  156. data/src/core/lib/http/httpcli.cc +13 -10
  157. data/src/core/lib/http/httpcli_security_connector.cc +5 -5
  158. data/src/core/lib/iomgr/cfstream_handle.cc +1 -0
  159. data/src/core/lib/iomgr/endpoint_pair_posix.cc +10 -10
  160. data/src/core/lib/iomgr/error_cfstream.cc +9 -8
  161. data/src/core/lib/iomgr/ev_epoll1_linux.cc +5 -6
  162. data/src/core/lib/iomgr/ev_epollex_linux.cc +15 -21
  163. data/src/core/lib/iomgr/ev_poll_posix.cc +6 -5
  164. data/src/core/lib/iomgr/ev_posix.cc +2 -0
  165. data/src/core/lib/iomgr/iomgr.cc +10 -0
  166. data/src/core/lib/iomgr/iomgr.h +10 -0
  167. data/src/core/lib/iomgr/is_epollexclusive_available.cc +14 -0
  168. data/src/core/lib/iomgr/port.h +1 -21
  169. data/src/core/lib/iomgr/resolve_address_custom.cc +13 -18
  170. data/src/core/lib/iomgr/resolve_address_windows.cc +8 -8
  171. data/src/core/lib/iomgr/resource_quota.cc +34 -31
  172. data/src/core/lib/iomgr/sockaddr_utils.cc +7 -5
  173. data/src/core/lib/iomgr/sockaddr_utils.h +1 -1
  174. data/src/core/lib/iomgr/socket_utils_common_posix.cc +95 -55
  175. data/src/core/lib/iomgr/socket_windows.cc +4 -5
  176. data/src/core/lib/iomgr/tcp_client_cfstream.cc +9 -11
  177. data/src/core/lib/iomgr/tcp_client_custom.cc +6 -9
  178. data/src/core/lib/iomgr/tcp_client_posix.cc +27 -36
  179. data/src/core/lib/iomgr/tcp_client_windows.cc +9 -9
  180. data/src/core/lib/iomgr/tcp_custom.cc +1 -1
  181. data/src/core/lib/iomgr/tcp_custom.h +1 -1
  182. data/src/core/lib/iomgr/tcp_server.cc +3 -4
  183. data/src/core/lib/iomgr/tcp_server.h +7 -5
  184. data/src/core/lib/iomgr/tcp_server_custom.cc +6 -14
  185. data/src/core/lib/iomgr/tcp_server_posix.cc +34 -41
  186. data/src/core/lib/iomgr/tcp_server_utils_posix.h +3 -4
  187. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +5 -7
  188. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +4 -9
  189. data/src/core/lib/iomgr/tcp_server_windows.cc +16 -16
  190. data/src/core/lib/iomgr/timer_generic.cc +13 -12
  191. data/src/core/lib/iomgr/udp_server.cc +24 -23
  192. data/src/core/lib/iomgr/udp_server.h +5 -2
  193. data/src/core/lib/iomgr/unix_sockets_posix.cc +9 -14
  194. data/src/core/lib/iomgr/unix_sockets_posix.h +3 -1
  195. data/src/core/lib/iomgr/unix_sockets_posix_noop.cc +5 -2
  196. data/src/core/lib/json/json_reader.cc +20 -21
  197. data/src/core/lib/security/credentials/credentials.h +5 -3
  198. data/src/core/lib/security/credentials/google_default/credentials_generic.cc +8 -6
  199. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +12 -9
  200. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +7 -4
  201. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +19 -28
  202. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -6
  203. data/src/core/lib/security/credentials/ssl/ssl_credentials.cc +20 -0
  204. data/src/core/lib/security/credentials/ssl/ssl_credentials.h +10 -0
  205. data/src/core/lib/security/credentials/tls/grpc_tls_credentials_options.h +10 -0
  206. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +10 -10
  207. data/src/core/lib/security/security_connector/security_connector.cc +2 -0
  208. data/src/core/lib/security/security_connector/security_connector.h +1 -1
  209. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +18 -11
  210. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.h +5 -0
  211. data/src/core/lib/security/security_connector/ssl_utils.cc +44 -23
  212. data/src/core/lib/security/security_connector/ssl_utils.h +6 -2
  213. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +27 -24
  214. data/src/core/lib/security/transport/client_auth_filter.cc +10 -9
  215. data/src/core/lib/security/util/json_util.cc +12 -13
  216. data/src/core/lib/slice/slice.cc +38 -1
  217. data/src/core/lib/slice/slice_internal.h +1 -0
  218. data/src/core/lib/surface/call.cc +40 -41
  219. data/src/core/lib/surface/completion_queue.cc +271 -14
  220. data/src/core/lib/surface/completion_queue.h +8 -0
  221. data/src/core/lib/surface/init.cc +2 -0
  222. data/src/core/lib/surface/server.cc +565 -632
  223. data/src/core/lib/surface/server.h +34 -12
  224. data/src/core/lib/surface/version.cc +2 -2
  225. data/src/core/lib/transport/transport.h +6 -0
  226. data/src/core/lib/uri/uri_parser.cc +8 -15
  227. data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -0
  228. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +23 -13
  229. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +2 -0
  230. data/src/core/tsi/alts/handshaker/transport_security_common_api.cc +2 -0
  231. data/src/core/tsi/ssl_transport_security.cc +102 -11
  232. data/src/core/tsi/ssl_transport_security.h +14 -2
  233. data/src/core/tsi/transport_security_interface.h +5 -0
  234. data/src/ruby/ext/grpc/extconf.rb +5 -2
  235. data/src/ruby/ext/grpc/rb_call.c +3 -2
  236. data/src/ruby/ext/grpc/rb_call.h +4 -0
  237. data/src/ruby/ext/grpc/rb_call_credentials.c +54 -10
  238. data/src/ruby/lib/grpc/generic/interceptors.rb +1 -1
  239. data/src/ruby/lib/grpc/version.rb +1 -1
  240. data/third_party/boringssl-with-bazel/err_data.c +89 -83
  241. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_bitstr.c +3 -3
  242. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_enum.c +3 -3
  243. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_int.c +1 -1
  244. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +3 -3
  245. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_time.c +2 -2
  246. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_type.c +1 -1
  247. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn1_lib.c +1 -1
  248. data/third_party/boringssl-with-bazel/src/crypto/asn1/asn_pack.c +1 -1
  249. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_enum.c +1 -1
  250. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_int.c +1 -1
  251. data/third_party/boringssl-with-bazel/src/crypto/asn1/f_string.c +1 -1
  252. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/tls_cbc.c +1 -0
  253. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/hash_to_curve.c +12 -52
  254. data/third_party/boringssl-with-bazel/src/crypto/ec_extra/internal.h +0 -22
  255. data/third_party/boringssl-with-bazel/src/crypto/evp/evp_asn1.c +143 -0
  256. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/aes/mode_wrappers.c +17 -1
  257. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/internal.h +11 -1
  258. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/internal.h +2 -1
  259. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p224-64.c +13 -11
  260. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256-x86_64.c +24 -23
  261. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/p256.c +20 -16
  262. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/simple_mul.c +2 -2
  263. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/ec/util.c +3 -3
  264. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/self_check/self_check.c +62 -0
  265. data/third_party/boringssl-with-bazel/src/crypto/mem.c +29 -15
  266. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/internal.h +7 -0
  267. data/third_party/boringssl-with-bazel/src/crypto/pkcs8/pkcs8_x509.c +36 -5
  268. data/third_party/boringssl-with-bazel/src/crypto/trust_token/internal.h +0 -29
  269. data/third_party/boringssl-with-bazel/src/crypto/trust_token/pmbtoken.c +116 -363
  270. data/third_party/boringssl-with-bazel/src/crypto/trust_token/trust_token.c +7 -45
  271. data/third_party/boringssl-with-bazel/src/crypto/x509/a_strex.c +4 -4
  272. data/third_party/boringssl-with-bazel/src/crypto/x509/algorithm.c +8 -0
  273. data/third_party/boringssl-with-bazel/src/crypto/x509/asn1_gen.c +4 -4
  274. data/third_party/boringssl-with-bazel/src/crypto/x509/x509.c +0 -67
  275. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +13 -6
  276. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +10 -0
  277. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +41 -0
  278. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +4 -1
  279. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +28 -9
  280. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +25 -0
  281. data/third_party/boringssl-with-bazel/src/crypto/x509/x_crl.c +35 -13
  282. data/third_party/boringssl-with-bazel/src/crypto/x509/x_pubkey.c +0 -154
  283. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509.c +28 -6
  284. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +5 -0
  285. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +74 -35
  286. data/third_party/boringssl-with-bazel/src/include/openssl/aes.h +16 -4
  287. data/third_party/boringssl-with-bazel/src/include/openssl/asn1.h +22 -22
  288. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +1 -1
  289. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +69 -0
  290. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +33 -16
  291. data/third_party/boringssl-with-bazel/src/include/openssl/trust_token.h +1 -10
  292. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +789 -715
  293. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +3 -3
  294. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +9 -2
  295. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +2 -2
  296. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +9 -0
  297. data/third_party/boringssl-with-bazel/src/ssl/internal.h +17 -14
  298. data/third_party/boringssl-with-bazel/src/ssl/ssl_asn1.cc +7 -7
  299. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +28 -0
  300. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +4 -24
  301. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +5 -5
  302. data/third_party/boringssl-with-bazel/src/ssl/t1_enc.cc +45 -24
  303. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +31 -21
  304. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +12 -9
  305. data/third_party/upb/upb/decode.c +467 -504
  306. data/third_party/upb/upb/encode.c +163 -121
  307. data/third_party/upb/upb/msg.c +130 -64
  308. data/third_party/upb/upb/msg.h +418 -14
  309. data/third_party/upb/upb/port_def.inc +35 -6
  310. data/third_party/upb/upb/port_undef.inc +8 -1
  311. data/third_party/upb/upb/table.c +53 -75
  312. data/third_party/upb/upb/table.int.h +11 -43
  313. data/third_party/upb/upb/upb.c +148 -124
  314. data/third_party/upb/upb/upb.h +65 -147
  315. data/third_party/upb/upb/upb.hpp +86 -0
  316. metadata +40 -37
  317. data/third_party/upb/upb/generated_util.h +0 -105
@@ -25,9 +25,13 @@
25
25
 
26
26
  #include "src/core/lib/iomgr/error.h"
27
27
 
28
+ namespace grpc_core {
29
+
28
30
  /// Adds a port to \a server. Sets \a port_num to the port number.
29
31
  /// Takes ownership of \a args.
30
- grpc_error* grpc_chttp2_server_add_port(grpc_server* server, const char* addr,
31
- grpc_channel_args* args, int* port_num);
32
+ grpc_error* Chttp2ServerAddPort(grpc_server* server, const char* addr,
33
+ grpc_channel_args* args, int* port_num);
34
+
35
+ } // namespace grpc_core
32
36
 
33
37
  #endif /* GRPC_CORE_EXT_TRANSPORT_CHTTP2_SERVER_CHTTP2_SERVER_H */
@@ -32,7 +32,7 @@ int grpc_server_add_insecure_http2_port(grpc_server* server, const char* addr) {
32
32
  int port_num = 0;
33
33
  GRPC_API_TRACE("grpc_server_add_insecure_http2_port(server=%p, addr=%s)", 2,
34
34
  (server, addr));
35
- grpc_error* err = grpc_chttp2_server_add_port(
35
+ grpc_error* err = grpc_core::Chttp2ServerAddPort(
36
36
  server, addr,
37
37
  grpc_channel_args_copy(grpc_server_get_channel_args(server)), &port_num);
38
38
  if (err != GRPC_ERROR_NONE) {
@@ -24,8 +24,9 @@
24
24
 
25
25
  #ifdef GPR_SUPPORT_CHANNELS_FROM_FD
26
26
 
27
+ #include "absl/strings/str_cat.h"
28
+
27
29
  #include <grpc/support/alloc.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/lib/channel/channel_args.h"
@@ -40,25 +41,18 @@ void grpc_server_add_insecure_channel_from_fd(grpc_server* server,
40
41
  GPR_ASSERT(reserved == nullptr);
41
42
 
42
43
  grpc_core::ExecCtx exec_ctx;
43
- char* name;
44
- gpr_asprintf(&name, "fd:%d", fd);
45
44
 
45
+ std::string name = absl::StrCat("fd:", fd);
46
46
  grpc_endpoint* server_endpoint =
47
- grpc_tcp_create(grpc_fd_create(fd, name, true),
48
- grpc_server_get_channel_args(server), name);
49
-
50
- gpr_free(name);
47
+ grpc_tcp_create(grpc_fd_create(fd, name.c_str(), true),
48
+ grpc_server_get_channel_args(server), name.c_str());
51
49
 
52
50
  const grpc_channel_args* server_args = grpc_server_get_channel_args(server);
53
51
  grpc_transport* transport = grpc_create_chttp2_transport(
54
52
  server_args, server_endpoint, false /* is_client */);
55
53
 
56
- grpc_pollset** pollsets;
57
- size_t num_pollsets = 0;
58
- grpc_server_get_pollsets(server, &pollsets, &num_pollsets);
59
-
60
- for (size_t i = 0; i < num_pollsets; i++) {
61
- grpc_endpoint_add_to_pollset(server_endpoint, pollsets[i]);
54
+ for (grpc_pollset* pollset : grpc_server_get_pollsets(server)) {
55
+ grpc_endpoint_add_to_pollset(server_endpoint, pollset);
62
56
  }
63
57
 
64
58
  grpc_server_setup_transport(server, transport, nullptr, server_args, nullptr);
@@ -22,9 +22,10 @@
22
22
 
23
23
  #include <string.h>
24
24
 
25
+ #include "absl/strings/str_cat.h"
26
+
25
27
  #include <grpc/support/alloc.h>
26
28
  #include <grpc/support/log.h>
27
- #include <grpc/support/string_util.h>
28
29
 
29
30
  #include "src/core/ext/transport/chttp2/server/chttp2_server.h"
30
31
 
@@ -56,12 +57,10 @@ int grpc_server_add_secure_http2_port(grpc_server* server, const char* addr,
56
57
  }
57
58
  sc = creds->create_security_connector();
58
59
  if (sc == nullptr) {
59
- char* msg;
60
- gpr_asprintf(&msg,
61
- "Unable to create secure server with credentials of type %s.",
62
- creds->type());
63
- err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
64
- gpr_free(msg);
60
+ err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
61
+ absl::StrCat("Unable to create secure server with credentials of type ",
62
+ creds->type())
63
+ .c_str());
65
64
  goto done;
66
65
  }
67
66
  // Create channel args.
@@ -72,7 +71,7 @@ int grpc_server_add_secure_http2_port(grpc_server* server, const char* addr,
72
71
  grpc_channel_args_copy_and_add(grpc_server_get_channel_args(server),
73
72
  args_to_add, GPR_ARRAY_SIZE(args_to_add));
74
73
  // Add server port.
75
- err = grpc_chttp2_server_add_port(server, addr, args, &port_num);
74
+ err = grpc_core::Chttp2ServerAddPort(server, addr, args, &port_num);
76
75
  done:
77
76
  sc.reset(DEBUG_LOCATION, "server");
78
77
 
@@ -1105,7 +1105,6 @@ void grpc_chttp2_add_incoming_goaway(grpc_chttp2_transport* t,
1105
1105
  : static_cast<grpc_millis>(current_keepalive_time_ms *
1106
1106
  KEEPALIVE_TIME_BACKOFF_MULTIPLIER);
1107
1107
  }
1108
-
1109
1108
  /* lie: use transient failure from the transport to indicate goaway has been
1110
1109
  * received */
1111
1110
  connectivity_state_set(t, GRPC_CHANNEL_TRANSIENT_FAILURE, "got_goaway");
@@ -1526,6 +1525,7 @@ static void perform_stream_op_locked(void* stream_op,
1526
1525
  s->send_trailing_metadata_finished = add_closure_barrier(on_complete);
1527
1526
  s->send_trailing_metadata =
1528
1527
  op_payload->send_trailing_metadata.send_trailing_metadata;
1528
+ s->sent_trailing_metadata_op = op_payload->send_trailing_metadata.sent;
1529
1529
  s->write_buffering = false;
1530
1530
  const size_t metadata_size =
1531
1531
  grpc_metadata_batch_size(s->send_trailing_metadata);
@@ -1551,6 +1551,7 @@ static void perform_stream_op_locked(void* stream_op,
1551
1551
  }
1552
1552
  if (s->write_closed) {
1553
1553
  s->send_trailing_metadata = nullptr;
1554
+ s->sent_trailing_metadata_op = nullptr;
1554
1555
  grpc_chttp2_complete_closure_step(
1555
1556
  t, s, &s->send_trailing_metadata_finished,
1556
1557
  grpc_metadata_batch_is_empty(
@@ -1794,6 +1795,15 @@ void grpc_chttp2_add_ping_strike(grpc_chttp2_transport* t) {
1794
1795
  }
1795
1796
  }
1796
1797
 
1798
+ void grpc_chttp2_reset_ping_clock(grpc_chttp2_transport* t) {
1799
+ if (!t->is_client) {
1800
+ t->ping_recv_state.last_ping_recv_time = GRPC_MILLIS_INF_PAST;
1801
+ t->ping_recv_state.ping_strikes = 0;
1802
+ }
1803
+ t->ping_state.pings_before_data_required =
1804
+ t->ping_policy.max_pings_without_data;
1805
+ }
1806
+
1797
1807
  static void perform_transport_op_locked(void* stream_op,
1798
1808
  grpc_error* /*error_ignored*/) {
1799
1809
  grpc_transport_op* op = static_cast<grpc_transport_op*>(stream_op);
@@ -2177,6 +2187,7 @@ void grpc_chttp2_fail_pending_writes(grpc_chttp2_transport* t,
2177
2187
  "send_initial_metadata_finished");
2178
2188
 
2179
2189
  s->send_trailing_metadata = nullptr;
2190
+ s->sent_trailing_metadata_op = nullptr;
2180
2191
  grpc_chttp2_complete_closure_step(t, s, &s->send_trailing_metadata_finished,
2181
2192
  GRPC_ERROR_REF(error),
2182
2193
  "send_trailing_metadata_finished");
@@ -2193,9 +2204,12 @@ void grpc_chttp2_mark_stream_closed(grpc_chttp2_transport* t,
2193
2204
  grpc_chttp2_stream* s, int close_reads,
2194
2205
  int close_writes, grpc_error* error) {
2195
2206
  if (s->read_closed && s->write_closed) {
2196
- /* already closed */
2207
+ /* already closed, but we should still fake the status if needed. */
2208
+ grpc_error* overall_error = removal_error(error, s, "Stream removed");
2209
+ if (overall_error != GRPC_ERROR_NONE) {
2210
+ grpc_chttp2_fake_status(t, s, overall_error);
2211
+ }
2197
2212
  grpc_chttp2_maybe_complete_recv_trailing_metadata(t, s);
2198
- GRPC_ERROR_UNREF(error);
2199
2213
  return;
2200
2214
  }
2201
2215
  bool closed_read = false;
@@ -2390,6 +2404,7 @@ static void close_from_api(grpc_chttp2_transport* t, grpc_chttp2_stream* s,
2390
2404
  grpc_slice_buffer_add(&t->qbuf, status_hdr);
2391
2405
  grpc_slice_buffer_add(&t->qbuf, message_pfx);
2392
2406
  grpc_slice_buffer_add(&t->qbuf, grpc_slice_ref_internal(slice));
2407
+ grpc_chttp2_reset_ping_clock(t);
2393
2408
  grpc_chttp2_add_rst_stream_to_next_write(t, s->id, GRPC_HTTP2_NO_ERROR,
2394
2409
  &s->stats.outgoing);
2395
2410
 
@@ -2878,7 +2893,7 @@ static void keepalive_watchdog_fired_locked(void* arg, grpc_error* error) {
2878
2893
  grpc_chttp2_transport* t = static_cast<grpc_chttp2_transport*>(arg);
2879
2894
  if (t->keepalive_state == GRPC_CHTTP2_KEEPALIVE_STATE_PINGING) {
2880
2895
  if (error == GRPC_ERROR_NONE) {
2881
- gpr_log(GPR_ERROR, "%s: Keepalive watchdog fired. Closing transport.",
2896
+ gpr_log(GPR_INFO, "%s: Keepalive watchdog fired. Closing transport.",
2882
2897
  t->peer_string);
2883
2898
  t->keepalive_state = GRPC_CHTTP2_KEEPALIVE_STATE_DYING;
2884
2899
  close_transport_locked(
@@ -25,9 +25,12 @@
25
25
  #include <math.h>
26
26
  #include <string.h>
27
27
 
28
+ #include <string>
29
+
30
+ #include "absl/strings/str_format.h"
31
+
28
32
  #include <grpc/support/alloc.h>
29
33
  #include <grpc/support/log.h>
30
- #include <grpc/support/string_util.h>
31
34
 
32
35
  #include "src/core/ext/transport/chttp2/transport/internal.h"
33
36
  #include "src/core/lib/gpr/string.h"
@@ -43,27 +46,23 @@ static constexpr const int kTracePadding = 30;
43
46
  static constexpr const uint32_t kMaxWindowUpdateSize = (1u << 31) - 1;
44
47
 
45
48
  static char* fmt_int64_diff_str(int64_t old_val, int64_t new_val) {
46
- char* str;
49
+ std::string str;
47
50
  if (old_val != new_val) {
48
- gpr_asprintf(&str, "%" PRId64 " -> %" PRId64 "", old_val, new_val);
51
+ str = absl::StrFormat("%" PRId64 " -> %" PRId64 "", old_val, new_val);
49
52
  } else {
50
- gpr_asprintf(&str, "%" PRId64 "", old_val);
53
+ str = absl::StrFormat("%" PRId64 "", old_val);
51
54
  }
52
- char* str_lp = gpr_leftpad(str, ' ', kTracePadding);
53
- gpr_free(str);
54
- return str_lp;
55
+ return gpr_leftpad(str.c_str(), ' ', kTracePadding);
55
56
  }
56
57
 
57
58
  static char* fmt_uint32_diff_str(uint32_t old_val, uint32_t new_val) {
58
- char* str;
59
+ std::string str;
59
60
  if (old_val != new_val) {
60
- gpr_asprintf(&str, "%" PRIu32 " -> %" PRIu32 "", old_val, new_val);
61
+ str = absl::StrFormat("%" PRIu32 " -> %" PRIu32 "", old_val, new_val);
61
62
  } else {
62
- gpr_asprintf(&str, "%" PRIu32 "", old_val);
63
+ str = absl::StrFormat("%" PRIu32 "", old_val);
63
64
  }
64
- char* str_lp = gpr_leftpad(str, ' ', kTracePadding);
65
- gpr_free(str);
66
- return str_lp;
65
+ return gpr_leftpad(str.c_str(), ' ', kTracePadding);
67
66
  }
68
67
  } // namespace
69
68
 
@@ -204,13 +203,11 @@ uint32_t TransportFlowControl::MaybeSendUpdate(bool writing_anyway) {
204
203
  grpc_error* TransportFlowControl::ValidateRecvData(
205
204
  int64_t incoming_frame_size) {
206
205
  if (incoming_frame_size > announced_window_) {
207
- char* msg;
208
- gpr_asprintf(&msg,
209
- "frame of size %" PRId64 " overflows local window of %" PRId64,
210
- incoming_frame_size, announced_window_);
211
- grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
212
- gpr_free(msg);
213
- return err;
206
+ return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
207
+ absl::StrFormat("frame of size %" PRId64
208
+ " overflows local window of %" PRId64,
209
+ incoming_frame_size, announced_window_)
210
+ .c_str());
214
211
  }
215
212
  return GRPC_ERROR_NONE;
216
213
  }
@@ -248,13 +245,11 @@ grpc_error* StreamFlowControl::RecvData(int64_t incoming_frame_size) {
248
245
  "See (for example) https://github.com/netty/netty/issues/6520.",
249
246
  incoming_frame_size, acked_stream_window, sent_stream_window);
250
247
  } else {
251
- char* msg;
252
- gpr_asprintf(
253
- &msg, "frame of size %" PRId64 " overflows local window of %" PRId64,
254
- incoming_frame_size, acked_stream_window);
255
- grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
256
- gpr_free(msg);
257
- return err;
248
+ return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
249
+ absl::StrFormat("frame of size %" PRId64
250
+ " overflows local window of %" PRId64,
251
+ incoming_frame_size, acked_stream_window)
252
+ .c_str());
258
253
  }
259
254
  }
260
255
 
@@ -140,8 +140,7 @@ class FlowControlTrace {
140
140
  };
141
141
 
142
142
  // Fat interface with all methods a flow control implementation needs to
143
- // support. gRPC C Core does not support pure virtual functions, so instead
144
- // we abort in any methods which require implementation in the base class.
143
+ // support.
145
144
  class TransportFlowControlBase {
146
145
  public:
147
146
  TransportFlowControlBase() {}
@@ -149,30 +148,30 @@ class TransportFlowControlBase {
149
148
 
150
149
  // Is flow control enabled? This is needed in other codepaths like the checks
151
150
  // in parsing and in writing.
152
- virtual bool flow_control_enabled() const { abort(); }
151
+ virtual bool flow_control_enabled() const = 0;
153
152
 
154
153
  // Called to check if the transport needs to send a WINDOW_UPDATE frame
155
- virtual uint32_t MaybeSendUpdate(bool /* writing_anyway */) { abort(); }
154
+ virtual uint32_t MaybeSendUpdate(bool /* writing_anyway */) = 0;
156
155
 
157
156
  // Using the protected members, returns and Action to be taken by the
158
157
  // tranport.
159
- virtual FlowControlAction MakeAction() { abort(); }
158
+ virtual FlowControlAction MakeAction() = 0;
160
159
 
161
160
  // Using the protected members, returns and Action to be taken by the
162
161
  // tranport. Also checks for updates to our BDP estimate and acts
163
162
  // accordingly.
164
- virtual FlowControlAction PeriodicUpdate() { abort(); }
163
+ virtual FlowControlAction PeriodicUpdate() = 0;
165
164
 
166
165
  // Called to do bookkeeping when a stream owned by this transport sends
167
166
  // data on the wire
168
- virtual void StreamSentData(int64_t /* size */) { abort(); }
167
+ virtual void StreamSentData(int64_t /* size */) = 0;
169
168
 
170
169
  // Called to do bookkeeping when a stream owned by this transport receives
171
170
  // data from the wire. Also does error checking for frame size.
172
- virtual grpc_error* RecvData(int64_t /* incoming_frame_size */) { abort(); }
171
+ virtual grpc_error* RecvData(int64_t /* incoming_frame_size */) = 0;
173
172
 
174
173
  // Called to do bookkeeping when we receive a WINDOW_UPDATE frame.
175
- virtual void RecvUpdate(uint32_t /* size */) { abort(); }
174
+ virtual void RecvUpdate(uint32_t /* size */) = 0;
176
175
 
177
176
  // Returns the BdpEstimator held by this object. Caller is responsible for
178
177
  // checking for nullptr. TODO(ncteisen): consider fully encapsulating all
@@ -334,8 +333,7 @@ class TransportFlowControl final : public TransportFlowControlBase {
334
333
  };
335
334
 
336
335
  // Fat interface with all methods a stream flow control implementation needs
337
- // to support. gRPC C Core does not support pure virtual functions, so instead
338
- // we abort in any methods which require implementation in the base class.
336
+ // to support.
339
337
  class StreamFlowControlBase {
340
338
  public:
341
339
  StreamFlowControlBase() {}
@@ -348,19 +346,19 @@ class StreamFlowControlBase {
348
346
 
349
347
  // Using the protected members, returns an Action for this stream to be
350
348
  // taken by the tranport.
351
- virtual FlowControlAction MakeAction() { abort(); }
349
+ virtual FlowControlAction MakeAction() = 0;
352
350
 
353
351
  // Bookkeeping for when data is sent on this stream.
354
- virtual void SentData(int64_t /* outgoing_frame_size */) { abort(); }
352
+ virtual void SentData(int64_t /* outgoing_frame_size */) = 0;
355
353
 
356
354
  // Bookkeeping and error checking for when data is received by this stream.
357
- virtual grpc_error* RecvData(int64_t /* incoming_frame_size */) { abort(); }
355
+ virtual grpc_error* RecvData(int64_t /* incoming_frame_size */) = 0;
358
356
 
359
357
  // Called to check if this stream needs to send a WINDOW_UPDATE frame.
360
- virtual uint32_t MaybeSendUpdate() { abort(); }
358
+ virtual uint32_t MaybeSendUpdate() = 0;
361
359
 
362
360
  // Bookkeeping for receiving a WINDOW_UPDATE from for this stream.
363
- virtual void RecvUpdate(uint32_t /* size */) { abort(); }
361
+ virtual void RecvUpdate(uint32_t /* size */) = 0;
364
362
 
365
363
  // Bookkeeping for when a call pulls bytes out of the transport. At this
366
364
  // point we consider the data 'used' and can thus let out peer know we are
@@ -22,9 +22,10 @@
22
22
 
23
23
  #include <string.h>
24
24
 
25
+ #include "absl/strings/str_format.h"
26
+
25
27
  #include <grpc/support/alloc.h>
26
28
  #include <grpc/support/log.h>
27
- #include <grpc/support/string_util.h>
28
29
  #include "src/core/ext/transport/chttp2/transport/internal.h"
29
30
  #include "src/core/lib/gpr/string.h"
30
31
  #include "src/core/lib/gprpp/memory.h"
@@ -44,13 +45,10 @@ grpc_error* grpc_chttp2_data_parser_begin_frame(
44
45
  grpc_chttp2_data_parser* /*parser*/, uint8_t flags, uint32_t stream_id,
45
46
  grpc_chttp2_stream* s) {
46
47
  if (flags & ~GRPC_CHTTP2_DATA_FLAG_END_STREAM) {
47
- char* msg;
48
- gpr_asprintf(&msg, "unsupported data flags: 0x%02x", flags);
49
- grpc_error* err = grpc_error_set_int(
50
- GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg), GRPC_ERROR_INT_STREAM_ID,
51
- static_cast<intptr_t>(stream_id));
52
- gpr_free(msg);
53
- return err;
48
+ return grpc_error_set_int(
49
+ GRPC_ERROR_CREATE_FROM_COPIED_STRING(
50
+ absl::StrFormat("unsupported data flags: 0x%02x", flags).c_str()),
51
+ GRPC_ERROR_INT_STREAM_ID, static_cast<intptr_t>(stream_id));
54
52
  }
55
53
 
56
54
  if (flags & GRPC_CHTTP2_DATA_FLAG_END_STREAM) {
@@ -130,12 +128,11 @@ grpc_error* grpc_deframe_unprocessed_incoming_frames(
130
128
  p->is_frame_compressed = true; /* GPR_TRUE */
131
129
  break;
132
130
  default:
133
- char* msg;
134
- gpr_asprintf(&msg, "Bad GRPC frame type 0x%02x", p->frame_type);
135
- p->error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
131
+ p->error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(
132
+ absl::StrFormat("Bad GRPC frame type 0x%02x", p->frame_type)
133
+ .c_str());
136
134
  p->error = grpc_error_set_int(p->error, GRPC_ERROR_INT_STREAM_ID,
137
135
  static_cast<intptr_t>(s->id));
138
- gpr_free(msg);
139
136
  p->error = grpc_error_set_str(
140
137
  p->error, GRPC_ERROR_STR_RAW_BYTES,
141
138
  grpc_slice_from_moved_string(grpc_core::UniquePtr<char>(
@@ -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
  void grpc_chttp2_goaway_parser_init(grpc_chttp2_goaway_parser* p) {
31
32
  p->debug_data = nullptr;
@@ -39,11 +40,8 @@ grpc_error* grpc_chttp2_goaway_parser_begin_frame(grpc_chttp2_goaway_parser* p,
39
40
  uint32_t length,
40
41
  uint8_t /*flags*/) {
41
42
  if (length < 8) {
42
- char* msg;
43
- gpr_asprintf(&msg, "goaway frame too short (%d bytes)", length);
44
- grpc_error* err = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
45
- gpr_free(msg);
46
- return err;
43
+ return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
44
+ absl::StrFormat("goaway frame too short (%d bytes)", length).c_str());
47
45
  }
48
46
 
49
47
  gpr_free(p->debug_data);
@@ -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
  static bool g_disable_ping_ack = false;
31
32
 
@@ -58,11 +59,9 @@ grpc_error* grpc_chttp2_ping_parser_begin_frame(grpc_chttp2_ping_parser* parser,
58
59
  uint32_t length,
59
60
  uint8_t flags) {
60
61
  if (flags & 0xfe || length != 8) {
61
- char* msg;
62
- gpr_asprintf(&msg, "invalid ping: length=%d, flags=%02x", length, flags);
63
- grpc_error* error = GRPC_ERROR_CREATE_FROM_COPIED_STRING(msg);
64
- gpr_free(msg);
65
- return error;
62
+ return GRPC_ERROR_CREATE_FROM_COPIED_STRING(
63
+ absl::StrFormat("invalid ping: length=%d, flags=%02x", length, flags)
64
+ .c_str());
66
65
  }
67
66
  parser->byte = 0;
68
67
  parser->is_ack = flags;