grpc 1.50.0 → 1.51.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 (459) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +131 -42
  3. data/include/grpc/event_engine/event_engine.h +10 -3
  4. data/include/grpc/event_engine/slice_buffer.h +17 -0
  5. data/include/grpc/grpc.h +0 -10
  6. data/include/grpc/impl/codegen/grpc_types.h +1 -5
  7. data/include/grpc/impl/codegen/port_platform.h +0 -3
  8. data/src/core/ext/filters/channel_idle/channel_idle_filter.cc +19 -13
  9. data/src/core/ext/filters/channel_idle/channel_idle_filter.h +1 -0
  10. data/src/core/ext/filters/client_channel/backup_poller.cc +3 -3
  11. data/src/core/ext/filters/client_channel/channel_connectivity.cc +7 -5
  12. data/src/core/ext/filters/client_channel/client_channel.cc +120 -140
  13. data/src/core/ext/filters/client_channel/client_channel.h +3 -4
  14. data/src/core/ext/filters/client_channel/client_channel_channelz.cc +0 -2
  15. data/src/core/ext/filters/client_channel/client_channel_plugin.cc +1 -1
  16. data/src/core/ext/filters/client_channel/client_channel_service_config.cc +153 -0
  17. data/src/core/ext/filters/client_channel/{resolver_result_parsing.h → client_channel_service_config.h} +26 -23
  18. data/src/core/ext/filters/client_channel/connector.h +1 -1
  19. data/src/core/ext/filters/client_channel/dynamic_filters.cc +20 -47
  20. data/src/core/ext/filters/client_channel/dynamic_filters.h +7 -8
  21. data/src/core/ext/filters/client_channel/health/health_check_client.cc +3 -4
  22. data/src/core/ext/filters/client_channel/http_proxy.cc +0 -1
  23. data/src/core/ext/filters/client_channel/lb_policy/address_filtering.cc +3 -4
  24. data/src/core/ext/filters/client_channel/lb_policy/child_policy_handler.cc +5 -0
  25. data/src/core/ext/filters/client_channel/lb_policy/grpclb/client_load_reporting_filter.cc +8 -7
  26. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb.cc +35 -44
  27. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_balancer_addresses.cc +0 -1
  28. data/src/core/ext/filters/client_channel/lb_policy/grpclb/grpclb_client_stats.cc +1 -3
  29. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.cc +3 -4
  30. data/src/core/ext/filters/client_channel/lb_policy/oob_backend_metric.h +1 -1
  31. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.cc +41 -29
  32. data/src/core/ext/filters/client_channel/lb_policy/outlier_detection/outlier_detection.h +2 -2
  33. data/src/core/ext/filters/client_channel/lb_policy/pick_first/pick_first.cc +9 -11
  34. data/src/core/ext/filters/client_channel/lb_policy/priority/priority.cc +15 -12
  35. data/src/core/ext/filters/client_channel/lb_policy/ring_hash/ring_hash.cc +8 -10
  36. data/src/core/ext/filters/client_channel/lb_policy/rls/rls.cc +26 -27
  37. data/src/core/ext/filters/client_channel/lb_policy/round_robin/round_robin.cc +7 -9
  38. data/src/core/ext/filters/client_channel/lb_policy/weighted_target/weighted_target.cc +44 -26
  39. data/src/core/ext/filters/client_channel/lb_policy/xds/cds.cc +17 -27
  40. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_attributes.cc +42 -0
  41. data/src/core/ext/filters/client_channel/lb_policy/xds/{xds.h → xds_attributes.h} +15 -17
  42. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_impl.cc +13 -7
  43. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_manager.cc +48 -47
  44. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_cluster_resolver.cc +40 -126
  45. data/src/core/ext/filters/client_channel/lb_policy/xds/xds_wrr_locality.cc +364 -0
  46. data/src/core/ext/filters/client_channel/resolver/binder/binder_resolver.cc +9 -9
  47. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/dns_resolver_ares.cc +23 -32
  48. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_posix.cc +1 -2
  49. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +22 -23
  50. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.cc +50 -52
  51. data/src/core/ext/filters/client_channel/resolver/dns/c_ares/grpc_ares_wrapper.h +1 -1
  52. data/src/core/ext/filters/client_channel/resolver/dns/native/dns_resolver.cc +2 -4
  53. data/src/core/ext/filters/client_channel/resolver/fake/fake_resolver.cc +1 -3
  54. data/src/core/ext/filters/client_channel/resolver/google_c2p/google_c2p_resolver.cc +34 -26
  55. data/src/core/ext/filters/client_channel/resolver/polling_resolver.cc +3 -4
  56. data/src/core/ext/filters/client_channel/resolver/sockaddr/sockaddr_resolver.cc +4 -7
  57. data/src/core/ext/filters/client_channel/resolver/xds/xds_resolver.cc +63 -46
  58. data/src/core/ext/filters/client_channel/retry_filter.cc +80 -102
  59. data/src/core/ext/filters/client_channel/retry_service_config.cc +192 -234
  60. data/src/core/ext/filters/client_channel/retry_service_config.h +20 -23
  61. data/src/core/ext/filters/client_channel/retry_throttle.cc +8 -8
  62. data/src/core/ext/filters/client_channel/retry_throttle.h +8 -7
  63. data/src/core/ext/filters/client_channel/service_config_channel_arg_filter.cc +2 -2
  64. data/src/core/ext/filters/client_channel/subchannel.cc +21 -25
  65. data/src/core/ext/filters/client_channel/subchannel.h +2 -2
  66. data/src/core/ext/filters/client_channel/subchannel_stream_client.cc +11 -12
  67. data/src/core/ext/filters/deadline/deadline_filter.cc +13 -14
  68. data/src/core/ext/filters/fault_injection/fault_injection_filter.cc +1 -1
  69. data/src/core/ext/filters/fault_injection/fault_injection_filter.h +0 -4
  70. data/src/core/ext/filters/fault_injection/fault_injection_service_config_parser.cc +118 -0
  71. data/src/core/ext/filters/fault_injection/{service_config_parser.h → fault_injection_service_config_parser.h} +20 -12
  72. data/src/core/ext/filters/http/client/http_client_filter.cc +16 -16
  73. data/src/core/ext/filters/http/client_authority_filter.cc +1 -1
  74. data/src/core/ext/filters/http/message_compress/message_compress_filter.cc +13 -13
  75. data/src/core/ext/filters/http/message_compress/message_decompress_filter.cc +34 -34
  76. data/src/core/ext/filters/http/server/http_server_filter.cc +26 -25
  77. data/src/core/ext/filters/message_size/message_size_filter.cc +86 -117
  78. data/src/core/ext/filters/message_size/message_size_filter.h +22 -15
  79. data/src/core/ext/filters/rbac/rbac_filter.cc +12 -12
  80. data/src/core/ext/filters/rbac/rbac_service_config_parser.cc +728 -530
  81. data/src/core/ext/filters/rbac/rbac_service_config_parser.h +4 -3
  82. data/src/core/ext/filters/server_config_selector/server_config_selector.h +1 -1
  83. data/src/core/ext/filters/server_config_selector/server_config_selector_filter.cc +6 -7
  84. data/src/core/ext/transport/chttp2/client/chttp2_connector.cc +17 -21
  85. data/src/core/ext/transport/chttp2/server/chttp2_server.cc +57 -72
  86. data/src/core/ext/transport/chttp2/transport/bin_decoder.cc +5 -5
  87. data/src/core/ext/transport/chttp2/transport/bin_encoder.h +1 -1
  88. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +212 -253
  89. data/src/core/ext/transport/chttp2/transport/flow_control.cc +42 -11
  90. data/src/core/ext/transport/chttp2/transport/flow_control.h +4 -3
  91. data/src/core/ext/transport/chttp2/transport/frame_data.cc +16 -15
  92. data/src/core/ext/transport/chttp2/transport/frame_data.h +1 -1
  93. data/src/core/ext/transport/chttp2/transport/frame_goaway.cc +13 -13
  94. data/src/core/ext/transport/chttp2/transport/frame_ping.cc +4 -3
  95. data/src/core/ext/transport/chttp2/transport/frame_rst_stream.cc +10 -7
  96. data/src/core/ext/transport/chttp2/transport/frame_settings.cc +15 -17
  97. data/src/core/ext/transport/chttp2/transport/frame_window_update.cc +5 -4
  98. data/src/core/ext/transport/chttp2/transport/hpack_encoder.cc +5 -6
  99. data/src/core/ext/transport/chttp2/transport/hpack_encoder.h +1 -1
  100. data/src/core/ext/transport/chttp2/transport/hpack_encoder_table.cc +2 -1
  101. data/src/core/ext/transport/chttp2/transport/hpack_parser.cc +31 -39
  102. data/src/core/ext/transport/chttp2/transport/hpack_parser_table.cc +7 -6
  103. data/src/core/ext/transport/chttp2/transport/internal.h +24 -8
  104. data/src/core/ext/transport/chttp2/transport/parsing.cc +51 -52
  105. data/src/core/ext/transport/chttp2/transport/varint.cc +2 -3
  106. data/src/core/ext/transport/chttp2/transport/varint.h +11 -8
  107. data/src/core/ext/transport/chttp2/transport/writing.cc +16 -16
  108. data/src/core/ext/transport/inproc/inproc_transport.cc +97 -115
  109. data/src/core/ext/xds/certificate_provider_store.cc +4 -4
  110. data/src/core/ext/xds/file_watcher_certificate_provider_factory.cc +4 -7
  111. data/src/core/ext/xds/xds_api.cc +15 -68
  112. data/src/core/ext/xds/xds_api.h +3 -7
  113. data/src/core/ext/xds/xds_bootstrap.h +0 -1
  114. data/src/core/ext/xds/xds_bootstrap_grpc.cc +3 -12
  115. data/src/core/ext/xds/xds_bootstrap_grpc.h +16 -1
  116. data/src/core/ext/xds/xds_certificate_provider.cc +22 -25
  117. data/src/core/ext/xds/xds_channel_stack_modifier.cc +0 -1
  118. data/src/core/ext/xds/xds_client.cc +122 -90
  119. data/src/core/ext/xds/xds_client.h +7 -2
  120. data/src/core/ext/xds/xds_client_grpc.cc +5 -24
  121. data/src/core/ext/xds/xds_cluster.cc +291 -183
  122. data/src/core/ext/xds/xds_cluster.h +11 -15
  123. data/src/core/ext/xds/xds_cluster_specifier_plugin.cc +32 -29
  124. data/src/core/ext/xds/xds_cluster_specifier_plugin.h +35 -16
  125. data/src/core/ext/xds/xds_common_types.cc +208 -141
  126. data/src/core/ext/xds/xds_common_types.h +19 -13
  127. data/src/core/ext/xds/xds_endpoint.cc +214 -129
  128. data/src/core/ext/xds/xds_endpoint.h +4 -7
  129. data/src/core/ext/xds/xds_http_fault_filter.cc +56 -43
  130. data/src/core/ext/xds/xds_http_fault_filter.h +13 -21
  131. data/src/core/ext/xds/xds_http_filters.cc +60 -73
  132. data/src/core/ext/xds/xds_http_filters.h +67 -19
  133. data/src/core/ext/xds/xds_http_rbac_filter.cc +152 -207
  134. data/src/core/ext/xds/xds_http_rbac_filter.h +12 -15
  135. data/src/core/ext/xds/xds_lb_policy_registry.cc +122 -169
  136. data/src/core/ext/xds/xds_lb_policy_registry.h +10 -11
  137. data/src/core/ext/xds/xds_listener.cc +459 -417
  138. data/src/core/ext/xds/xds_listener.h +43 -47
  139. data/src/core/ext/xds/xds_resource_type.h +3 -11
  140. data/src/core/ext/xds/xds_resource_type_impl.h +8 -13
  141. data/src/core/ext/xds/xds_route_config.cc +94 -80
  142. data/src/core/ext/xds/xds_route_config.h +10 -10
  143. data/src/core/ext/xds/xds_routing.cc +2 -1
  144. data/src/core/ext/xds/xds_routing.h +2 -0
  145. data/src/core/ext/xds/xds_server_config_fetcher.cc +109 -94
  146. data/src/core/ext/xds/xds_transport_grpc.cc +4 -5
  147. data/src/core/lib/address_utils/parse_address.cc +11 -10
  148. data/src/core/lib/channel/channel_args.h +16 -1
  149. data/src/core/lib/channel/channel_stack.cc +23 -20
  150. data/src/core/lib/channel/channel_stack.h +17 -4
  151. data/src/core/lib/channel/channel_stack_builder.cc +4 -7
  152. data/src/core/lib/channel/channel_stack_builder.h +14 -6
  153. data/src/core/lib/channel/channel_stack_builder_impl.cc +25 -7
  154. data/src/core/lib/channel/channel_stack_builder_impl.h +2 -0
  155. data/src/core/lib/channel/channel_trace.cc +4 -5
  156. data/src/core/lib/channel/channelz.cc +1 -1
  157. data/src/core/lib/channel/connected_channel.cc +695 -35
  158. data/src/core/lib/channel/connected_channel.h +0 -4
  159. data/src/core/lib/channel/promise_based_filter.cc +1004 -140
  160. data/src/core/lib/channel/promise_based_filter.h +364 -87
  161. data/src/core/lib/compression/message_compress.cc +5 -5
  162. data/src/core/lib/debug/event_log.cc +88 -0
  163. data/src/core/lib/debug/event_log.h +81 -0
  164. data/src/core/lib/debug/histogram_view.cc +69 -0
  165. data/src/core/lib/{slice/slice_refcount.cc → debug/histogram_view.h} +15 -13
  166. data/src/core/lib/debug/stats.cc +22 -119
  167. data/src/core/lib/debug/stats.h +29 -35
  168. data/src/core/lib/debug/stats_data.cc +224 -73
  169. data/src/core/lib/debug/stats_data.h +263 -122
  170. data/src/core/lib/event_engine/common_closures.h +71 -0
  171. data/src/core/lib/event_engine/default_event_engine.cc +38 -15
  172. data/src/core/lib/event_engine/default_event_engine.h +15 -3
  173. data/src/core/lib/event_engine/default_event_engine_factory.cc +2 -4
  174. data/src/core/lib/event_engine/memory_allocator.cc +1 -1
  175. data/src/core/lib/event_engine/poller.h +10 -4
  176. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +618 -0
  177. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +129 -0
  178. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +901 -0
  179. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +97 -0
  180. data/src/core/lib/event_engine/posix_engine/event_poller.h +111 -0
  181. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +74 -0
  182. data/src/core/lib/event_engine/{executor/threaded_executor.cc → posix_engine/event_poller_posix_default.h} +13 -16
  183. data/src/core/lib/event_engine/posix_engine/internal_errqueue.cc +77 -0
  184. data/src/core/lib/event_engine/posix_engine/internal_errqueue.h +179 -0
  185. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +267 -0
  186. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +73 -0
  187. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +1270 -0
  188. data/src/core/lib/event_engine/posix_engine/posix_endpoint.h +682 -0
  189. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +453 -18
  190. data/src/core/lib/event_engine/posix_engine/posix_engine.h +148 -24
  191. data/src/core/lib/event_engine/posix_engine/posix_engine_closure.h +80 -0
  192. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.cc +1081 -0
  193. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +361 -0
  194. data/src/core/lib/event_engine/posix_engine/timer.h +9 -8
  195. data/src/core/lib/event_engine/posix_engine/timer_manager.cc +57 -194
  196. data/src/core/lib/event_engine/posix_engine/timer_manager.h +21 -49
  197. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.cc +301 -0
  198. data/src/core/lib/event_engine/posix_engine/traced_buffer_list.h +179 -0
  199. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.cc +126 -0
  200. data/src/core/lib/event_engine/posix_engine/wakeup_fd_eventfd.h +45 -0
  201. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.cc +151 -0
  202. data/src/core/lib/event_engine/posix_engine/wakeup_fd_pipe.h +45 -0
  203. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix.h +76 -0
  204. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.cc +67 -0
  205. data/src/core/lib/event_engine/posix_engine/wakeup_fd_posix_default.h +37 -0
  206. data/src/core/lib/event_engine/slice.cc +7 -6
  207. data/src/core/lib/event_engine/slice_buffer.cc +2 -2
  208. data/src/core/lib/event_engine/thread_pool.cc +106 -25
  209. data/src/core/lib/event_engine/thread_pool.h +32 -9
  210. data/src/core/lib/event_engine/windows/win_socket.cc +7 -7
  211. data/src/core/lib/event_engine/windows/windows_engine.cc +18 -12
  212. data/src/core/lib/event_engine/windows/windows_engine.h +8 -4
  213. data/src/core/lib/experiments/config.cc +1 -1
  214. data/src/core/lib/experiments/experiments.cc +13 -2
  215. data/src/core/lib/experiments/experiments.h +8 -1
  216. data/src/core/lib/gpr/cpu_linux.cc +6 -2
  217. data/src/core/lib/gpr/log_linux.cc +3 -4
  218. data/src/core/lib/gpr/string.h +1 -1
  219. data/src/core/lib/gpr/tmpfile_posix.cc +3 -2
  220. data/src/core/lib/gprpp/load_file.cc +75 -0
  221. data/src/core/lib/gprpp/load_file.h +33 -0
  222. data/src/core/lib/gprpp/per_cpu.h +46 -0
  223. data/src/core/lib/gprpp/stat_posix.cc +5 -4
  224. data/src/core/lib/gprpp/stat_windows.cc +3 -2
  225. data/src/core/lib/gprpp/status_helper.h +1 -3
  226. data/src/core/lib/gprpp/strerror.cc +41 -0
  227. data/src/core/{ext/xds/xds_resource_type.cc → lib/gprpp/strerror.h} +9 -13
  228. data/src/core/lib/gprpp/thd_windows.cc +1 -2
  229. data/src/core/lib/gprpp/time.cc +3 -4
  230. data/src/core/lib/gprpp/time.h +13 -2
  231. data/src/core/lib/gprpp/validation_errors.h +18 -1
  232. data/src/core/lib/http/httpcli.cc +40 -44
  233. data/src/core/lib/http/httpcli.h +6 -5
  234. data/src/core/lib/http/httpcli_security_connector.cc +4 -6
  235. data/src/core/lib/http/parser.cc +54 -65
  236. data/src/core/lib/iomgr/buffer_list.cc +105 -116
  237. data/src/core/lib/iomgr/buffer_list.h +60 -44
  238. data/src/core/lib/iomgr/call_combiner.cc +11 -10
  239. data/src/core/lib/iomgr/call_combiner.h +3 -4
  240. data/src/core/lib/iomgr/cfstream_handle.cc +13 -16
  241. data/src/core/lib/iomgr/closure.h +49 -5
  242. data/src/core/lib/iomgr/combiner.cc +2 -2
  243. data/src/core/lib/iomgr/endpoint.h +1 -1
  244. data/src/core/lib/iomgr/endpoint_cfstream.cc +26 -25
  245. data/src/core/lib/iomgr/endpoint_pair_posix.cc +2 -2
  246. data/src/core/lib/iomgr/error.cc +27 -42
  247. data/src/core/lib/iomgr/error.h +22 -152
  248. data/src/core/lib/iomgr/ev_apple.cc +4 -4
  249. data/src/core/lib/iomgr/ev_epoll1_linux.cc +26 -25
  250. data/src/core/lib/iomgr/ev_poll_posix.cc +27 -31
  251. data/src/core/lib/iomgr/exec_ctx.cc +3 -4
  252. data/src/core/lib/iomgr/exec_ctx.h +2 -3
  253. data/src/core/lib/iomgr/executor.cc +1 -2
  254. data/src/core/lib/iomgr/internal_errqueue.cc +3 -1
  255. data/src/core/lib/iomgr/iocp_windows.cc +1 -0
  256. data/src/core/lib/iomgr/iomgr_posix.cc +2 -2
  257. data/src/core/lib/iomgr/iomgr_posix_cfstream.cc +2 -1
  258. data/src/core/lib/iomgr/iomgr_windows.cc +2 -1
  259. data/src/core/lib/iomgr/load_file.cc +5 -9
  260. data/src/core/lib/iomgr/lockfree_event.cc +10 -10
  261. data/src/core/lib/iomgr/pollset_windows.cc +4 -4
  262. data/src/core/lib/iomgr/python_util.h +2 -2
  263. data/src/core/lib/iomgr/resolve_address.cc +8 -3
  264. data/src/core/lib/iomgr/resolve_address.h +3 -4
  265. data/src/core/lib/iomgr/resolve_address_impl.h +1 -1
  266. data/src/core/lib/iomgr/resolve_address_posix.cc +14 -25
  267. data/src/core/lib/iomgr/resolve_address_posix.h +1 -2
  268. data/src/core/lib/iomgr/resolve_address_windows.cc +14 -17
  269. data/src/core/lib/iomgr/resolve_address_windows.h +1 -2
  270. data/src/core/lib/iomgr/socket_utils_common_posix.cc +30 -29
  271. data/src/core/lib/iomgr/socket_utils_posix.cc +1 -0
  272. data/src/core/lib/iomgr/socket_utils_posix.h +2 -2
  273. data/src/core/lib/iomgr/socket_windows.cc +2 -2
  274. data/src/core/lib/iomgr/tcp_client_cfstream.cc +6 -10
  275. data/src/core/lib/iomgr/tcp_client_posix.cc +31 -35
  276. data/src/core/lib/iomgr/tcp_client_windows.cc +8 -12
  277. data/src/core/lib/iomgr/tcp_posix.cc +92 -108
  278. data/src/core/lib/iomgr/tcp_server_posix.cc +34 -34
  279. data/src/core/lib/iomgr/tcp_server_utils_posix.h +1 -1
  280. data/src/core/lib/iomgr/tcp_server_utils_posix_common.cc +18 -21
  281. data/src/core/lib/iomgr/tcp_server_utils_posix_ifaddrs.cc +12 -13
  282. data/src/core/lib/iomgr/tcp_server_utils_posix_noifaddrs.cc +1 -1
  283. data/src/core/lib/iomgr/tcp_server_windows.cc +26 -29
  284. data/src/core/lib/iomgr/tcp_windows.cc +27 -34
  285. data/src/core/lib/iomgr/timer.h +8 -8
  286. data/src/core/lib/iomgr/timer_generic.cc +9 -15
  287. data/src/core/lib/iomgr/unix_sockets_posix.cc +2 -4
  288. data/src/core/lib/iomgr/wakeup_fd_eventfd.cc +4 -3
  289. data/src/core/lib/iomgr/wakeup_fd_pipe.cc +10 -8
  290. data/src/core/lib/json/json_channel_args.h +42 -0
  291. data/src/core/lib/json/json_object_loader.cc +7 -2
  292. data/src/core/lib/json/json_object_loader.h +22 -0
  293. data/src/core/lib/json/json_util.cc +5 -5
  294. data/src/core/lib/json/json_util.h +4 -4
  295. data/src/core/lib/load_balancing/lb_policy.cc +1 -1
  296. data/src/core/lib/load_balancing/lb_policy.h +4 -0
  297. data/src/core/lib/load_balancing/subchannel_interface.h +0 -7
  298. data/src/core/lib/matchers/matchers.cc +3 -4
  299. data/src/core/lib/promise/activity.cc +16 -2
  300. data/src/core/lib/promise/activity.h +38 -15
  301. data/src/core/lib/promise/arena_promise.h +80 -51
  302. data/src/core/lib/promise/context.h +13 -6
  303. data/src/core/lib/promise/detail/basic_seq.h +9 -28
  304. data/src/core/lib/promise/detail/promise_factory.h +58 -10
  305. data/src/core/lib/promise/detail/status.h +28 -0
  306. data/src/core/lib/promise/detail/switch.h +1455 -0
  307. data/src/core/lib/promise/exec_ctx_wakeup_scheduler.h +3 -1
  308. data/src/core/lib/promise/for_each.h +129 -0
  309. data/src/core/lib/promise/loop.h +7 -5
  310. data/src/core/lib/promise/map_pipe.h +87 -0
  311. data/src/core/lib/promise/pipe.cc +19 -0
  312. data/src/core/lib/promise/pipe.h +505 -0
  313. data/src/core/lib/promise/poll.h +13 -0
  314. data/src/core/lib/promise/seq.h +3 -5
  315. data/src/core/lib/promise/sleep.cc +5 -4
  316. data/src/core/lib/promise/sleep.h +1 -2
  317. data/src/core/lib/promise/try_concurrently.h +341 -0
  318. data/src/core/lib/promise/try_seq.h +10 -13
  319. data/src/core/lib/resolver/server_address.cc +1 -0
  320. data/src/core/lib/resolver/server_address.h +1 -3
  321. data/src/core/lib/resource_quota/api.cc +0 -1
  322. data/src/core/lib/resource_quota/arena.cc +19 -0
  323. data/src/core/lib/resource_quota/arena.h +89 -0
  324. data/src/core/lib/resource_quota/memory_quota.cc +1 -0
  325. data/src/core/lib/security/authorization/grpc_authorization_engine.cc +1 -3
  326. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +4 -2
  327. data/src/core/lib/security/authorization/matchers.cc +25 -22
  328. data/src/core/lib/security/authorization/rbac_policy.cc +2 -3
  329. data/src/core/lib/security/context/security_context.h +10 -0
  330. data/src/core/lib/security/credentials/channel_creds_registry_init.cc +3 -4
  331. data/src/core/lib/security/credentials/composite/composite_credentials.cc +1 -1
  332. data/src/core/lib/security/credentials/external/aws_external_account_credentials.cc +77 -55
  333. data/src/core/lib/security/credentials/external/aws_request_signer.cc +4 -3
  334. data/src/core/lib/security/credentials/external/external_account_credentials.cc +40 -51
  335. data/src/core/lib/security/credentials/external/file_external_account_credentials.cc +17 -21
  336. data/src/core/lib/security/credentials/external/url_external_account_credentials.cc +21 -25
  337. data/src/core/lib/security/credentials/fake/fake_credentials.cc +1 -0
  338. data/src/core/lib/security/credentials/google_default/google_default_credentials.cc +27 -24
  339. data/src/core/lib/security/credentials/iam/iam_credentials.cc +1 -0
  340. data/src/core/lib/security/credentials/jwt/json_token.cc +1 -2
  341. data/src/core/lib/security/credentials/jwt/jwt_credentials.cc +1 -1
  342. data/src/core/lib/security/credentials/jwt/jwt_verifier.cc +5 -5
  343. data/src/core/lib/security/credentials/oauth2/oauth2_credentials.cc +24 -30
  344. data/src/core/lib/security/credentials/plugin/plugin_credentials.cc +6 -5
  345. data/src/core/lib/security/credentials/plugin/plugin_credentials.h +3 -3
  346. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.cc +19 -27
  347. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_distributor.h +4 -11
  348. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_provider.cc +29 -41
  349. data/src/core/lib/security/credentials/tls/grpc_tls_certificate_verifier.cc +1 -1
  350. data/src/core/lib/security/security_connector/alts/alts_security_connector.cc +6 -11
  351. data/src/core/lib/security/security_connector/fake/fake_security_connector.cc +8 -15
  352. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.cc +2 -2
  353. data/src/core/lib/security/security_connector/insecure/insecure_security_connector.h +2 -6
  354. data/src/core/lib/security/security_connector/load_system_roots_supported.cc +1 -4
  355. data/src/core/lib/security/security_connector/local/local_security_connector.cc +7 -11
  356. data/src/core/lib/security/security_connector/ssl/ssl_security_connector.cc +9 -14
  357. data/src/core/lib/security/security_connector/ssl_utils.cc +5 -7
  358. data/src/core/lib/security/security_connector/tls/tls_security_connector.cc +21 -27
  359. data/src/core/lib/security/transport/client_auth_filter.cc +1 -1
  360. data/src/core/lib/security/transport/secure_endpoint.cc +26 -28
  361. data/src/core/lib/security/transport/security_handshaker.cc +53 -53
  362. data/src/core/lib/security/transport/server_auth_filter.cc +21 -21
  363. data/src/core/lib/security/transport/tsi_error.cc +6 -3
  364. data/src/core/lib/security/util/json_util.cc +4 -5
  365. data/src/core/lib/service_config/service_config.h +1 -1
  366. data/src/core/lib/service_config/service_config_impl.cc +111 -158
  367. data/src/core/lib/service_config/service_config_impl.h +14 -17
  368. data/src/core/lib/service_config/service_config_parser.cc +14 -31
  369. data/src/core/lib/service_config/service_config_parser.h +14 -10
  370. data/src/core/lib/slice/b64.cc +2 -2
  371. data/src/core/lib/slice/slice.cc +7 -1
  372. data/src/core/lib/slice/slice.h +19 -6
  373. data/src/core/lib/slice/slice_buffer.cc +13 -14
  374. data/src/core/lib/slice/slice_internal.h +13 -21
  375. data/src/core/lib/slice/slice_refcount.h +34 -19
  376. data/src/core/lib/surface/byte_buffer.cc +3 -4
  377. data/src/core/lib/surface/byte_buffer_reader.cc +4 -4
  378. data/src/core/lib/surface/call.cc +1366 -239
  379. data/src/core/lib/surface/call.h +44 -0
  380. data/src/core/lib/surface/call_details.cc +3 -3
  381. data/src/core/lib/surface/call_trace.cc +113 -0
  382. data/src/core/lib/surface/call_trace.h +30 -0
  383. data/src/core/lib/surface/channel.cc +44 -49
  384. data/src/core/lib/surface/channel.h +9 -1
  385. data/src/core/lib/surface/channel_ping.cc +1 -1
  386. data/src/core/lib/surface/channel_stack_type.cc +4 -0
  387. data/src/core/lib/surface/channel_stack_type.h +2 -0
  388. data/src/core/lib/surface/completion_queue.cc +38 -52
  389. data/src/core/lib/surface/init.cc +8 -39
  390. data/src/core/lib/surface/init_internally.h +8 -0
  391. data/src/core/lib/surface/lame_client.cc +10 -8
  392. data/src/core/lib/surface/server.cc +48 -70
  393. data/src/core/lib/surface/server.h +3 -4
  394. data/src/core/lib/surface/validate_metadata.cc +11 -12
  395. data/src/core/lib/surface/version.cc +2 -2
  396. data/src/core/lib/transport/connectivity_state.cc +2 -2
  397. data/src/core/lib/transport/error_utils.cc +34 -28
  398. data/src/core/lib/transport/error_utils.h +3 -3
  399. data/src/core/lib/transport/handshaker.cc +14 -14
  400. data/src/core/lib/transport/handshaker.h +1 -1
  401. data/src/core/lib/transport/handshaker_factory.h +26 -0
  402. data/src/core/lib/transport/handshaker_registry.cc +8 -2
  403. data/src/core/lib/transport/handshaker_registry.h +3 -4
  404. data/src/core/lib/transport/http_connect_handshaker.cc +23 -24
  405. data/src/core/lib/transport/metadata_batch.h +17 -1
  406. data/src/core/lib/transport/parsed_metadata.cc +2 -6
  407. data/src/core/lib/transport/tcp_connect_handshaker.cc +15 -20
  408. data/src/core/lib/transport/transport.cc +63 -17
  409. data/src/core/lib/transport/transport.h +64 -68
  410. data/src/core/lib/transport/transport_impl.h +1 -1
  411. data/src/core/lib/transport/transport_op_string.cc +7 -6
  412. data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -10
  413. data/src/core/plugin_registry/grpc_plugin_registry_extra.cc +2 -14
  414. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +10 -10
  415. data/src/core/tsi/alts/handshaker/alts_tsi_handshaker.cc +8 -8
  416. data/src/core/tsi/alts/handshaker/alts_tsi_utils.cc +2 -1
  417. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_integrity_only_record_protocol.cc +7 -7
  418. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_privacy_integrity_record_protocol.cc +7 -6
  419. data/src/core/tsi/alts/zero_copy_frame_protector/alts_grpc_record_protocol_common.cc +1 -1
  420. data/src/core/tsi/alts/zero_copy_frame_protector/alts_zero_copy_grpc_protector.cc +5 -5
  421. data/src/core/tsi/fake_transport_security.cc +3 -3
  422. data/src/core/tsi/ssl/key_logging/ssl_key_logging.cc +7 -3
  423. data/src/core/tsi/ssl/session_cache/ssl_session_boringssl.cc +1 -1
  424. data/src/core/tsi/ssl/session_cache/ssl_session_openssl.cc +6 -2
  425. data/src/ruby/ext/grpc/rb_grpc_imports.generated.c +0 -2
  426. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +0 -3
  427. data/src/ruby/lib/grpc/version.rb +1 -1
  428. data/src/ruby/spec/channel_spec.rb +0 -43
  429. data/src/ruby/spec/generic/active_call_spec.rb +12 -3
  430. data/third_party/abseil-cpp/absl/cleanup/cleanup.h +140 -0
  431. data/third_party/abseil-cpp/absl/cleanup/internal/cleanup.h +100 -0
  432. data/third_party/zlib/compress.c +3 -3
  433. data/third_party/zlib/crc32.c +21 -12
  434. data/third_party/zlib/deflate.c +112 -106
  435. data/third_party/zlib/deflate.h +2 -2
  436. data/third_party/zlib/gzlib.c +1 -1
  437. data/third_party/zlib/gzread.c +3 -5
  438. data/third_party/zlib/gzwrite.c +1 -1
  439. data/third_party/zlib/infback.c +10 -7
  440. data/third_party/zlib/inflate.c +5 -2
  441. data/third_party/zlib/inftrees.c +2 -2
  442. data/third_party/zlib/inftrees.h +1 -1
  443. data/third_party/zlib/trees.c +61 -62
  444. data/third_party/zlib/uncompr.c +2 -2
  445. data/third_party/zlib/zconf.h +16 -3
  446. data/third_party/zlib/zlib.h +10 -10
  447. data/third_party/zlib/zutil.c +9 -7
  448. data/third_party/zlib/zutil.h +1 -0
  449. metadata +55 -18
  450. data/src/core/ext/filters/client_channel/resolver_result_parsing.cc +0 -188
  451. data/src/core/ext/filters/fault_injection/service_config_parser.cc +0 -187
  452. data/src/core/lib/event_engine/executor/threaded_executor.h +0 -44
  453. data/src/core/lib/gpr/murmur_hash.cc +0 -82
  454. data/src/core/lib/gpr/murmur_hash.h +0 -29
  455. data/src/core/lib/gpr/tls.h +0 -156
  456. data/src/core/lib/promise/call_push_pull.h +0 -148
  457. data/src/core/lib/slice/slice_api.cc +0 -39
  458. data/src/core/lib/slice/slice_buffer_api.cc +0 -35
  459. data/src/core/lib/slice/slice_refcount_base.h +0 -60
@@ -66,6 +66,7 @@ int stream_size;
66
66
  state->window = window;
67
67
  state->wnext = 0;
68
68
  state->whave = 0;
69
+ state->sane = 1;
69
70
  return Z_OK;
70
71
  }
71
72
 
@@ -605,25 +606,27 @@ void FAR *out_desc;
605
606
  break;
606
607
 
607
608
  case DONE:
608
- /* inflate stream terminated properly -- write leftover output */
609
+ /* inflate stream terminated properly */
609
610
  ret = Z_STREAM_END;
610
- if (left < state->wsize) {
611
- if (out(out_desc, state->window, state->wsize - left))
612
- ret = Z_BUF_ERROR;
613
- }
614
611
  goto inf_leave;
615
612
 
616
613
  case BAD:
617
614
  ret = Z_DATA_ERROR;
618
615
  goto inf_leave;
619
616
 
620
- default: /* can't happen, but makes compilers happy */
617
+ default:
618
+ /* can't happen, but makes compilers happy */
621
619
  ret = Z_STREAM_ERROR;
622
620
  goto inf_leave;
623
621
  }
624
622
 
625
- /* Return unused input */
623
+ /* Write leftover output and return unused input */
626
624
  inf_leave:
625
+ if (left < state->wsize) {
626
+ if (out(out_desc, state->window, state->wsize - left) &&
627
+ ret == Z_STREAM_END)
628
+ ret = Z_BUF_ERROR;
629
+ }
627
630
  strm->next_in = next;
628
631
  strm->avail_in = have;
629
632
  return ret;
@@ -168,6 +168,8 @@ int windowBits;
168
168
 
169
169
  /* extract wrap request from windowBits parameter */
170
170
  if (windowBits < 0) {
171
+ if (windowBits < -15)
172
+ return Z_STREAM_ERROR;
171
173
  wrap = 0;
172
174
  windowBits = -windowBits;
173
175
  }
@@ -764,8 +766,9 @@ int flush;
764
766
  if (copy > have) copy = have;
765
767
  if (copy) {
766
768
  if (state->head != Z_NULL &&
767
- state->head->extra != Z_NULL) {
768
- len = state->head->extra_len - state->length;
769
+ state->head->extra != Z_NULL &&
770
+ (len = state->head->extra_len - state->length) <
771
+ state->head->extra_max) {
769
772
  zmemcpy(state->head->extra + len, next,
770
773
  len + copy > state->head->extra_max ?
771
774
  state->head->extra_max - len : copy);
@@ -9,7 +9,7 @@
9
9
  #define MAXBITS 15
10
10
 
11
11
  const char inflate_copyright[] =
12
- " inflate 1.2.12 Copyright 1995-2022 Mark Adler ";
12
+ " inflate 1.2.13 Copyright 1995-2022 Mark Adler ";
13
13
  /*
14
14
  If you use the zlib library in a product, an acknowledgment is welcome
15
15
  in the documentation of your product. If for some reason you cannot
@@ -62,7 +62,7 @@ unsigned short FAR *work;
62
62
  35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0};
63
63
  static const unsigned short lext[31] = { /* Length codes 257..285 extra */
64
64
  16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18,
65
- 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 199, 202};
65
+ 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 194, 65};
66
66
  static const unsigned short dbase[32] = { /* Distance codes 0..29 base */
67
67
  1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193,
68
68
  257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145,
@@ -38,7 +38,7 @@ typedef struct {
38
38
  /* Maximum size of the dynamic table. The maximum number of code structures is
39
39
  1444, which is the sum of 852 for literal/length codes and 592 for distance
40
40
  codes. These values were found by exhaustive searches using the program
41
- examples/enough.c found in the zlib distribtution. The arguments to that
41
+ examples/enough.c found in the zlib distribution. The arguments to that
42
42
  program are the number of symbols, the initial root table size, and the
43
43
  maximum bit length of a code. "enough 286 9 15" for literal/length codes
44
44
  returns returns 852, and "enough 30 6 15" for distance codes returns 592.
@@ -193,7 +193,7 @@ local void send_bits(s, value, length)
193
193
  s->bits_sent += (ulg)length;
194
194
 
195
195
  /* If not enough room in bi_buf, use (valid) bits from bi_buf and
196
- * (16 - bi_valid) bits from value, leaving (width - (16-bi_valid))
196
+ * (16 - bi_valid) bits from value, leaving (width - (16 - bi_valid))
197
197
  * unused bits in value.
198
198
  */
199
199
  if (s->bi_valid > (int)Buf_size - length) {
@@ -256,7 +256,7 @@ local void tr_static_init()
256
256
  length = 0;
257
257
  for (code = 0; code < LENGTH_CODES-1; code++) {
258
258
  base_length[code] = length;
259
- for (n = 0; n < (1<<extra_lbits[code]); n++) {
259
+ for (n = 0; n < (1 << extra_lbits[code]); n++) {
260
260
  _length_code[length++] = (uch)code;
261
261
  }
262
262
  }
@@ -265,13 +265,13 @@ local void tr_static_init()
265
265
  * in two different ways: code 284 + 5 bits or code 285, so we
266
266
  * overwrite length_code[255] to use the best encoding:
267
267
  */
268
- _length_code[length-1] = (uch)code;
268
+ _length_code[length - 1] = (uch)code;
269
269
 
270
270
  /* Initialize the mapping dist (0..32K) -> dist code (0..29) */
271
271
  dist = 0;
272
272
  for (code = 0 ; code < 16; code++) {
273
273
  base_dist[code] = dist;
274
- for (n = 0; n < (1<<extra_dbits[code]); n++) {
274
+ for (n = 0; n < (1 << extra_dbits[code]); n++) {
275
275
  _dist_code[dist++] = (uch)code;
276
276
  }
277
277
  }
@@ -279,11 +279,11 @@ local void tr_static_init()
279
279
  dist >>= 7; /* from now on, all distances are divided by 128 */
280
280
  for ( ; code < D_CODES; code++) {
281
281
  base_dist[code] = dist << 7;
282
- for (n = 0; n < (1<<(extra_dbits[code]-7)); n++) {
282
+ for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) {
283
283
  _dist_code[256 + dist++] = (uch)code;
284
284
  }
285
285
  }
286
- Assert (dist == 256, "tr_static_init: 256+dist != 512");
286
+ Assert (dist == 256, "tr_static_init: 256 + dist != 512");
287
287
 
288
288
  /* Construct the codes of the static literal tree */
289
289
  for (bits = 0; bits <= MAX_BITS; bits++) bl_count[bits] = 0;
@@ -312,7 +312,7 @@ local void tr_static_init()
312
312
  }
313
313
 
314
314
  /* ===========================================================================
315
- * Genererate the file trees.h describing the static trees.
315
+ * Generate the file trees.h describing the static trees.
316
316
  */
317
317
  #ifdef GEN_TREES_H
318
318
  # ifndef ZLIB_DEBUG
@@ -321,7 +321,7 @@ local void tr_static_init()
321
321
 
322
322
  # define SEPARATOR(i, last, width) \
323
323
  ((i) == (last)? "\n};\n\n" : \
324
- ((i) % (width) == (width)-1 ? ",\n" : ", "))
324
+ ((i) % (width) == (width) - 1 ? ",\n" : ", "))
325
325
 
326
326
  void gen_trees_header()
327
327
  {
@@ -458,7 +458,7 @@ local void pqdownheap(s, tree, k)
458
458
  while (j <= s->heap_len) {
459
459
  /* Set j to the smallest of the two sons: */
460
460
  if (j < s->heap_len &&
461
- smaller(tree, s->heap[j+1], s->heap[j], s->depth)) {
461
+ smaller(tree, s->heap[j + 1], s->heap[j], s->depth)) {
462
462
  j++;
463
463
  }
464
464
  /* Exit if v is smaller than both sons */
@@ -507,7 +507,7 @@ local void gen_bitlen(s, desc)
507
507
  */
508
508
  tree[s->heap[s->heap_max]].Len = 0; /* root of the heap */
509
509
 
510
- for (h = s->heap_max+1; h < HEAP_SIZE; h++) {
510
+ for (h = s->heap_max + 1; h < HEAP_SIZE; h++) {
511
511
  n = s->heap[h];
512
512
  bits = tree[tree[n].Dad].Len + 1;
513
513
  if (bits > max_length) bits = max_length, overflow++;
@@ -518,7 +518,7 @@ local void gen_bitlen(s, desc)
518
518
 
519
519
  s->bl_count[bits]++;
520
520
  xbits = 0;
521
- if (n >= base) xbits = extra[n-base];
521
+ if (n >= base) xbits = extra[n - base];
522
522
  f = tree[n].Freq;
523
523
  s->opt_len += (ulg)f * (unsigned)(bits + xbits);
524
524
  if (stree) s->static_len += (ulg)f * (unsigned)(stree[n].Len + xbits);
@@ -530,10 +530,10 @@ local void gen_bitlen(s, desc)
530
530
 
531
531
  /* Find the first bit length which could increase: */
532
532
  do {
533
- bits = max_length-1;
533
+ bits = max_length - 1;
534
534
  while (s->bl_count[bits] == 0) bits--;
535
- s->bl_count[bits]--; /* move one leaf down the tree */
536
- s->bl_count[bits+1] += 2; /* move one overflow item as its brother */
535
+ s->bl_count[bits]--; /* move one leaf down the tree */
536
+ s->bl_count[bits + 1] += 2; /* move one overflow item as its brother */
537
537
  s->bl_count[max_length]--;
538
538
  /* The brother of the overflow item also moves one step up,
539
539
  * but this does not affect bl_count[max_length]
@@ -569,7 +569,7 @@ local void gen_bitlen(s, desc)
569
569
  * OUT assertion: the field code is set for all tree elements of non
570
570
  * zero code length.
571
571
  */
572
- local void gen_codes (tree, max_code, bl_count)
572
+ local void gen_codes(tree, max_code, bl_count)
573
573
  ct_data *tree; /* the tree to decorate */
574
574
  int max_code; /* largest code with non zero frequency */
575
575
  ushf *bl_count; /* number of codes at each bit length */
@@ -583,13 +583,13 @@ local void gen_codes (tree, max_code, bl_count)
583
583
  * without bit reversal.
584
584
  */
585
585
  for (bits = 1; bits <= MAX_BITS; bits++) {
586
- code = (code + bl_count[bits-1]) << 1;
586
+ code = (code + bl_count[bits - 1]) << 1;
587
587
  next_code[bits] = (ush)code;
588
588
  }
589
589
  /* Check that the bit counts in bl_count are consistent. The last code
590
590
  * must be all ones.
591
591
  */
592
- Assert (code + bl_count[MAX_BITS]-1 == (1<<MAX_BITS)-1,
592
+ Assert (code + bl_count[MAX_BITS] - 1 == (1 << MAX_BITS) - 1,
593
593
  "inconsistent bit counts");
594
594
  Tracev((stderr,"\ngen_codes: max_code %d ", max_code));
595
595
 
@@ -600,7 +600,7 @@ local void gen_codes (tree, max_code, bl_count)
600
600
  tree[n].Code = (ush)bi_reverse(next_code[len]++, len);
601
601
 
602
602
  Tracecv(tree != static_ltree, (stderr,"\nn %3d %c l %2d c %4x (%x) ",
603
- n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len]-1));
603
+ n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len] - 1));
604
604
  }
605
605
  }
606
606
 
@@ -624,7 +624,7 @@ local void build_tree(s, desc)
624
624
  int node; /* new node being created */
625
625
 
626
626
  /* Construct the initial heap, with least frequent element in
627
- * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1].
627
+ * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n + 1].
628
628
  * heap[0] is not used.
629
629
  */
630
630
  s->heap_len = 0, s->heap_max = HEAP_SIZE;
@@ -652,7 +652,7 @@ local void build_tree(s, desc)
652
652
  }
653
653
  desc->max_code = max_code;
654
654
 
655
- /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree,
655
+ /* The elements heap[heap_len/2 + 1 .. heap_len] are leaves of the tree,
656
656
  * establish sub-heaps of increasing lengths:
657
657
  */
658
658
  for (n = s->heap_len/2; n >= 1; n--) pqdownheap(s, tree, n);
@@ -700,7 +700,7 @@ local void build_tree(s, desc)
700
700
  * Scan a literal or distance tree to determine the frequencies of the codes
701
701
  * in the bit length tree.
702
702
  */
703
- local void scan_tree (s, tree, max_code)
703
+ local void scan_tree(s, tree, max_code)
704
704
  deflate_state *s;
705
705
  ct_data *tree; /* the tree to be scanned */
706
706
  int max_code; /* and its largest code of non zero frequency */
@@ -714,10 +714,10 @@ local void scan_tree (s, tree, max_code)
714
714
  int min_count = 4; /* min repeat count */
715
715
 
716
716
  if (nextlen == 0) max_count = 138, min_count = 3;
717
- tree[max_code+1].Len = (ush)0xffff; /* guard */
717
+ tree[max_code + 1].Len = (ush)0xffff; /* guard */
718
718
 
719
719
  for (n = 0; n <= max_code; n++) {
720
- curlen = nextlen; nextlen = tree[n+1].Len;
720
+ curlen = nextlen; nextlen = tree[n + 1].Len;
721
721
  if (++count < max_count && curlen == nextlen) {
722
722
  continue;
723
723
  } else if (count < min_count) {
@@ -745,7 +745,7 @@ local void scan_tree (s, tree, max_code)
745
745
  * Send a literal or distance tree in compressed form, using the codes in
746
746
  * bl_tree.
747
747
  */
748
- local void send_tree (s, tree, max_code)
748
+ local void send_tree(s, tree, max_code)
749
749
  deflate_state *s;
750
750
  ct_data *tree; /* the tree to be scanned */
751
751
  int max_code; /* and its largest code of non zero frequency */
@@ -758,11 +758,11 @@ local void send_tree (s, tree, max_code)
758
758
  int max_count = 7; /* max repeat count */
759
759
  int min_count = 4; /* min repeat count */
760
760
 
761
- /* tree[max_code+1].Len = -1; */ /* guard already set */
761
+ /* tree[max_code + 1].Len = -1; */ /* guard already set */
762
762
  if (nextlen == 0) max_count = 138, min_count = 3;
763
763
 
764
764
  for (n = 0; n <= max_code; n++) {
765
- curlen = nextlen; nextlen = tree[n+1].Len;
765
+ curlen = nextlen; nextlen = tree[n + 1].Len;
766
766
  if (++count < max_count && curlen == nextlen) {
767
767
  continue;
768
768
  } else if (count < min_count) {
@@ -773,13 +773,13 @@ local void send_tree (s, tree, max_code)
773
773
  send_code(s, curlen, s->bl_tree); count--;
774
774
  }
775
775
  Assert(count >= 3 && count <= 6, " 3_6?");
776
- send_code(s, REP_3_6, s->bl_tree); send_bits(s, count-3, 2);
776
+ send_code(s, REP_3_6, s->bl_tree); send_bits(s, count - 3, 2);
777
777
 
778
778
  } else if (count <= 10) {
779
- send_code(s, REPZ_3_10, s->bl_tree); send_bits(s, count-3, 3);
779
+ send_code(s, REPZ_3_10, s->bl_tree); send_bits(s, count - 3, 3);
780
780
 
781
781
  } else {
782
- send_code(s, REPZ_11_138, s->bl_tree); send_bits(s, count-11, 7);
782
+ send_code(s, REPZ_11_138, s->bl_tree); send_bits(s, count - 11, 7);
783
783
  }
784
784
  count = 0; prevlen = curlen;
785
785
  if (nextlen == 0) {
@@ -807,8 +807,8 @@ local int build_bl_tree(s)
807
807
 
808
808
  /* Build the bit length tree: */
809
809
  build_tree(s, (tree_desc *)(&(s->bl_desc)));
810
- /* opt_len now includes the length of the tree representations, except
811
- * the lengths of the bit lengths codes and the 5+5+4 bits for the counts.
810
+ /* opt_len now includes the length of the tree representations, except the
811
+ * lengths of the bit lengths codes and the 5 + 5 + 4 bits for the counts.
812
812
  */
813
813
 
814
814
  /* Determine the number of bit length codes to send. The pkzip format
@@ -819,7 +819,7 @@ local int build_bl_tree(s)
819
819
  if (s->bl_tree[bl_order[max_blindex]].Len != 0) break;
820
820
  }
821
821
  /* Update opt_len to include the bit length tree and counts */
822
- s->opt_len += 3*((ulg)max_blindex+1) + 5+5+4;
822
+ s->opt_len += 3*((ulg)max_blindex + 1) + 5 + 5 + 4;
823
823
  Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld",
824
824
  s->opt_len, s->static_len));
825
825
 
@@ -841,19 +841,19 @@ local void send_all_trees(s, lcodes, dcodes, blcodes)
841
841
  Assert (lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES,
842
842
  "too many codes");
843
843
  Tracev((stderr, "\nbl counts: "));
844
- send_bits(s, lcodes-257, 5); /* not +255 as stated in appnote.txt */
845
- send_bits(s, dcodes-1, 5);
846
- send_bits(s, blcodes-4, 4); /* not -3 as stated in appnote.txt */
844
+ send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */
845
+ send_bits(s, dcodes - 1, 5);
846
+ send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */
847
847
  for (rank = 0; rank < blcodes; rank++) {
848
848
  Tracev((stderr, "\nbl code %2d ", bl_order[rank]));
849
849
  send_bits(s, s->bl_tree[bl_order[rank]].Len, 3);
850
850
  }
851
851
  Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent));
852
852
 
853
- send_tree(s, (ct_data *)s->dyn_ltree, lcodes-1); /* literal tree */
853
+ send_tree(s, (ct_data *)s->dyn_ltree, lcodes - 1); /* literal tree */
854
854
  Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent));
855
855
 
856
- send_tree(s, (ct_data *)s->dyn_dtree, dcodes-1); /* distance tree */
856
+ send_tree(s, (ct_data *)s->dyn_dtree, dcodes - 1); /* distance tree */
857
857
  Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent));
858
858
  }
859
859
 
@@ -866,7 +866,7 @@ void ZLIB_INTERNAL _tr_stored_block(s, buf, stored_len, last)
866
866
  ulg stored_len; /* length of input block */
867
867
  int last; /* one if this is the last block for a file */
868
868
  {
869
- send_bits(s, (STORED_BLOCK<<1)+last, 3); /* send block type */
869
+ send_bits(s, (STORED_BLOCK<<1) + last, 3); /* send block type */
870
870
  bi_windup(s); /* align on byte boundary */
871
871
  put_short(s, (ush)stored_len);
872
872
  put_short(s, (ush)~stored_len);
@@ -877,7 +877,7 @@ void ZLIB_INTERNAL _tr_stored_block(s, buf, stored_len, last)
877
877
  s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L;
878
878
  s->compressed_len += (stored_len + 4) << 3;
879
879
  s->bits_sent += 2*16;
880
- s->bits_sent += stored_len<<3;
880
+ s->bits_sent += stored_len << 3;
881
881
  #endif
882
882
  }
883
883
 
@@ -943,14 +943,17 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)
943
943
  max_blindex = build_bl_tree(s);
944
944
 
945
945
  /* Determine the best encoding. Compute the block lengths in bytes. */
946
- opt_lenb = (s->opt_len+3+7)>>3;
947
- static_lenb = (s->static_len+3+7)>>3;
946
+ opt_lenb = (s->opt_len + 3 + 7) >> 3;
947
+ static_lenb = (s->static_len + 3 + 7) >> 3;
948
948
 
949
949
  Tracev((stderr, "\nopt %lu(%lu) stat %lu(%lu) stored %lu lit %u ",
950
950
  opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len,
951
951
  s->sym_next / 3));
952
952
 
953
- if (static_lenb <= opt_lenb) opt_lenb = static_lenb;
953
+ #ifndef FORCE_STATIC
954
+ if (static_lenb <= opt_lenb || s->strategy == Z_FIXED)
955
+ #endif
956
+ opt_lenb = static_lenb;
954
957
 
955
958
  } else {
956
959
  Assert(buf != (char*)0, "lost buf");
@@ -960,7 +963,7 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)
960
963
  #ifdef FORCE_STORED
961
964
  if (buf != (char*)0) { /* force stored block */
962
965
  #else
963
- if (stored_len+4 <= opt_lenb && buf != (char*)0) {
966
+ if (stored_len + 4 <= opt_lenb && buf != (char*)0) {
964
967
  /* 4: two words for the lengths */
965
968
  #endif
966
969
  /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE.
@@ -971,21 +974,17 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)
971
974
  */
972
975
  _tr_stored_block(s, buf, stored_len, last);
973
976
 
974
- #ifdef FORCE_STATIC
975
- } else if (static_lenb >= 0) { /* force static trees */
976
- #else
977
- } else if (s->strategy == Z_FIXED || static_lenb == opt_lenb) {
978
- #endif
979
- send_bits(s, (STATIC_TREES<<1)+last, 3);
977
+ } else if (static_lenb == opt_lenb) {
978
+ send_bits(s, (STATIC_TREES<<1) + last, 3);
980
979
  compress_block(s, (const ct_data *)static_ltree,
981
980
  (const ct_data *)static_dtree);
982
981
  #ifdef ZLIB_DEBUG
983
982
  s->compressed_len += 3 + s->static_len;
984
983
  #endif
985
984
  } else {
986
- send_bits(s, (DYN_TREES<<1)+last, 3);
987
- send_all_trees(s, s->l_desc.max_code+1, s->d_desc.max_code+1,
988
- max_blindex+1);
985
+ send_bits(s, (DYN_TREES<<1) + last, 3);
986
+ send_all_trees(s, s->l_desc.max_code + 1, s->d_desc.max_code + 1,
987
+ max_blindex + 1);
989
988
  compress_block(s, (const ct_data *)s->dyn_ltree,
990
989
  (const ct_data *)s->dyn_dtree);
991
990
  #ifdef ZLIB_DEBUG
@@ -1004,22 +1003,22 @@ void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last)
1004
1003
  s->compressed_len += 7; /* align on byte boundary */
1005
1004
  #endif
1006
1005
  }
1007
- Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len>>3,
1008
- s->compressed_len-7*last));
1006
+ Tracev((stderr,"\ncomprlen %lu(%lu) ", s->compressed_len >> 3,
1007
+ s->compressed_len - 7*last));
1009
1008
  }
1010
1009
 
1011
1010
  /* ===========================================================================
1012
1011
  * Save the match info and tally the frequency counts. Return true if
1013
1012
  * the current block must be flushed.
1014
1013
  */
1015
- int ZLIB_INTERNAL _tr_tally (s, dist, lc)
1014
+ int ZLIB_INTERNAL _tr_tally(s, dist, lc)
1016
1015
  deflate_state *s;
1017
1016
  unsigned dist; /* distance of matched string */
1018
- unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */
1017
+ unsigned lc; /* match length - MIN_MATCH or unmatched char (dist==0) */
1019
1018
  {
1020
- s->sym_buf[s->sym_next++] = dist;
1021
- s->sym_buf[s->sym_next++] = dist >> 8;
1022
- s->sym_buf[s->sym_next++] = lc;
1019
+ s->sym_buf[s->sym_next++] = (uch)dist;
1020
+ s->sym_buf[s->sym_next++] = (uch)(dist >> 8);
1021
+ s->sym_buf[s->sym_next++] = (uch)lc;
1023
1022
  if (dist == 0) {
1024
1023
  /* lc is the unmatched char */
1025
1024
  s->dyn_ltree[lc].Freq++;
@@ -1031,7 +1030,7 @@ int ZLIB_INTERNAL _tr_tally (s, dist, lc)
1031
1030
  (ush)lc <= (ush)(MAX_MATCH-MIN_MATCH) &&
1032
1031
  (ush)d_code(dist) < (ush)D_CODES, "_tr_tally: bad match");
1033
1032
 
1034
- s->dyn_ltree[_length_code[lc]+LITERALS+1].Freq++;
1033
+ s->dyn_ltree[_length_code[lc] + LITERALS + 1].Freq++;
1035
1034
  s->dyn_dtree[d_code(dist)].Freq++;
1036
1035
  }
1037
1036
  return (s->sym_next == s->sym_end);
@@ -1061,7 +1060,7 @@ local void compress_block(s, ltree, dtree)
1061
1060
  } else {
1062
1061
  /* Here, lc is the match length - MIN_MATCH */
1063
1062
  code = _length_code[lc];
1064
- send_code(s, code+LITERALS+1, ltree); /* send the length code */
1063
+ send_code(s, code + LITERALS + 1, ltree); /* send length code */
1065
1064
  extra = extra_lbits[code];
1066
1065
  if (extra != 0) {
1067
1066
  lc -= base_length[code];
@@ -1177,6 +1176,6 @@ local void bi_windup(s)
1177
1176
  s->bi_buf = 0;
1178
1177
  s->bi_valid = 0;
1179
1178
  #ifdef ZLIB_DEBUG
1180
- s->bits_sent = (s->bits_sent+7) & ~7;
1179
+ s->bits_sent = (s->bits_sent + 7) & ~7;
1181
1180
  #endif
1182
1181
  }
@@ -24,7 +24,7 @@
24
24
  Z_DATA_ERROR if the input data was corrupted, including if the input data is
25
25
  an incomplete zlib stream.
26
26
  */
27
- int ZEXPORT uncompress2 (dest, destLen, source, sourceLen)
27
+ int ZEXPORT uncompress2(dest, destLen, source, sourceLen)
28
28
  Bytef *dest;
29
29
  uLongf *destLen;
30
30
  const Bytef *source;
@@ -83,7 +83,7 @@ int ZEXPORT uncompress2 (dest, destLen, source, sourceLen)
83
83
  err;
84
84
  }
85
85
 
86
- int ZEXPORT uncompress (dest, destLen, source, sourceLen)
86
+ int ZEXPORT uncompress(dest, destLen, source, sourceLen)
87
87
  Bytef *dest;
88
88
  uLongf *destLen;
89
89
  const Bytef *source;
@@ -38,6 +38,9 @@
38
38
  # define crc32 z_crc32
39
39
  # define crc32_combine z_crc32_combine
40
40
  # define crc32_combine64 z_crc32_combine64
41
+ # define crc32_combine_gen z_crc32_combine_gen
42
+ # define crc32_combine_gen64 z_crc32_combine_gen64
43
+ # define crc32_combine_op z_crc32_combine_op
41
44
  # define crc32_z z_crc32_z
42
45
  # define deflate z_deflate
43
46
  # define deflateBound z_deflateBound
@@ -349,6 +352,9 @@
349
352
  # ifdef FAR
350
353
  # undef FAR
351
354
  # endif
355
+ # ifndef WIN32_LEAN_AND_MEAN
356
+ # define WIN32_LEAN_AND_MEAN
357
+ # endif
352
358
  # include <windows.h>
353
359
  /* No need for _export, use ZLIB.DEF instead. */
354
360
  /* For complete Windows compatibility, use WINAPI, not __stdcall. */
@@ -467,11 +473,18 @@ typedef uLong FAR uLongf;
467
473
  # undef _LARGEFILE64_SOURCE
468
474
  #endif
469
475
 
470
- #if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H)
471
- # define Z_HAVE_UNISTD_H
476
+ #ifndef Z_HAVE_UNISTD_H
477
+ # ifdef __WATCOMC__
478
+ # define Z_HAVE_UNISTD_H
479
+ # endif
480
+ #endif
481
+ #ifndef Z_HAVE_UNISTD_H
482
+ # if defined(_LARGEFILE64_SOURCE) && !defined(_WIN32)
483
+ # define Z_HAVE_UNISTD_H
484
+ # endif
472
485
  #endif
473
486
  #ifndef Z_SOLO
474
- # if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE)
487
+ # if defined(Z_HAVE_UNISTD_H)
475
488
  # include <unistd.h> /* for SEEK_*, off_t, and _LFS64_LARGEFILE */
476
489
  # ifdef VMS
477
490
  # include <unixio.h> /* for off_t */
@@ -1,5 +1,5 @@
1
1
  /* zlib.h -- interface of the 'zlib' general purpose compression library
2
- version 1.2.12, March 11th, 2022
2
+ version 1.2.13, October 13th, 2022
3
3
 
4
4
  Copyright (C) 1995-2022 Jean-loup Gailly and Mark Adler
5
5
 
@@ -37,11 +37,11 @@
37
37
  extern "C" {
38
38
  #endif
39
39
 
40
- #define ZLIB_VERSION "1.2.12"
41
- #define ZLIB_VERNUM 0x12c0
40
+ #define ZLIB_VERSION "1.2.13"
41
+ #define ZLIB_VERNUM 0x12d0
42
42
  #define ZLIB_VER_MAJOR 1
43
43
  #define ZLIB_VER_MINOR 2
44
- #define ZLIB_VER_REVISION 12
44
+ #define ZLIB_VER_REVISION 13
45
45
  #define ZLIB_VER_SUBREVISION 0
46
46
 
47
47
  /*
@@ -276,7 +276,7 @@ ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
276
276
  == 0), or after each call of deflate(). If deflate returns Z_OK and with
277
277
  zero avail_out, it must be called again after making room in the output
278
278
  buffer because there might be more output pending. See deflatePending(),
279
- which can be used if desired to determine whether or not there is more ouput
279
+ which can be used if desired to determine whether or not there is more output
280
280
  in that case.
281
281
 
282
282
  Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to
@@ -660,7 +660,7 @@ ZEXTERN int ZEXPORT deflateGetDictionary OF((z_streamp strm,
660
660
  to dictionary. dictionary must have enough space, where 32768 bytes is
661
661
  always enough. If deflateGetDictionary() is called with dictionary equal to
662
662
  Z_NULL, then only the dictionary length is returned, and nothing is copied.
663
- Similary, if dictLength is Z_NULL, then it is not set.
663
+ Similarly, if dictLength is Z_NULL, then it is not set.
664
664
 
665
665
  deflateGetDictionary() may return a length less than the window size, even
666
666
  when more than the window size in input has been provided. It may return up
@@ -915,7 +915,7 @@ ZEXTERN int ZEXPORT inflateGetDictionary OF((z_streamp strm,
915
915
  to dictionary. dictionary must have enough space, where 32768 bytes is
916
916
  always enough. If inflateGetDictionary() is called with dictionary equal to
917
917
  Z_NULL, then only the dictionary length is returned, and nothing is copied.
918
- Similary, if dictLength is Z_NULL, then it is not set.
918
+ Similarly, if dictLength is Z_NULL, then it is not set.
919
919
 
920
920
  inflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the
921
921
  stream state is inconsistent.
@@ -1437,12 +1437,12 @@ ZEXTERN z_size_t ZEXPORT gzfread OF((voidp buf, z_size_t size, z_size_t nitems,
1437
1437
 
1438
1438
  In the event that the end of file is reached and only a partial item is
1439
1439
  available at the end, i.e. the remaining uncompressed data length is not a
1440
- multiple of size, then the final partial item is nevetheless read into buf
1440
+ multiple of size, then the final partial item is nevertheless read into buf
1441
1441
  and the end-of-file flag is set. The length of the partial item read is not
1442
1442
  provided, but could be inferred from the result of gztell(). This behavior
1443
1443
  is the same as the behavior of fread() implementations in common libraries,
1444
1444
  but it prevents the direct use of gzfread() to read a concurrently written
1445
- file, reseting and retrying on end-of-file, when size is not 1.
1445
+ file, resetting and retrying on end-of-file, when size is not 1.
1446
1446
  */
1447
1447
 
1448
1448
  ZEXTERN int ZEXPORT gzwrite OF((gzFile file, voidpc buf, unsigned len));
@@ -1913,7 +1913,7 @@ ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp));
1913
1913
  ZEXTERN const z_crc_t FAR * ZEXPORT get_crc_table OF((void));
1914
1914
  ZEXTERN int ZEXPORT inflateUndermine OF((z_streamp, int));
1915
1915
  ZEXTERN int ZEXPORT inflateValidate OF((z_streamp, int));
1916
- ZEXTERN unsigned long ZEXPORT inflateCodesUsed OF ((z_streamp));
1916
+ ZEXTERN unsigned long ZEXPORT inflateCodesUsed OF((z_streamp));
1917
1917
  ZEXTERN int ZEXPORT inflateResetKeep OF((z_streamp));
1918
1918
  ZEXTERN int ZEXPORT deflateResetKeep OF((z_streamp));
1919
1919
  #if defined(_WIN32) && !defined(Z_SOLO)