grpc 1.38.0 → 1.40.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 (340) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +68 -21
  3. data/include/grpc/event_engine/endpoint_config.h +48 -0
  4. data/include/grpc/event_engine/event_engine.h +23 -29
  5. data/include/grpc/event_engine/port.h +2 -0
  6. data/include/grpc/event_engine/slice_allocator.h +21 -36
  7. data/include/grpc/grpc.h +9 -2
  8. data/include/grpc/grpc_security.h +32 -0
  9. data/include/grpc/grpc_security_constants.h +1 -0
  10. data/include/grpc/impl/codegen/grpc_types.h +33 -19
  11. data/include/grpc/impl/codegen/port_platform.h +41 -0
  12. data/src/core/ext/filters/client_channel/client_channel.cc +415 -249
  13. data/src/core/ext/filters/client_channel/client_channel.h +42 -18
  14. data/src/core/ext/filters/client_channel/config_selector.h +19 -6
  15. data/src/core/ext/filters/client_channel/health/health_check_client.cc +2 -0
  16. data/src/core/ext/filters/client_channel/health/health_check_client.h +3 -3
  17. data/src/core/ext/filters/client_channel/http_proxy.cc +16 -1
  18. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +7 -8
  19. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +12 -21
  20. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +3 -5
  21. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +734 -0
  22. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.h +10 -0
  23. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +8 -15
  24. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +3 -6
  25. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +18 -36
  26. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +14 -22
  27. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +2 -9
  28. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +68 -103
  29. data/src/core/ext/filters/client_channel/lb_policy.cc +1 -15
  30. data/src/core/ext/filters/client_channel/lb_policy.h +70 -46
  31. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +1 -3
  32. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_event_engine.cc +31 -0
  33. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper_event_engine.cc +28 -0
  34. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +1 -3
  35. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +7 -2
  36. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +116 -76
  37. data/src/core/ext/filters/client_channel/retry_filter.cc +967 -544
  38. data/src/core/ext/filters/client_channel/retry_service_config.cc +57 -28
  39. data/src/core/ext/filters/client_channel/retry_service_config.h +9 -3
  40. data/src/core/ext/filters/client_channel/service_config_call_data.h +45 -5
  41. data/src/core/ext/filters/client_idle/client_idle_filter.cc +1 -1
  42. data/src/core/ext/filters/http/client/http_client_filter.cc +5 -2
  43. data/src/core/ext/transport/chttp2/client/insecure/channel_create_posix.cc +2 -1
  44. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +5 -1
  45. data/src/core/ext/transport/chttp2/server/insecure/server_chttp2_posix.cc +3 -2
  46. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +1 -1
  47. data/src/core/{lib/event_engine/slice_allocator.cc → ext/transport/chttp2/transport/chttp2_slice_allocator.cc} +23 -16
  48. data/src/core/ext/transport/chttp2/transport/chttp2_slice_allocator.h +74 -0
  49. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +12 -10
  50. data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -1
  51. data/src/core/ext/transport/chttp2/transport/frame_data.cc +4 -4
  52. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +8 -8
  53. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +5 -5
  54. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +639 -752
  55. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +190 -69
  56. data/src/core/ext/transport/chttp2/transport/internal.h +2 -1
  57. data/src/core/ext/transport/chttp2/transport/parsing.cc +72 -56
  58. data/src/core/ext/transport/chttp2/transport/varint.cc +6 -4
  59. data/src/core/ext/transport/inproc/inproc_transport.cc +42 -31
  60. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.c +56 -35
  61. data/src/core/ext/upb-generated/envoy/config/bootstrap/v3/bootstrap.upb.h +180 -76
  62. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.c +35 -27
  63. data/src/core/ext/upb-generated/envoy/config/cluster/v3/cluster.upb.h +97 -48
  64. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.c +45 -9
  65. data/src/core/ext/upb-generated/envoy/config/core/v3/base.upb.h +67 -7
  66. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.c +66 -9
  67. data/src/core/ext/upb-generated/envoy/config/core/v3/protocol.upb.h +227 -0
  68. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.c +46 -0
  69. data/src/core/ext/upb-generated/envoy/config/core/v3/resolver.upb.h +121 -0
  70. data/src/core/ext/upb-generated/envoy/config/core/v3/substitution_format_string.upb.c +1 -0
  71. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.c +35 -0
  72. data/src/core/ext/upb-generated/envoy/config/core/v3/udp_socket_config.upb.h +90 -0
  73. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.c +32 -24
  74. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener.upb.h +120 -73
  75. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.c +4 -2
  76. data/src/core/ext/upb-generated/envoy/config/listener/v3/listener_components.upb.h +15 -0
  77. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.c +48 -0
  78. data/src/core/ext/upb-generated/envoy/config/listener/v3/quic_config.upb.h +171 -0
  79. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.c +8 -6
  80. data/src/core/ext/upb-generated/envoy/config/listener/v3/udp_listener_config.upb.h +27 -19
  81. data/src/core/ext/upb-generated/envoy/config/rbac/v3/rbac.upb.c +1 -0
  82. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.c +24 -7
  83. data/src/core/ext/upb-generated/envoy/config/route/v3/route.upb.h +57 -0
  84. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.c +29 -17
  85. data/src/core/ext/upb-generated/envoy/config/route/v3/route_components.upb.h +72 -0
  86. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.c +3 -2
  87. data/src/core/ext/upb-generated/envoy/extensions/filters/http/fault/v3/fault.upb.h +4 -0
  88. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.c +6 -5
  89. data/src/core/ext/upb-generated/envoy/extensions/filters/http/router/v3/router.upb.h +15 -11
  90. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.c +85 -43
  91. data/src/core/ext/upb-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upb.h +274 -91
  92. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.c +11 -8
  93. data/src/core/ext/upb-generated/envoy/extensions/transport_sockets/tls/v3/common.upb.h +30 -13
  94. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.c +33 -5
  95. data/src/core/ext/upb-generated/envoy/service/status/v3/csds.upb.h +115 -0
  96. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.c +60 -0
  97. data/src/core/ext/upb-generated/envoy/type/http/v3/path_transformation.upb.h +181 -0
  98. data/src/core/ext/upb-generated/envoy/type/matcher/v3/regex.upb.c +1 -0
  99. data/src/core/ext/upb-generated/validate/validate.upb.c +82 -66
  100. data/src/core/ext/upb-generated/validate/validate.upb.h +220 -124
  101. data/src/core/ext/upbdefs-generated/envoy/annotations/deprecation.upbdefs.c +15 -7
  102. data/src/core/ext/upbdefs-generated/envoy/config/accesslog/v3/accesslog.upbdefs.c +53 -52
  103. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.c +318 -277
  104. data/src/core/ext/upbdefs-generated/envoy/config/bootstrap/v3/bootstrap.upbdefs.h +5 -0
  105. data/src/core/ext/upbdefs-generated/envoy/config/cluster/v3/cluster.upbdefs.c +437 -410
  106. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.c +198 -170
  107. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/base.upbdefs.h +10 -0
  108. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/config_source.upbdefs.c +9 -8
  109. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.c +219 -163
  110. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/protocol.upbdefs.h +15 -0
  111. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.c +59 -0
  112. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/resolver.upbdefs.h +40 -0
  113. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/substitution_format_string.upbdefs.c +29 -25
  114. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.c +52 -0
  115. data/src/core/ext/upbdefs-generated/envoy/config/core/v3/udp_socket_config.upbdefs.h +35 -0
  116. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.c +135 -125
  117. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener.upbdefs.h +5 -0
  118. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/listener_components.upbdefs.c +131 -123
  119. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.c +90 -0
  120. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/quic_config.upbdefs.h +35 -0
  121. data/src/core/ext/upbdefs-generated/envoy/config/listener/v3/udp_listener_config.upbdefs.c +32 -24
  122. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.c +69 -55
  123. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route.upbdefs.h +5 -0
  124. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.c +684 -664
  125. data/src/core/ext/upbdefs-generated/envoy/config/route/v3/route_components.upbdefs.h +5 -0
  126. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/fault/v3/fault.upbdefs.c +13 -10
  127. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/http/router/v3/router.upbdefs.c +13 -10
  128. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.c +441 -375
  129. data/src/core/ext/upbdefs-generated/envoy/extensions/filters/network/http_connection_manager/v3/http_connection_manager.upbdefs.h +10 -0
  130. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/common.upbdefs.c +122 -114
  131. data/src/core/ext/upbdefs-generated/envoy/extensions/transport_sockets/tls/v3/tls.upbdefs.c +1 -1
  132. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.c +112 -79
  133. data/src/core/ext/upbdefs-generated/envoy/service/status/v3/csds.upbdefs.h +5 -0
  134. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.c +64 -0
  135. data/src/core/ext/upbdefs-generated/envoy/type/http/v3/path_transformation.upbdefs.h +50 -0
  136. data/src/core/ext/upbdefs-generated/envoy/type/matcher/v3/regex.upbdefs.c +35 -32
  137. data/src/core/ext/upbdefs-generated/google/rpc/status.upbdefs.c +4 -4
  138. data/src/core/ext/upbdefs-generated/validate/validate.upbdefs.c +182 -160
  139. data/src/core/ext/xds/certificate_provider_store.h +1 -1
  140. data/src/core/ext/xds/xds_api.cc +582 -257
  141. data/src/core/ext/xds/xds_api.h +46 -8
  142. data/src/core/ext/xds/xds_bootstrap.cc +4 -1
  143. data/src/core/ext/xds/xds_client.cc +66 -43
  144. data/src/core/ext/xds/xds_client.h +0 -4
  145. data/src/core/ext/xds/xds_http_filters.cc +3 -2
  146. data/src/core/ext/xds/xds_http_filters.h +3 -0
  147. data/src/core/lib/address_utils/sockaddr_utils.cc +13 -0
  148. data/src/core/lib/address_utils/sockaddr_utils.h +10 -0
  149. data/src/core/lib/channel/call_tracer.h +85 -0
  150. data/src/core/lib/channel/channel_stack.h +1 -1
  151. data/src/core/lib/channel/channelz.h +3 -0
  152. data/src/core/lib/channel/context.h +3 -0
  153. data/src/core/lib/channel/status_util.h +4 -0
  154. data/src/core/lib/compression/stream_compression.h +1 -1
  155. data/src/core/lib/compression/stream_compression_gzip.h +1 -1
  156. data/src/core/lib/compression/stream_compression_identity.h +1 -1
  157. data/src/core/lib/debug/stats.h +1 -1
  158. data/src/core/lib/event_engine/endpoint_config.cc +46 -0
  159. data/src/core/lib/event_engine/endpoint_config_internal.h +42 -0
  160. data/src/core/lib/event_engine/event_engine.cc +50 -0
  161. data/src/core/lib/event_engine/sockaddr.cc +14 -12
  162. data/src/core/lib/event_engine/sockaddr.h +44 -0
  163. data/src/core/lib/gpr/murmur_hash.cc +4 -2
  164. data/src/core/lib/gpr/wrap_memcpy.cc +2 -1
  165. data/src/core/lib/gprpp/manual_constructor.h +1 -1
  166. data/src/core/lib/gprpp/orphanable.h +3 -3
  167. data/src/core/lib/gprpp/status_helper.h +3 -0
  168. data/src/core/lib/gprpp/sync.h +2 -30
  169. data/src/core/lib/iomgr/buffer_list.cc +1 -1
  170. data/src/core/lib/iomgr/endpoint_pair_event_engine.cc +33 -0
  171. data/src/core/lib/iomgr/error.cc +5 -4
  172. data/src/core/lib/iomgr/error.h +1 -1
  173. data/src/core/lib/iomgr/ev_apple.h +1 -1
  174. data/src/core/lib/iomgr/event_engine/closure.cc +54 -0
  175. data/src/core/lib/iomgr/event_engine/closure.h +33 -0
  176. data/src/core/lib/iomgr/event_engine/endpoint.cc +192 -0
  177. data/src/core/lib/iomgr/event_engine/endpoint.h +53 -0
  178. data/src/core/lib/iomgr/event_engine/iomgr.cc +105 -0
  179. data/src/core/lib/iomgr/event_engine/iomgr.h +24 -0
  180. data/src/core/lib/iomgr/event_engine/pollset.cc +87 -0
  181. data/{include/grpc/event_engine/channel_args.h → src/core/lib/iomgr/event_engine/pollset.h} +7 -10
  182. data/src/core/lib/iomgr/event_engine/promise.h +51 -0
  183. data/src/core/lib/iomgr/event_engine/resolved_address_internal.cc +41 -0
  184. data/src/core/lib/iomgr/event_engine/resolved_address_internal.h +35 -0
  185. data/src/core/lib/iomgr/event_engine/resolver.cc +110 -0
  186. data/src/core/lib/iomgr/event_engine/tcp.cc +263 -0
  187. data/src/core/lib/iomgr/event_engine/timer.cc +57 -0
  188. data/src/core/lib/iomgr/exec_ctx.cc +8 -0
  189. data/src/core/lib/iomgr/exec_ctx.h +3 -4
  190. data/src/core/lib/iomgr/executor/threadpool.cc +2 -3
  191. data/src/core/lib/iomgr/executor/threadpool.h +2 -2
  192. data/src/core/lib/iomgr/iomgr.cc +1 -1
  193. data/src/core/lib/iomgr/iomgr_posix.cc +2 -0
  194. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +40 -10
  195. data/src/core/lib/iomgr/pollset_custom.cc +2 -2
  196. data/src/core/lib/iomgr/pollset_custom.h +3 -1
  197. data/src/core/lib/iomgr/pollset_uv.cc +3 -1
  198. data/src/core/lib/iomgr/pollset_uv.h +5 -1
  199. data/src/core/lib/iomgr/port.h +7 -5
  200. data/src/core/lib/iomgr/python_util.h +1 -1
  201. data/src/core/lib/iomgr/resolve_address.cc +5 -1
  202. data/src/core/lib/iomgr/resolve_address.h +6 -0
  203. data/src/core/lib/iomgr/resource_quota.cc +2 -0
  204. data/src/core/lib/iomgr/sockaddr.h +1 -0
  205. data/src/core/lib/iomgr/socket_mutator.cc +15 -2
  206. data/src/core/lib/iomgr/socket_mutator.h +26 -2
  207. data/src/core/lib/iomgr/socket_utils_common_posix.cc +4 -4
  208. data/src/core/lib/iomgr/socket_utils_posix.h +2 -2
  209. data/src/core/lib/iomgr/tcp_client_posix.cc +7 -2
  210. data/src/core/lib/iomgr/tcp_client_windows.cc +2 -0
  211. data/src/core/lib/iomgr/tcp_posix.cc +42 -39
  212. data/src/core/lib/iomgr/tcp_posix.h +8 -0
  213. data/src/core/lib/iomgr/tcp_server_custom.cc +3 -4
  214. data/src/core/lib/iomgr/tcp_server_posix.cc +7 -0
  215. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +2 -1
  216. data/src/core/lib/iomgr/timer.h +6 -1
  217. data/src/core/lib/iomgr/timer_manager.cc +1 -1
  218. data/src/core/lib/json/json_reader.cc +1 -2
  219. data/src/core/lib/matchers/matchers.cc +8 -20
  220. data/src/core/lib/matchers/matchers.h +2 -1
  221. data/src/core/lib/security/authorization/authorization_engine.h +44 -0
  222. data/src/core/lib/security/authorization/authorization_policy_provider.h +32 -0
  223. data/src/core/lib/security/authorization/authorization_policy_provider_vtable.cc +46 -0
  224. data/src/core/lib/security/authorization/evaluate_args.cc +209 -0
  225. data/src/core/lib/security/authorization/evaluate_args.h +91 -0
  226. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +3 -1
  227. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +49 -0
  228. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.h +7 -0
  229. data/src/core/lib/security/credentials/tls/tls_utils.cc +32 -0
  230. data/src/core/lib/security/credentials/tls/tls_utils.h +13 -0
  231. data/src/core/lib/security/security_connector/local/local_security_connector.cc +9 -6
  232. data/src/core/lib/security/security_connector/ssl_utils.cc +5 -0
  233. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +6 -18
  234. data/src/core/lib/security/transport/security_handshaker.cc +12 -4
  235. data/src/core/lib/security/transport/server_auth_filter.cc +0 -7
  236. data/src/core/lib/slice/slice.cc +12 -2
  237. data/src/core/lib/slice/slice_internal.h +1 -0
  238. data/src/core/lib/surface/call.cc +26 -7
  239. data/src/core/lib/surface/call.h +11 -0
  240. data/src/core/lib/surface/completion_queue.cc +22 -22
  241. data/src/core/lib/surface/completion_queue.h +1 -1
  242. data/src/core/lib/surface/completion_queue_factory.cc +1 -2
  243. data/src/core/lib/surface/init.cc +1 -3
  244. data/src/core/lib/surface/init.h +10 -1
  245. data/src/core/lib/surface/server.cc +3 -1
  246. data/src/core/lib/surface/server.h +3 -3
  247. data/src/core/lib/surface/version.cc +2 -4
  248. data/src/core/lib/transport/error_utils.cc +2 -2
  249. data/src/core/lib/transport/metadata_batch.cc +13 -2
  250. data/src/core/lib/transport/metadata_batch.h +7 -0
  251. data/src/core/lib/transport/transport.h +2 -0
  252. data/src/core/lib/transport/transport_op_string.cc +1 -1
  253. data/src/core/plugin_registry/grpc_plugin_registry.cc +4 -0
  254. data/src/core/tsi/alts/crypt/gsec.h +2 -0
  255. data/src/ruby/ext/grpc/extconf.rb +2 -0
  256. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +6 -0
  257. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +10 -1
  258. data/src/ruby/lib/grpc/version.rb +1 -1
  259. data/third_party/boringssl-with-bazel/err_data.c +269 -263
  260. data/third_party/boringssl-with-bazel/src/crypto/asn1/a_object.c +8 -6
  261. data/third_party/boringssl-with-bazel/src/crypto/cipher_extra/cipher_extra.c +4 -0
  262. data/third_party/boringssl-with-bazel/src/crypto/curve25519/curve25519.c +1 -1
  263. data/third_party/boringssl-with-bazel/src/crypto/curve25519/internal.h +1 -1
  264. data/third_party/boringssl-with-bazel/src/crypto/evp/evp.c +9 -0
  265. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/bn/prime.c +0 -4
  266. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/digest.c +7 -0
  267. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/digest/md32_common.h +87 -121
  268. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md4/md4.c +20 -30
  269. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/md5/md5.c +19 -30
  270. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/internal.h +1 -4
  271. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rand/rand.c +0 -13
  272. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa.c +26 -24
  273. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/rsa/rsa_impl.c +10 -7
  274. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha1.c +28 -39
  275. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha256.c +48 -66
  276. data/third_party/boringssl-with-bazel/src/crypto/fipsmodule/sha/sha512.c +4 -5
  277. data/third_party/boringssl-with-bazel/src/crypto/hpke/hpke.c +362 -371
  278. data/third_party/boringssl-with-bazel/src/crypto/pkcs7/pkcs7_x509.c +4 -2
  279. data/third_party/boringssl-with-bazel/src/crypto/rand_extra/passive.c +2 -2
  280. data/third_party/boringssl-with-bazel/src/crypto/rsa_extra/rsa_asn1.c +1 -2
  281. data/third_party/boringssl-with-bazel/src/crypto/x509/internal.h +101 -11
  282. data/third_party/boringssl-with-bazel/src/crypto/x509/t_x509a.c +3 -0
  283. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_cmp.c +2 -2
  284. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_req.c +3 -0
  285. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_set.c +1 -1
  286. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_trs.c +2 -0
  287. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vfy.c +14 -15
  288. data/third_party/boringssl-with-bazel/src/crypto/x509/x509_vpm.c +53 -73
  289. data/third_party/boringssl-with-bazel/src/crypto/x509/x509cset.c +31 -0
  290. data/third_party/boringssl-with-bazel/src/crypto/x509/x509rset.c +3 -0
  291. data/third_party/boringssl-with-bazel/src/crypto/x509/x_all.c +3 -0
  292. data/third_party/boringssl-with-bazel/src/crypto/x509/x_req.c +5 -8
  293. data/third_party/boringssl-with-bazel/src/crypto/x509/x_sig.c +5 -0
  294. data/third_party/boringssl-with-bazel/src/crypto/x509/x_x509a.c +3 -0
  295. data/third_party/boringssl-with-bazel/src/crypto/x509v3/internal.h +7 -0
  296. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_purp.c +1 -1
  297. data/third_party/boringssl-with-bazel/src/crypto/x509v3/v3_utl.c +5 -8
  298. data/third_party/boringssl-with-bazel/src/include/openssl/aead.h +1 -1
  299. data/third_party/boringssl-with-bazel/src/include/openssl/arm_arch.h +66 -1
  300. data/third_party/boringssl-with-bazel/src/include/openssl/base.h +40 -9
  301. data/third_party/boringssl-with-bazel/src/include/openssl/bytestring.h +1 -0
  302. data/third_party/boringssl-with-bazel/src/include/openssl/chacha.h +1 -1
  303. data/third_party/boringssl-with-bazel/src/include/openssl/digest.h +6 -2
  304. data/third_party/boringssl-with-bazel/src/include/openssl/ecdsa.h +14 -0
  305. data/third_party/boringssl-with-bazel/src/include/openssl/evp.h +19 -11
  306. data/third_party/boringssl-with-bazel/src/include/openssl/hpke.h +325 -0
  307. data/third_party/boringssl-with-bazel/src/include/openssl/pkcs7.h +23 -7
  308. data/third_party/boringssl-with-bazel/src/include/openssl/rsa.h +99 -63
  309. data/third_party/boringssl-with-bazel/src/include/openssl/ssl.h +139 -109
  310. data/third_party/boringssl-with-bazel/src/include/openssl/tls1.h +12 -19
  311. data/third_party/boringssl-with-bazel/src/include/openssl/x509.h +48 -50
  312. data/third_party/boringssl-with-bazel/src/include/openssl/x509_vfy.h +451 -435
  313. data/third_party/boringssl-with-bazel/src/include/openssl/x509v3.h +0 -1
  314. data/third_party/boringssl-with-bazel/src/ssl/d1_both.cc +2 -2
  315. data/third_party/boringssl-with-bazel/src/ssl/d1_srtp.cc +1 -1
  316. data/third_party/boringssl-with-bazel/src/ssl/encrypted_client_hello.cc +773 -84
  317. data/third_party/boringssl-with-bazel/src/ssl/handoff.cc +80 -47
  318. data/third_party/boringssl-with-bazel/src/ssl/handshake.cc +24 -19
  319. data/third_party/boringssl-with-bazel/src/ssl/handshake_client.cc +189 -86
  320. data/third_party/boringssl-with-bazel/src/ssl/handshake_server.cc +45 -56
  321. data/third_party/boringssl-with-bazel/src/ssl/internal.h +272 -167
  322. data/third_party/boringssl-with-bazel/src/ssl/s3_both.cc +2 -2
  323. data/third_party/boringssl-with-bazel/src/ssl/s3_lib.cc +2 -2
  324. data/third_party/boringssl-with-bazel/src/ssl/s3_pkt.cc +14 -19
  325. data/third_party/boringssl-with-bazel/src/ssl/ssl_lib.cc +34 -102
  326. data/third_party/boringssl-with-bazel/src/ssl/ssl_privkey.cc +2 -0
  327. data/third_party/boringssl-with-bazel/src/ssl/ssl_session.cc +8 -31
  328. data/third_party/boringssl-with-bazel/src/ssl/ssl_stat.cc +3 -0
  329. data/third_party/boringssl-with-bazel/src/ssl/ssl_transcript.cc +4 -3
  330. data/third_party/boringssl-with-bazel/src/ssl/ssl_versions.cc +7 -3
  331. data/third_party/boringssl-with-bazel/src/ssl/t1_lib.cc +576 -648
  332. data/third_party/boringssl-with-bazel/src/ssl/tls13_both.cc +31 -3
  333. data/third_party/boringssl-with-bazel/src/ssl/tls13_client.cc +98 -39
  334. data/third_party/boringssl-with-bazel/src/ssl/tls13_enc.cc +141 -94
  335. data/third_party/boringssl-with-bazel/src/ssl/tls13_server.cc +58 -68
  336. data/third_party/xxhash/xxhash.h +77 -195
  337. metadata +81 -39
  338. data/src/core/lib/gpr/arena.h +0 -47
  339. data/third_party/boringssl-with-bazel/src/crypto/hpke/internal.h +0 -267
  340. data/third_party/boringssl-with-bazel/src/crypto/x509/vpm_int.h +0 -71
@@ -26,15 +26,38 @@
26
26
 
27
27
  #include <stdbool.h>
28
28
 
29
+ /** How is an fd to be used? */
30
+ typedef enum {
31
+ /** Used for client connection */
32
+ GRPC_FD_CLIENT_CONNECTION_USAGE,
33
+ /** Used for server listening */
34
+ GRPC_FD_SERVER_LISTENER_USAGE,
35
+ /** Used for server connection */
36
+ GRPC_FD_SERVER_CONNECTION_USAGE,
37
+ } grpc_fd_usage;
38
+
39
+ /** Information about an fd to mutate */
40
+ typedef struct {
41
+ /** File descriptor to mutate */
42
+ int fd;
43
+ /** How the fd will be used */
44
+ grpc_fd_usage usage;
45
+ } grpc_mutate_socket_info;
46
+
29
47
  /** The virtual table of grpc_socket_mutator */
30
48
  struct grpc_socket_mutator_vtable {
31
- /** Mutates the socket options of \a fd */
49
+ /** Mutates the socket options of \a fd -- deprecated, prefer mutate_fd_2 */
32
50
  bool (*mutate_fd)(int fd, grpc_socket_mutator* mutator);
33
51
  /** Compare socket mutator \a a and \a b */
34
52
  int (*compare)(grpc_socket_mutator* a, grpc_socket_mutator* b);
35
53
  /** Destroys the socket mutator instance */
36
54
  void (*destroy)(grpc_socket_mutator* mutator);
55
+ /** Mutates the socket options of the fd in \a info - if set takes preference
56
+ * to mutate_fd */
57
+ bool (*mutate_fd_2)(const grpc_mutate_socket_info* info,
58
+ grpc_socket_mutator* mutator);
37
59
  };
60
+
38
61
  /** The Socket Mutator interface allows changes on socket options */
39
62
  struct grpc_socket_mutator {
40
63
  const grpc_socket_mutator_vtable* vtable;
@@ -49,7 +72,8 @@ void grpc_socket_mutator_init(grpc_socket_mutator* mutator,
49
72
  grpc_arg grpc_socket_mutator_to_arg(grpc_socket_mutator* mutator);
50
73
 
51
74
  /** Perform the file descriptor mutation operation of \a mutator on \a fd */
52
- bool grpc_socket_mutator_mutate_fd(grpc_socket_mutator* mutator, int fd);
75
+ bool grpc_socket_mutator_mutate_fd(grpc_socket_mutator* mutator, int fd,
76
+ grpc_fd_usage usage);
53
77
 
54
78
  /** Compare if \a a and \a b are the same mutator or have same settings */
55
79
  int grpc_socket_mutator_compare(grpc_socket_mutator* a, grpc_socket_mutator* b);
@@ -388,17 +388,17 @@ grpc_error_handle grpc_set_socket_tcp_user_timeout(
388
388
  }
389
389
 
390
390
  /* set a socket using a grpc_socket_mutator */
391
- grpc_error_handle grpc_set_socket_with_mutator(int fd,
391
+ grpc_error_handle grpc_set_socket_with_mutator(int fd, grpc_fd_usage usage,
392
392
  grpc_socket_mutator* mutator) {
393
393
  GPR_ASSERT(mutator);
394
- if (!grpc_socket_mutator_mutate_fd(mutator, fd)) {
394
+ if (!grpc_socket_mutator_mutate_fd(mutator, fd, usage)) {
395
395
  return GRPC_ERROR_CREATE_FROM_STATIC_STRING("grpc_socket_mutator failed.");
396
396
  }
397
397
  return GRPC_ERROR_NONE;
398
398
  }
399
399
 
400
400
  grpc_error_handle grpc_apply_socket_mutator_in_args(
401
- int fd, const grpc_channel_args* args) {
401
+ int fd, grpc_fd_usage usage, const grpc_channel_args* args) {
402
402
  const grpc_arg* socket_mutator_arg =
403
403
  grpc_channel_args_find(args, GRPC_ARG_SOCKET_MUTATOR);
404
404
  if (socket_mutator_arg == nullptr) {
@@ -407,7 +407,7 @@ grpc_error_handle grpc_apply_socket_mutator_in_args(
407
407
  GPR_DEBUG_ASSERT(socket_mutator_arg->type == GRPC_ARG_POINTER);
408
408
  grpc_socket_mutator* mutator =
409
409
  static_cast<grpc_socket_mutator*>(socket_mutator_arg->value.pointer.p);
410
- return grpc_set_socket_with_mutator(fd, mutator);
410
+ return grpc_set_socket_with_mutator(fd, usage, mutator);
411
411
  }
412
412
 
413
413
  static gpr_once g_probe_ipv6_once = GPR_ONCE_INIT;
@@ -101,12 +101,12 @@ grpc_error_handle grpc_set_socket_sndbuf(int fd, int buffer_size_bytes);
101
101
  grpc_error_handle grpc_set_socket_rcvbuf(int fd, int buffer_size_bytes);
102
102
 
103
103
  /* Tries to set the socket using a grpc_socket_mutator */
104
- grpc_error_handle grpc_set_socket_with_mutator(int fd,
104
+ grpc_error_handle grpc_set_socket_with_mutator(int fd, grpc_fd_usage usage,
105
105
  grpc_socket_mutator* mutator);
106
106
 
107
107
  /* Extracts the first socket mutator from args if any and applies on the fd. */
108
108
  grpc_error_handle grpc_apply_socket_mutator_in_args(
109
- int fd, const grpc_channel_args* args);
109
+ int fd, grpc_fd_usage usage, const grpc_channel_args* args);
110
110
 
111
111
  /* An enum to keep track of IPv4/IPv6 socket modes.
112
112
 
@@ -39,6 +39,7 @@
39
39
  #include "src/core/lib/channel/channel_args.h"
40
40
  #include "src/core/lib/gpr/string.h"
41
41
  #include "src/core/lib/iomgr/ev_posix.h"
42
+ #include "src/core/lib/iomgr/executor.h"
42
43
  #include "src/core/lib/iomgr/iomgr_internal.h"
43
44
  #include "src/core/lib/iomgr/sockaddr.h"
44
45
  #include "src/core/lib/iomgr/socket_mutator.h"
@@ -87,7 +88,8 @@ static grpc_error_handle prepare_socket(const grpc_resolved_address* addr,
87
88
  err = grpc_set_socket_no_sigpipe_if_possible(fd);
88
89
  if (err != GRPC_ERROR_NONE) goto error;
89
90
 
90
- err = grpc_apply_socket_mutator_in_args(fd, channel_args);
91
+ err = grpc_apply_socket_mutator_in_args(fd, GRPC_FD_CLIENT_CONNECTION_USAGE,
92
+ channel_args);
91
93
  if (err != GRPC_ERROR_NONE) goto error;
92
94
 
93
95
  goto done;
@@ -238,7 +240,10 @@ finish:
238
240
  grpc_channel_args_destroy(ac->channel_args);
239
241
  delete ac;
240
242
  }
241
- grpc_core::ExecCtx::Run(DEBUG_LOCATION, closure, error);
243
+ // Push async connect closure to the executor since this may actually be
244
+ // called during the shutdown process, in which case a deadlock could form
245
+ // between the core shutdown mu and the connector mu (b/188239051)
246
+ grpc_core::Executor::Run(closure, error);
242
247
  }
243
248
 
244
249
  grpc_error_handle grpc_tcp_client_prepare_fd(
@@ -206,8 +206,10 @@ static void tcp_connect(grpc_closure* on_done, grpc_endpoint** endpoint,
206
206
  GRPC_CLOSURE_INIT(&ac->on_connect, on_connect, ac, grpc_schedule_on_exec_ctx);
207
207
 
208
208
  GRPC_CLOSURE_INIT(&ac->on_alarm, on_alarm, ac, grpc_schedule_on_exec_ctx);
209
+ gpr_mu_lock(&ac->mu);
209
210
  grpc_timer_init(&ac->alarm, deadline, &ac->on_alarm);
210
211
  grpc_socket_notify_on_write(socket, &ac->on_connect);
212
+ gpr_mu_unlock(&ac->mu);
211
213
  return;
212
214
 
213
215
  failure:
@@ -432,8 +432,10 @@ static void ZerocopyDisableAndWaitForRemaining(grpc_tcp* tcp);
432
432
 
433
433
  #define BACKUP_POLLER_POLLSET(b) ((grpc_pollset*)((b) + 1))
434
434
 
435
- static gpr_atm g_uncovered_notifications_pending;
436
- static gpr_atm g_backup_poller; /* backup_poller* */
435
+ static grpc_core::Mutex* g_backup_poller_mu = nullptr;
436
+ static int g_uncovered_notifications_pending
437
+ ABSL_GUARDED_BY(g_backup_poller_mu);
438
+ static backup_poller* g_backup_poller ABSL_GUARDED_BY(g_backup_poller_mu);
437
439
 
438
440
  static void tcp_handle_read(void* arg /* grpc_tcp */, grpc_error_handle error);
439
441
  static void tcp_handle_write(void* arg /* grpc_tcp */, grpc_error_handle error);
@@ -461,17 +463,13 @@ static void run_poller(void* bp, grpc_error_handle /*error_ignored*/) {
461
463
  "backup_poller:pollset_work",
462
464
  grpc_pollset_work(BACKUP_POLLER_POLLSET(p), nullptr, deadline));
463
465
  gpr_mu_unlock(p->pollset_mu);
464
- /* last "uncovered" notification is the ref that keeps us polling, if we get
465
- * there try a cas to release it */
466
- if (gpr_atm_no_barrier_load(&g_uncovered_notifications_pending) == 1 &&
467
- gpr_atm_full_cas(&g_uncovered_notifications_pending, 1, 0)) {
468
- gpr_mu_lock(p->pollset_mu);
469
- bool cas_ok =
470
- gpr_atm_full_cas(&g_backup_poller, reinterpret_cast<gpr_atm>(p), 0);
471
- if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
472
- gpr_log(GPR_INFO, "BACKUP_POLLER:%p done cas_ok=%d", p, cas_ok);
473
- }
474
- gpr_mu_unlock(p->pollset_mu);
466
+ g_backup_poller_mu->Lock();
467
+ /* last "uncovered" notification is the ref that keeps us polling */
468
+ if (g_uncovered_notifications_pending == 1) {
469
+ GPR_ASSERT(g_backup_poller == p);
470
+ g_backup_poller = nullptr;
471
+ g_uncovered_notifications_pending = 0;
472
+ g_backup_poller_mu->Unlock();
475
473
  if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
476
474
  gpr_log(GPR_INFO, "BACKUP_POLLER:%p shutdown", p);
477
475
  }
@@ -479,6 +477,7 @@ static void run_poller(void* bp, grpc_error_handle /*error_ignored*/) {
479
477
  GRPC_CLOSURE_INIT(&p->run_poller, done_poller, p,
480
478
  grpc_schedule_on_exec_ctx));
481
479
  } else {
480
+ g_backup_poller_mu->Unlock();
482
481
  if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
483
482
  gpr_log(GPR_INFO, "BACKUP_POLLER:%p reschedule", p);
484
483
  }
@@ -489,15 +488,17 @@ static void run_poller(void* bp, grpc_error_handle /*error_ignored*/) {
489
488
  }
490
489
 
491
490
  static void drop_uncovered(grpc_tcp* /*tcp*/) {
492
- backup_poller* p =
493
- reinterpret_cast<backup_poller*>(gpr_atm_acq_load(&g_backup_poller));
494
- gpr_atm old_count =
495
- gpr_atm_full_fetch_add(&g_uncovered_notifications_pending, -1);
491
+ int old_count;
492
+ backup_poller* p;
493
+ g_backup_poller_mu->Lock();
494
+ p = g_backup_poller;
495
+ old_count = g_uncovered_notifications_pending--;
496
+ g_backup_poller_mu->Unlock();
497
+ GPR_ASSERT(old_count > 1);
496
498
  if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
497
- gpr_log(GPR_INFO, "BACKUP_POLLER:%p uncover cnt %d->%d", p,
498
- static_cast<int>(old_count), static_cast<int>(old_count) - 1);
499
+ gpr_log(GPR_INFO, "BACKUP_POLLER:%p uncover cnt %d->%d", p, old_count,
500
+ old_count - 1);
499
501
  }
500
- GPR_ASSERT(old_count != 1);
501
502
  }
502
503
 
503
504
  // gRPC API considers a Write operation to be done the moment it clears ‘flow
@@ -509,38 +510,33 @@ static void drop_uncovered(grpc_tcp* /*tcp*/) {
509
510
  // polling thread and progress is made) and hence add it to a backup poller here
510
511
  static void cover_self(grpc_tcp* tcp) {
511
512
  backup_poller* p;
512
- gpr_atm old_count =
513
- gpr_atm_no_barrier_fetch_add(&g_uncovered_notifications_pending, 2);
514
- if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
515
- gpr_log(GPR_INFO, "BACKUP_POLLER: cover cnt %d->%d",
516
- static_cast<int>(old_count), 2 + static_cast<int>(old_count));
517
- }
518
- if (old_count == 0) {
519
- GRPC_STATS_INC_TCP_BACKUP_POLLERS_CREATED();
513
+ g_backup_poller_mu->Lock();
514
+ int old_count = 0;
515
+ if (g_uncovered_notifications_pending == 0) {
516
+ g_uncovered_notifications_pending = 2;
520
517
  p = static_cast<backup_poller*>(
521
518
  gpr_zalloc(sizeof(*p) + grpc_pollset_size()));
519
+ g_backup_poller = p;
520
+ grpc_pollset_init(BACKUP_POLLER_POLLSET(p), &p->pollset_mu);
521
+ g_backup_poller_mu->Unlock();
522
+ GRPC_STATS_INC_TCP_BACKUP_POLLERS_CREATED();
522
523
  if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
523
524
  gpr_log(GPR_INFO, "BACKUP_POLLER:%p create", p);
524
525
  }
525
- grpc_pollset_init(BACKUP_POLLER_POLLSET(p), &p->pollset_mu);
526
- gpr_atm_rel_store(&g_backup_poller, (gpr_atm)p);
527
526
  grpc_core::Executor::Run(
528
527
  GRPC_CLOSURE_INIT(&p->run_poller, run_poller, p, nullptr),
529
528
  GRPC_ERROR_NONE, grpc_core::ExecutorType::DEFAULT,
530
529
  grpc_core::ExecutorJobType::LONG);
531
530
  } else {
532
- while ((p = reinterpret_cast<backup_poller*>(
533
- gpr_atm_acq_load(&g_backup_poller))) == nullptr) {
534
- // spin waiting for backup poller
535
- }
531
+ old_count = g_uncovered_notifications_pending++;
532
+ p = g_backup_poller;
533
+ g_backup_poller_mu->Unlock();
536
534
  }
537
535
  if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
538
- gpr_log(GPR_INFO, "BACKUP_POLLER:%p add %p", p, tcp);
536
+ gpr_log(GPR_INFO, "BACKUP_POLLER:%p add %p cnt %d->%d", p, tcp,
537
+ old_count - 1, old_count);
539
538
  }
540
539
  grpc_pollset_add_fd(BACKUP_POLLER_POLLSET(p), tcp->em_fd);
541
- if (old_count != 0) {
542
- drop_uncovered(tcp);
543
- }
544
540
  }
545
541
 
546
542
  static void notify_on_read(grpc_tcp* tcp) {
@@ -1164,9 +1160,9 @@ static bool process_errors(grpc_tcp* tcp) {
1164
1160
  struct cmsghdr align;
1165
1161
  } aligned_buf;
1166
1162
  msg.msg_control = aligned_buf.rbuf;
1167
- msg.msg_controllen = sizeof(aligned_buf.rbuf);
1168
1163
  int r, saved_errno;
1169
1164
  while (true) {
1165
+ msg.msg_controllen = sizeof(aligned_buf.rbuf);
1170
1166
  do {
1171
1167
  r = recvmsg(tcp->fd, &msg, MSG_ERRQUEUE);
1172
1168
  saved_errno = errno;
@@ -1873,4 +1869,11 @@ void grpc_tcp_destroy_and_release_fd(grpc_endpoint* ep, int* fd,
1873
1869
  TCP_UNREF(tcp, "destroy");
1874
1870
  }
1875
1871
 
1872
+ void grpc_tcp_posix_init() { g_backup_poller_mu = new grpc_core::Mutex; }
1873
+
1874
+ void grpc_tcp_posix_shutdown() {
1875
+ delete g_backup_poller_mu;
1876
+ g_backup_poller_mu = nullptr;
1877
+ }
1878
+
1876
1879
  #endif /* GRPC_POSIX_SOCKET_TCP */
@@ -57,4 +57,12 @@ int grpc_tcp_fd(grpc_endpoint* ep);
57
57
  void grpc_tcp_destroy_and_release_fd(grpc_endpoint* ep, int* fd,
58
58
  grpc_closure* done);
59
59
 
60
+ #ifdef GRPC_POSIX_SOCKET_TCP
61
+
62
+ void grpc_tcp_posix_init();
63
+
64
+ void grpc_tcp_posix_shutdown();
65
+
66
+ #endif /* GRPC_POSIX_SOCKET_TCP */
67
+
60
68
  #endif /* GRPC_CORE_LIB_IOMGR_TCP_POSIX_H */
@@ -362,10 +362,9 @@ static grpc_error_handle tcp_server_add_port(grpc_tcp_server* s,
362
362
  for (sp = s->head; sp; sp = sp->next) {
363
363
  socket = sp->socket;
364
364
  sockname_temp.len = GRPC_MAX_SOCKADDR_SIZE;
365
- if (nullptr == grpc_custom_socket_vtable->getsockname(
366
- socket,
367
- reinterpret_cast<grpc_sockaddr*>(&sockname_temp.addr),
368
- reinterpret_cast<int*>(&sockname_temp.len))) {
365
+ if (grpc_custom_socket_vtable->getsockname(
366
+ socket, reinterpret_cast<grpc_sockaddr*>(&sockname_temp.addr),
367
+ reinterpret_cast<int*>(&sockname_temp.len)) == GRPC_ERROR_NONE) {
369
368
  *port = grpc_sockaddr_get_port(&sockname_temp);
370
369
  if (*port > 0) {
371
370
  allocated_addr = static_cast<grpc_resolved_address*>(
@@ -238,6 +238,12 @@ static void on_read(void* arg, grpc_error_handle err) {
238
238
 
239
239
  grpc_set_socket_no_sigpipe_if_possible(fd);
240
240
 
241
+ err = grpc_apply_socket_mutator_in_args(fd, GRPC_FD_SERVER_CONNECTION_USAGE,
242
+ sp->server->channel_args);
243
+ if (err != GRPC_ERROR_NONE) {
244
+ goto error;
245
+ }
246
+
241
247
  std::string addr_str = grpc_sockaddr_to_uri(&addr);
242
248
  if (GRPC_TRACE_FLAG_ENABLED(grpc_tcp_trace)) {
243
249
  gpr_log(GPR_INFO, "SERVER_CONNECT: incoming connection: %s",
@@ -399,6 +405,7 @@ static grpc_error_handle clone_port(grpc_tcp_listener* listener,
399
405
  static grpc_error_handle tcp_server_add_port(grpc_tcp_server* s,
400
406
  const grpc_resolved_address* addr,
401
407
  int* out_port) {
408
+ GPR_ASSERT(addr->len <= GRPC_MAX_SOCKADDR_SIZE);
402
409
  grpc_tcp_listener* sp;
403
410
  grpc_resolved_address sockname_temp;
404
411
  grpc_resolved_address addr6_v4mapped;
@@ -182,7 +182,8 @@ grpc_error_handle grpc_tcp_server_prepare_socket(
182
182
  err = grpc_set_socket_no_sigpipe_if_possible(fd);
183
183
  if (err != GRPC_ERROR_NONE) goto error;
184
184
 
185
- err = grpc_apply_socket_mutator_in_args(fd, s->channel_args);
185
+ err = grpc_apply_socket_mutator_in_args(fd, GRPC_FD_SERVER_LISTENER_USAGE,
186
+ s->channel_args);
186
187
  if (err != GRPC_ERROR_NONE) goto error;
187
188
 
188
189
  if (bind(fd, reinterpret_cast<grpc_sockaddr*>(const_cast<char*>(addr->addr)),
@@ -23,7 +23,9 @@
23
23
 
24
24
  #include "src/core/lib/iomgr/port.h"
25
25
 
26
+ #include <grpc/event_engine/event_engine.h>
26
27
  #include <grpc/support/time.h>
28
+
27
29
  #include "src/core/lib/iomgr/exec_ctx.h"
28
30
  #include "src/core/lib/iomgr/iomgr.h"
29
31
 
@@ -40,7 +42,10 @@ typedef struct grpc_timer {
40
42
  #endif
41
43
 
42
44
  // Optional field used by custom timers
43
- void* custom_timer;
45
+ union {
46
+ void* custom_timer;
47
+ grpc_event_engine::experimental::EventEngine::TaskHandle ee_task_handle;
48
+ };
44
49
  } grpc_timer;
45
50
 
46
51
  typedef enum {
@@ -250,7 +250,7 @@ static void timer_main_loop() {
250
250
  gpr_log(GPR_INFO, "timers not checked: expect another thread to");
251
251
  }
252
252
  next = GRPC_MILLIS_INF_FUTURE;
253
- // fallthrough
253
+ ABSL_FALLTHROUGH_INTENDED;
254
254
  case GRPC_TIMERS_CHECKED_AND_EMPTY:
255
255
  if (!wait_until(next)) {
256
256
  return;
@@ -347,8 +347,7 @@ JsonReader::Status JsonReader::Run() {
347
347
  }
348
348
  if (!SetNumber()) return Status::GRPC_JSON_PARSE_ERROR;
349
349
  state_ = State::GRPC_JSON_STATE_VALUE_END;
350
- /* The missing break here is intentional. */
351
- /* fallthrough */
350
+ ABSL_FALLTHROUGH_INTENDED;
352
351
 
353
352
  case State::GRPC_JSON_STATE_VALUE_END:
354
353
  case State::GRPC_JSON_STATE_OBJECT_KEY_BEGIN:
@@ -32,14 +32,12 @@ absl::StatusOr<StringMatcher> StringMatcher::Create(Type type,
32
32
  absl::string_view matcher,
33
33
  bool case_sensitive) {
34
34
  if (type == Type::kSafeRegex) {
35
- RE2::Options options;
36
- options.set_case_sensitive(case_sensitive);
37
- auto regex_matcher = absl::make_unique<RE2>(std::string(matcher), options);
35
+ auto regex_matcher = absl::make_unique<RE2>(std::string(matcher));
38
36
  if (!regex_matcher->ok()) {
39
37
  return absl::InvalidArgumentError(
40
38
  "Invalid regex string specified in matcher.");
41
39
  }
42
- return StringMatcher(std::move(regex_matcher), case_sensitive);
40
+ return StringMatcher(std::move(regex_matcher));
43
41
  } else {
44
42
  return StringMatcher(type, matcher, case_sensitive);
45
43
  }
@@ -49,19 +47,13 @@ StringMatcher::StringMatcher(Type type, absl::string_view matcher,
49
47
  bool case_sensitive)
50
48
  : type_(type), string_matcher_(matcher), case_sensitive_(case_sensitive) {}
51
49
 
52
- StringMatcher::StringMatcher(std::unique_ptr<RE2> regex_matcher,
53
- bool case_sensitive)
54
- : type_(Type::kSafeRegex),
55
- regex_matcher_(std::move(regex_matcher)),
56
- case_sensitive_(case_sensitive) {}
50
+ StringMatcher::StringMatcher(std::unique_ptr<RE2> regex_matcher)
51
+ : type_(Type::kSafeRegex), regex_matcher_(std::move(regex_matcher)) {}
57
52
 
58
53
  StringMatcher::StringMatcher(const StringMatcher& other)
59
54
  : type_(other.type_), case_sensitive_(other.case_sensitive_) {
60
55
  if (type_ == Type::kSafeRegex) {
61
- RE2::Options options;
62
- options.set_case_sensitive(other.case_sensitive_);
63
- regex_matcher_ =
64
- absl::make_unique<RE2>(other.regex_matcher_->pattern(), options);
56
+ regex_matcher_ = absl::make_unique<RE2>(other.regex_matcher_->pattern());
65
57
  } else {
66
58
  string_matcher_ = other.string_matcher_;
67
59
  }
@@ -70,10 +62,7 @@ StringMatcher::StringMatcher(const StringMatcher& other)
70
62
  StringMatcher& StringMatcher::operator=(const StringMatcher& other) {
71
63
  type_ = other.type_;
72
64
  if (type_ == Type::kSafeRegex) {
73
- RE2::Options options;
74
- options.set_case_sensitive(other.case_sensitive_);
75
- regex_matcher_ =
76
- absl::make_unique<RE2>(other.regex_matcher_->pattern(), options);
65
+ regex_matcher_ = absl::make_unique<RE2>(other.regex_matcher_->pattern());
77
66
  } else {
78
67
  string_matcher_ = other.string_matcher_;
79
68
  }
@@ -151,9 +140,8 @@ std::string StringMatcher::ToString() const {
151
140
  return absl::StrFormat("StringMatcher{contains=%s%s}", string_matcher_,
152
141
  case_sensitive_ ? "" : ", case_sensitive=false");
153
142
  case Type::kSafeRegex:
154
- return absl::StrFormat("StringMatcher{safe_regex=%s%s}",
155
- regex_matcher_->pattern(),
156
- case_sensitive_ ? "" : ", case_sensitive=false");
143
+ return absl::StrFormat("StringMatcher{safe_regex=%s}",
144
+ regex_matcher_->pattern());
157
145
  default:
158
146
  return "";
159
147
  }