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
@@ -52,7 +52,7 @@
52
52
  #include "deflate.h"
53
53
 
54
54
  const char deflate_copyright[] =
55
- " deflate 1.2.12 Copyright 1995-2022 Jean-loup Gailly and Mark Adler ";
55
+ " deflate 1.2.13 Copyright 1995-2022 Jean-loup Gailly and Mark Adler ";
56
56
  /*
57
57
  If you use the zlib library in a product, an acknowledgment is welcome
58
58
  in the documentation of your product. If for some reason you cannot
@@ -87,13 +87,7 @@ local void lm_init OF((deflate_state *s));
87
87
  local void putShortMSB OF((deflate_state *s, uInt b));
88
88
  local void flush_pending OF((z_streamp strm));
89
89
  local unsigned read_buf OF((z_streamp strm, Bytef *buf, unsigned size));
90
- #ifdef ASMV
91
- # pragma message("Assembler code may have bugs -- use at your own risk")
92
- void match_init OF((void)); /* asm code initialization */
93
- uInt longest_match OF((deflate_state *s, IPos cur_match));
94
- #else
95
90
  local uInt longest_match OF((deflate_state *s, IPos cur_match));
96
- #endif
97
91
 
98
92
  #ifdef ZLIB_DEBUG
99
93
  local void check_match OF((deflate_state *s, IPos start, IPos match,
@@ -160,7 +154,7 @@ local const config configuration_table[10] = {
160
154
  * characters, so that a running hash key can be computed from the previous
161
155
  * key instead of complete recalculation each time.
162
156
  */
163
- #define UPDATE_HASH(s,h,c) (h = (((h)<<s->hash_shift) ^ (c)) & s->hash_mask)
157
+ #define UPDATE_HASH(s,h,c) (h = (((h) << s->hash_shift) ^ (c)) & s->hash_mask)
164
158
 
165
159
 
166
160
  /* ===========================================================================
@@ -191,9 +185,9 @@ local const config configuration_table[10] = {
191
185
  */
192
186
  #define CLEAR_HASH(s) \
193
187
  do { \
194
- s->head[s->hash_size-1] = NIL; \
188
+ s->head[s->hash_size - 1] = NIL; \
195
189
  zmemzero((Bytef *)s->head, \
196
- (unsigned)(s->hash_size-1)*sizeof(*s->head)); \
190
+ (unsigned)(s->hash_size - 1)*sizeof(*s->head)); \
197
191
  } while (0)
198
192
 
199
193
  /* ===========================================================================
@@ -285,6 +279,8 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
285
279
 
286
280
  if (windowBits < 0) { /* suppress zlib wrapper */
287
281
  wrap = 0;
282
+ if (windowBits < -15)
283
+ return Z_STREAM_ERROR;
288
284
  windowBits = -windowBits;
289
285
  }
290
286
  #ifdef GZIP
@@ -314,7 +310,7 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
314
310
  s->hash_bits = (uInt)memLevel + 7;
315
311
  s->hash_size = 1 << s->hash_bits;
316
312
  s->hash_mask = s->hash_size - 1;
317
- s->hash_shift = ((s->hash_bits+MIN_MATCH-1)/MIN_MATCH);
313
+ s->hash_shift = ((s->hash_bits + MIN_MATCH-1) / MIN_MATCH);
318
314
 
319
315
  s->window = (Bytef *) ZALLOC(strm, s->w_size, 2*sizeof(Byte));
320
316
  s->prev = (Posf *) ZALLOC(strm, s->w_size, sizeof(Pos));
@@ -340,11 +336,11 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
340
336
  * sym_buf value to read moves forward three bytes. From that symbol, up to
341
337
  * 31 bits are written to pending_buf. The closest the written pending_buf
342
338
  * bits gets to the next sym_buf symbol to read is just before the last
343
- * code is written. At that time, 31*(n-2) bits have been written, just
344
- * after 24*(n-2) bits have been consumed from sym_buf. sym_buf starts at
345
- * 8*n bits into pending_buf. (Note that the symbol buffer fills when n-1
339
+ * code is written. At that time, 31*(n - 2) bits have been written, just
340
+ * after 24*(n - 2) bits have been consumed from sym_buf. sym_buf starts at
341
+ * 8*n bits into pending_buf. (Note that the symbol buffer fills when n - 1
346
342
  * symbols are written.) The closest the writing gets to what is unread is
347
- * then n+14 bits. Here n is lit_bufsize, which is 16384 by default, and
343
+ * then n + 14 bits. Here n is lit_bufsize, which is 16384 by default, and
348
344
  * can range from 128 to 32768.
349
345
  *
350
346
  * Therefore, at a minimum, there are 142 bits of space between what is
@@ -390,7 +386,7 @@ int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy,
390
386
  /* =========================================================================
391
387
  * Check for a valid deflate stream state. Return 0 if ok, 1 if not.
392
388
  */
393
- local int deflateStateCheck (strm)
389
+ local int deflateStateCheck(strm)
394
390
  z_streamp strm;
395
391
  {
396
392
  deflate_state *s;
@@ -413,7 +409,7 @@ local int deflateStateCheck (strm)
413
409
  }
414
410
 
415
411
  /* ========================================================================= */
416
- int ZEXPORT deflateSetDictionary (strm, dictionary, dictLength)
412
+ int ZEXPORT deflateSetDictionary(strm, dictionary, dictLength)
417
413
  z_streamp strm;
418
414
  const Bytef *dictionary;
419
415
  uInt dictLength;
@@ -482,7 +478,7 @@ int ZEXPORT deflateSetDictionary (strm, dictionary, dictLength)
482
478
  }
483
479
 
484
480
  /* ========================================================================= */
485
- int ZEXPORT deflateGetDictionary (strm, dictionary, dictLength)
481
+ int ZEXPORT deflateGetDictionary(strm, dictionary, dictLength)
486
482
  z_streamp strm;
487
483
  Bytef *dictionary;
488
484
  uInt *dictLength;
@@ -504,7 +500,7 @@ int ZEXPORT deflateGetDictionary (strm, dictionary, dictLength)
504
500
  }
505
501
 
506
502
  /* ========================================================================= */
507
- int ZEXPORT deflateResetKeep (strm)
503
+ int ZEXPORT deflateResetKeep(strm)
508
504
  z_streamp strm;
509
505
  {
510
506
  deflate_state *s;
@@ -542,7 +538,7 @@ int ZEXPORT deflateResetKeep (strm)
542
538
  }
543
539
 
544
540
  /* ========================================================================= */
545
- int ZEXPORT deflateReset (strm)
541
+ int ZEXPORT deflateReset(strm)
546
542
  z_streamp strm;
547
543
  {
548
544
  int ret;
@@ -554,7 +550,7 @@ int ZEXPORT deflateReset (strm)
554
550
  }
555
551
 
556
552
  /* ========================================================================= */
557
- int ZEXPORT deflateSetHeader (strm, head)
553
+ int ZEXPORT deflateSetHeader(strm, head)
558
554
  z_streamp strm;
559
555
  gz_headerp head;
560
556
  {
@@ -565,7 +561,7 @@ int ZEXPORT deflateSetHeader (strm, head)
565
561
  }
566
562
 
567
563
  /* ========================================================================= */
568
- int ZEXPORT deflatePending (strm, pending, bits)
564
+ int ZEXPORT deflatePending(strm, pending, bits)
569
565
  unsigned *pending;
570
566
  int *bits;
571
567
  z_streamp strm;
@@ -579,7 +575,7 @@ int ZEXPORT deflatePending (strm, pending, bits)
579
575
  }
580
576
 
581
577
  /* ========================================================================= */
582
- int ZEXPORT deflatePrime (strm, bits, value)
578
+ int ZEXPORT deflatePrime(strm, bits, value)
583
579
  z_streamp strm;
584
580
  int bits;
585
581
  int value;
@@ -674,36 +670,50 @@ int ZEXPORT deflateTune(strm, good_length, max_lazy, nice_length, max_chain)
674
670
  }
675
671
 
676
672
  /* =========================================================================
677
- * For the default windowBits of 15 and memLevel of 8, this function returns
678
- * a close to exact, as well as small, upper bound on the compressed size.
679
- * They are coded as constants here for a reason--if the #define's are
680
- * changed, then this function needs to be changed as well. The return
681
- * value for 15 and 8 only works for those exact settings.
673
+ * For the default windowBits of 15 and memLevel of 8, this function returns a
674
+ * close to exact, as well as small, upper bound on the compressed size. This
675
+ * is an expansion of ~0.03%, plus a small constant.
676
+ *
677
+ * For any setting other than those defaults for windowBits and memLevel, one
678
+ * of two worst case bounds is returned. This is at most an expansion of ~4% or
679
+ * ~13%, plus a small constant.
682
680
  *
683
- * For any setting other than those defaults for windowBits and memLevel,
684
- * the value returned is a conservative worst case for the maximum expansion
685
- * resulting from using fixed blocks instead of stored blocks, which deflate
686
- * can emit on compressed data for some combinations of the parameters.
681
+ * Both the 0.03% and 4% derive from the overhead of stored blocks. The first
682
+ * one is for stored blocks of 16383 bytes (memLevel == 8), whereas the second
683
+ * is for stored blocks of 127 bytes (the worst case memLevel == 1). The
684
+ * expansion results from five bytes of header for each stored block.
687
685
  *
688
- * This function could be more sophisticated to provide closer upper bounds for
689
- * every combination of windowBits and memLevel. But even the conservative
690
- * upper bound of about 14% expansion does not seem onerous for output buffer
691
- * allocation.
686
+ * The larger expansion of 13% results from a window size less than or equal to
687
+ * the symbols buffer size (windowBits <= memLevel + 7). In that case some of
688
+ * the data being compressed may have slid out of the sliding window, impeding
689
+ * a stored block from being emitted. Then the only choice is a fixed or
690
+ * dynamic block, where a fixed block limits the maximum expansion to 9 bits
691
+ * per 8-bit byte, plus 10 bits for every block. The smallest block size for
692
+ * which this can occur is 255 (memLevel == 2).
693
+ *
694
+ * Shifts are used to approximate divisions, for speed.
692
695
  */
693
696
  uLong ZEXPORT deflateBound(strm, sourceLen)
694
697
  z_streamp strm;
695
698
  uLong sourceLen;
696
699
  {
697
700
  deflate_state *s;
698
- uLong complen, wraplen;
701
+ uLong fixedlen, storelen, wraplen;
702
+
703
+ /* upper bound for fixed blocks with 9-bit literals and length 255
704
+ (memLevel == 2, which is the lowest that may not use stored blocks) --
705
+ ~13% overhead plus a small constant */
706
+ fixedlen = sourceLen + (sourceLen >> 3) + (sourceLen >> 8) +
707
+ (sourceLen >> 9) + 4;
699
708
 
700
- /* conservative upper bound for compressed data */
701
- complen = sourceLen +
702
- ((sourceLen + 7) >> 3) + ((sourceLen + 63) >> 6) + 5;
709
+ /* upper bound for stored blocks with length 127 (memLevel == 1) --
710
+ ~4% overhead plus a small constant */
711
+ storelen = sourceLen + (sourceLen >> 5) + (sourceLen >> 7) +
712
+ (sourceLen >> 11) + 7;
703
713
 
704
- /* if can't get parameters, return conservative bound plus zlib wrapper */
714
+ /* if can't get parameters, return larger bound plus a zlib wrapper */
705
715
  if (deflateStateCheck(strm))
706
- return complen + 6;
716
+ return (fixedlen > storelen ? fixedlen : storelen) + 6;
707
717
 
708
718
  /* compute wrapper length */
709
719
  s = strm->state;
@@ -740,11 +750,12 @@ uLong ZEXPORT deflateBound(strm, sourceLen)
740
750
  wraplen = 6;
741
751
  }
742
752
 
743
- /* if not default parameters, return conservative bound */
753
+ /* if not default parameters, return one of the conservative bounds */
744
754
  if (s->w_bits != 15 || s->hash_bits != 8 + 7)
745
- return complen + wraplen;
755
+ return (s->w_bits <= s->hash_bits ? fixedlen : storelen) + wraplen;
746
756
 
747
- /* default settings: return tight bound for that case */
757
+ /* default settings: return tight bound for that case -- ~0.03% overhead
758
+ plus a small constant */
748
759
  return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) +
749
760
  (sourceLen >> 25) + 13 - 6 + wraplen;
750
761
  }
@@ -754,7 +765,7 @@ uLong ZEXPORT deflateBound(strm, sourceLen)
754
765
  * IN assertion: the stream state is correct and there is enough room in
755
766
  * pending_buf.
756
767
  */
757
- local void putShortMSB (s, b)
768
+ local void putShortMSB(s, b)
758
769
  deflate_state *s;
759
770
  uInt b;
760
771
  {
@@ -801,7 +812,7 @@ local void flush_pending(strm)
801
812
  } while (0)
802
813
 
803
814
  /* ========================================================================= */
804
- int ZEXPORT deflate (strm, flush)
815
+ int ZEXPORT deflate(strm, flush)
805
816
  z_streamp strm;
806
817
  int flush;
807
818
  {
@@ -856,7 +867,7 @@ int ZEXPORT deflate (strm, flush)
856
867
  s->status = BUSY_STATE;
857
868
  if (s->status == INIT_STATE) {
858
869
  /* zlib header */
859
- uInt header = (Z_DEFLATED + ((s->w_bits-8)<<4)) << 8;
870
+ uInt header = (Z_DEFLATED + ((s->w_bits - 8) << 4)) << 8;
860
871
  uInt level_flags;
861
872
 
862
873
  if (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2)
@@ -1116,7 +1127,7 @@ int ZEXPORT deflate (strm, flush)
1116
1127
  }
1117
1128
 
1118
1129
  /* ========================================================================= */
1119
- int ZEXPORT deflateEnd (strm)
1130
+ int ZEXPORT deflateEnd(strm)
1120
1131
  z_streamp strm;
1121
1132
  {
1122
1133
  int status;
@@ -1142,7 +1153,7 @@ int ZEXPORT deflateEnd (strm)
1142
1153
  * To simplify the source, this is not supported for 16-bit MSDOS (which
1143
1154
  * doesn't have enough memory anyway to duplicate compression states).
1144
1155
  */
1145
- int ZEXPORT deflateCopy (dest, source)
1156
+ int ZEXPORT deflateCopy(dest, source)
1146
1157
  z_streamp dest;
1147
1158
  z_streamp source;
1148
1159
  {
@@ -1231,7 +1242,7 @@ local unsigned read_buf(strm, buf, size)
1231
1242
  /* ===========================================================================
1232
1243
  * Initialize the "longest match" routines for a new zlib stream
1233
1244
  */
1234
- local void lm_init (s)
1245
+ local void lm_init(s)
1235
1246
  deflate_state *s;
1236
1247
  {
1237
1248
  s->window_size = (ulg)2L*s->w_size;
@@ -1252,11 +1263,6 @@ local void lm_init (s)
1252
1263
  s->match_length = s->prev_length = MIN_MATCH-1;
1253
1264
  s->match_available = 0;
1254
1265
  s->ins_h = 0;
1255
- #ifndef FASTEST
1256
- #ifdef ASMV
1257
- match_init(); /* initialize the asm code */
1258
- #endif
1259
- #endif
1260
1266
  }
1261
1267
 
1262
1268
  #ifndef FASTEST
@@ -1269,10 +1275,6 @@ local void lm_init (s)
1269
1275
  * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1
1270
1276
  * OUT assertion: the match length is not greater than s->lookahead.
1271
1277
  */
1272
- #ifndef ASMV
1273
- /* For 80x86 and 680x0, an optimized version will be provided in match.asm or
1274
- * match.S. The code will be functionally equivalent.
1275
- */
1276
1278
  local uInt longest_match(s, cur_match)
1277
1279
  deflate_state *s;
1278
1280
  IPos cur_match; /* current match */
@@ -1297,10 +1299,10 @@ local uInt longest_match(s, cur_match)
1297
1299
  */
1298
1300
  register Bytef *strend = s->window + s->strstart + MAX_MATCH - 1;
1299
1301
  register ush scan_start = *(ushf*)scan;
1300
- register ush scan_end = *(ushf*)(scan+best_len-1);
1302
+ register ush scan_end = *(ushf*)(scan + best_len - 1);
1301
1303
  #else
1302
1304
  register Bytef *strend = s->window + s->strstart + MAX_MATCH;
1303
- register Byte scan_end1 = scan[best_len-1];
1305
+ register Byte scan_end1 = scan[best_len - 1];
1304
1306
  register Byte scan_end = scan[best_len];
1305
1307
  #endif
1306
1308
 
@@ -1318,7 +1320,8 @@ local uInt longest_match(s, cur_match)
1318
1320
  */
1319
1321
  if ((uInt)nice_match > s->lookahead) nice_match = (int)s->lookahead;
1320
1322
 
1321
- Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead");
1323
+ Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,
1324
+ "need lookahead");
1322
1325
 
1323
1326
  do {
1324
1327
  Assert(cur_match < s->strstart, "no future");
@@ -1336,43 +1339,44 @@ local uInt longest_match(s, cur_match)
1336
1339
  /* This code assumes sizeof(unsigned short) == 2. Do not use
1337
1340
  * UNALIGNED_OK if your compiler uses a different size.
1338
1341
  */
1339
- if (*(ushf*)(match+best_len-1) != scan_end ||
1342
+ if (*(ushf*)(match + best_len - 1) != scan_end ||
1340
1343
  *(ushf*)match != scan_start) continue;
1341
1344
 
1342
1345
  /* It is not necessary to compare scan[2] and match[2] since they are
1343
1346
  * always equal when the other bytes match, given that the hash keys
1344
1347
  * are equal and that HASH_BITS >= 8. Compare 2 bytes at a time at
1345
- * strstart+3, +5, ... up to strstart+257. We check for insufficient
1348
+ * strstart + 3, + 5, up to strstart + 257. We check for insufficient
1346
1349
  * lookahead only every 4th comparison; the 128th check will be made
1347
- * at strstart+257. If MAX_MATCH-2 is not a multiple of 8, it is
1350
+ * at strstart + 257. If MAX_MATCH-2 is not a multiple of 8, it is
1348
1351
  * necessary to put more guard bytes at the end of the window, or
1349
1352
  * to check more often for insufficient lookahead.
1350
1353
  */
1351
1354
  Assert(scan[2] == match[2], "scan[2]?");
1352
1355
  scan++, match++;
1353
1356
  do {
1354
- } while (*(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
1355
- *(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
1356
- *(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
1357
- *(ushf*)(scan+=2) == *(ushf*)(match+=2) &&
1357
+ } while (*(ushf*)(scan += 2) == *(ushf*)(match += 2) &&
1358
+ *(ushf*)(scan += 2) == *(ushf*)(match += 2) &&
1359
+ *(ushf*)(scan += 2) == *(ushf*)(match += 2) &&
1360
+ *(ushf*)(scan += 2) == *(ushf*)(match += 2) &&
1358
1361
  scan < strend);
1359
1362
  /* The funny "do {}" generates better code on most compilers */
1360
1363
 
1361
- /* Here, scan <= window+strstart+257 */
1362
- Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
1364
+ /* Here, scan <= window + strstart + 257 */
1365
+ Assert(scan <= s->window + (unsigned)(s->window_size - 1),
1366
+ "wild scan");
1363
1367
  if (*scan == *match) scan++;
1364
1368
 
1365
- len = (MAX_MATCH - 1) - (int)(strend-scan);
1369
+ len = (MAX_MATCH - 1) - (int)(strend - scan);
1366
1370
  scan = strend - (MAX_MATCH-1);
1367
1371
 
1368
1372
  #else /* UNALIGNED_OK */
1369
1373
 
1370
- if (match[best_len] != scan_end ||
1371
- match[best_len-1] != scan_end1 ||
1372
- *match != *scan ||
1373
- *++match != scan[1]) continue;
1374
+ if (match[best_len] != scan_end ||
1375
+ match[best_len - 1] != scan_end1 ||
1376
+ *match != *scan ||
1377
+ *++match != scan[1]) continue;
1374
1378
 
1375
- /* The check at best_len-1 can be removed because it will be made
1379
+ /* The check at best_len - 1 can be removed because it will be made
1376
1380
  * again later. (This heuristic is not always a win.)
1377
1381
  * It is not necessary to compare scan[2] and match[2] since they
1378
1382
  * are always equal when the other bytes match, given that
@@ -1382,7 +1386,7 @@ local uInt longest_match(s, cur_match)
1382
1386
  Assert(*scan == *match, "match[2]?");
1383
1387
 
1384
1388
  /* We check for insufficient lookahead only every 8th comparison;
1385
- * the 256th check will be made at strstart+258.
1389
+ * the 256th check will be made at strstart + 258.
1386
1390
  */
1387
1391
  do {
1388
1392
  } while (*++scan == *++match && *++scan == *++match &&
@@ -1391,7 +1395,8 @@ local uInt longest_match(s, cur_match)
1391
1395
  *++scan == *++match && *++scan == *++match &&
1392
1396
  scan < strend);
1393
1397
 
1394
- Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
1398
+ Assert(scan <= s->window + (unsigned)(s->window_size - 1),
1399
+ "wild scan");
1395
1400
 
1396
1401
  len = MAX_MATCH - (int)(strend - scan);
1397
1402
  scan = strend - MAX_MATCH;
@@ -1403,9 +1408,9 @@ local uInt longest_match(s, cur_match)
1403
1408
  best_len = len;
1404
1409
  if (len >= nice_match) break;
1405
1410
  #ifdef UNALIGNED_OK
1406
- scan_end = *(ushf*)(scan+best_len-1);
1411
+ scan_end = *(ushf*)(scan + best_len - 1);
1407
1412
  #else
1408
- scan_end1 = scan[best_len-1];
1413
+ scan_end1 = scan[best_len - 1];
1409
1414
  scan_end = scan[best_len];
1410
1415
  #endif
1411
1416
  }
@@ -1415,7 +1420,6 @@ local uInt longest_match(s, cur_match)
1415
1420
  if ((uInt)best_len <= s->lookahead) return (uInt)best_len;
1416
1421
  return s->lookahead;
1417
1422
  }
1418
- #endif /* ASMV */
1419
1423
 
1420
1424
  #else /* FASTEST */
1421
1425
 
@@ -1436,7 +1440,8 @@ local uInt longest_match(s, cur_match)
1436
1440
  */
1437
1441
  Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever");
1438
1442
 
1439
- Assert((ulg)s->strstart <= s->window_size-MIN_LOOKAHEAD, "need lookahead");
1443
+ Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD,
1444
+ "need lookahead");
1440
1445
 
1441
1446
  Assert(cur_match < s->strstart, "no future");
1442
1447
 
@@ -1446,7 +1451,7 @@ local uInt longest_match(s, cur_match)
1446
1451
  */
1447
1452
  if (match[0] != scan[0] || match[1] != scan[1]) return MIN_MATCH-1;
1448
1453
 
1449
- /* The check at best_len-1 can be removed because it will be made
1454
+ /* The check at best_len - 1 can be removed because it will be made
1450
1455
  * again later. (This heuristic is not always a win.)
1451
1456
  * It is not necessary to compare scan[2] and match[2] since they
1452
1457
  * are always equal when the other bytes match, given that
@@ -1456,7 +1461,7 @@ local uInt longest_match(s, cur_match)
1456
1461
  Assert(*scan == *match, "match[2]?");
1457
1462
 
1458
1463
  /* We check for insufficient lookahead only every 8th comparison;
1459
- * the 256th check will be made at strstart+258.
1464
+ * the 256th check will be made at strstart + 258.
1460
1465
  */
1461
1466
  do {
1462
1467
  } while (*++scan == *++match && *++scan == *++match &&
@@ -1465,7 +1470,7 @@ local uInt longest_match(s, cur_match)
1465
1470
  *++scan == *++match && *++scan == *++match &&
1466
1471
  scan < strend);
1467
1472
 
1468
- Assert(scan <= s->window+(unsigned)(s->window_size-1), "wild scan");
1473
+ Assert(scan <= s->window + (unsigned)(s->window_size - 1), "wild scan");
1469
1474
 
1470
1475
  len = MAX_MATCH - (int)(strend - scan);
1471
1476
 
@@ -1501,7 +1506,7 @@ local void check_match(s, start, match, length)
1501
1506
  z_error("invalid match");
1502
1507
  }
1503
1508
  if (z_verbose > 1) {
1504
- fprintf(stderr,"\\[%d,%d]", start-match, length);
1509
+ fprintf(stderr,"\\[%d,%d]", start - match, length);
1505
1510
  do { putc(s->window[start++], stderr); } while (--length != 0);
1506
1511
  }
1507
1512
  }
@@ -1547,9 +1552,9 @@ local void fill_window(s)
1547
1552
  /* If the window is almost full and there is insufficient lookahead,
1548
1553
  * move the upper half to the lower one to make room in the upper half.
1549
1554
  */
1550
- if (s->strstart >= wsize+MAX_DIST(s)) {
1555
+ if (s->strstart >= wsize + MAX_DIST(s)) {
1551
1556
 
1552
- zmemcpy(s->window, s->window+wsize, (unsigned)wsize - more);
1557
+ zmemcpy(s->window, s->window + wsize, (unsigned)wsize - more);
1553
1558
  s->match_start -= wsize;
1554
1559
  s->strstart -= wsize; /* we now have strstart >= MAX_DIST */
1555
1560
  s->block_start -= (long) wsize;
@@ -1680,7 +1685,7 @@ local void fill_window(s)
1680
1685
  *
1681
1686
  * deflate_stored() is written to minimize the number of times an input byte is
1682
1687
  * copied. It is most efficient with large input and output buffers, which
1683
- * maximizes the opportunites to have a single copy from next_in to next_out.
1688
+ * maximizes the opportunities to have a single copy from next_in to next_out.
1684
1689
  */
1685
1690
  local block_state deflate_stored(s, flush)
1686
1691
  deflate_state *s;
@@ -1890,7 +1895,7 @@ local block_state deflate_fast(s, flush)
1890
1895
  if (s->lookahead == 0) break; /* flush the current block */
1891
1896
  }
1892
1897
 
1893
- /* Insert the string window[strstart .. strstart+2] in the
1898
+ /* Insert the string window[strstart .. strstart + 2] in the
1894
1899
  * dictionary, and set hash_head to the head of the hash chain:
1895
1900
  */
1896
1901
  hash_head = NIL;
@@ -1938,7 +1943,7 @@ local block_state deflate_fast(s, flush)
1938
1943
  s->strstart += s->match_length;
1939
1944
  s->match_length = 0;
1940
1945
  s->ins_h = s->window[s->strstart];
1941
- UPDATE_HASH(s, s->ins_h, s->window[s->strstart+1]);
1946
+ UPDATE_HASH(s, s->ins_h, s->window[s->strstart + 1]);
1942
1947
  #if MIN_MATCH != 3
1943
1948
  Call UPDATE_HASH() MIN_MATCH-3 more times
1944
1949
  #endif
@@ -1949,7 +1954,7 @@ local block_state deflate_fast(s, flush)
1949
1954
  } else {
1950
1955
  /* No match, output a literal byte */
1951
1956
  Tracevv((stderr,"%c", s->window[s->strstart]));
1952
- _tr_tally_lit (s, s->window[s->strstart], bflush);
1957
+ _tr_tally_lit(s, s->window[s->strstart], bflush);
1953
1958
  s->lookahead--;
1954
1959
  s->strstart++;
1955
1960
  }
@@ -1993,7 +1998,7 @@ local block_state deflate_slow(s, flush)
1993
1998
  if (s->lookahead == 0) break; /* flush the current block */
1994
1999
  }
1995
2000
 
1996
- /* Insert the string window[strstart .. strstart+2] in the
2001
+ /* Insert the string window[strstart .. strstart + 2] in the
1997
2002
  * dictionary, and set hash_head to the head of the hash chain:
1998
2003
  */
1999
2004
  hash_head = NIL;
@@ -2035,17 +2040,17 @@ local block_state deflate_slow(s, flush)
2035
2040
  uInt max_insert = s->strstart + s->lookahead - MIN_MATCH;
2036
2041
  /* Do not insert strings in hash table beyond this. */
2037
2042
 
2038
- check_match(s, s->strstart-1, s->prev_match, s->prev_length);
2043
+ check_match(s, s->strstart - 1, s->prev_match, s->prev_length);
2039
2044
 
2040
- _tr_tally_dist(s, s->strstart -1 - s->prev_match,
2045
+ _tr_tally_dist(s, s->strstart - 1 - s->prev_match,
2041
2046
  s->prev_length - MIN_MATCH, bflush);
2042
2047
 
2043
2048
  /* Insert in hash table all strings up to the end of the match.
2044
- * strstart-1 and strstart are already inserted. If there is not
2049
+ * strstart - 1 and strstart are already inserted. If there is not
2045
2050
  * enough lookahead, the last two strings are not inserted in
2046
2051
  * the hash table.
2047
2052
  */
2048
- s->lookahead -= s->prev_length-1;
2053
+ s->lookahead -= s->prev_length - 1;
2049
2054
  s->prev_length -= 2;
2050
2055
  do {
2051
2056
  if (++s->strstart <= max_insert) {
@@ -2063,8 +2068,8 @@ local block_state deflate_slow(s, flush)
2063
2068
  * single literal. If there was a match but the current match
2064
2069
  * is longer, truncate the previous match to a single literal.
2065
2070
  */
2066
- Tracevv((stderr,"%c", s->window[s->strstart-1]));
2067
- _tr_tally_lit(s, s->window[s->strstart-1], bflush);
2071
+ Tracevv((stderr,"%c", s->window[s->strstart - 1]));
2072
+ _tr_tally_lit(s, s->window[s->strstart - 1], bflush);
2068
2073
  if (bflush) {
2069
2074
  FLUSH_BLOCK_ONLY(s, 0);
2070
2075
  }
@@ -2082,8 +2087,8 @@ local block_state deflate_slow(s, flush)
2082
2087
  }
2083
2088
  Assert (flush != Z_NO_FLUSH, "no flush?");
2084
2089
  if (s->match_available) {
2085
- Tracevv((stderr,"%c", s->window[s->strstart-1]));
2086
- _tr_tally_lit(s, s->window[s->strstart-1], bflush);
2090
+ Tracevv((stderr,"%c", s->window[s->strstart - 1]));
2091
+ _tr_tally_lit(s, s->window[s->strstart - 1], bflush);
2087
2092
  s->match_available = 0;
2088
2093
  }
2089
2094
  s->insert = s->strstart < MIN_MATCH-1 ? s->strstart : MIN_MATCH-1;
@@ -2140,7 +2145,8 @@ local block_state deflate_rle(s, flush)
2140
2145
  if (s->match_length > s->lookahead)
2141
2146
  s->match_length = s->lookahead;
2142
2147
  }
2143
- Assert(scan <= s->window+(uInt)(s->window_size-1), "wild scan");
2148
+ Assert(scan <= s->window + (uInt)(s->window_size - 1),
2149
+ "wild scan");
2144
2150
  }
2145
2151
 
2146
2152
  /* Emit match if have run of MIN_MATCH or longer, else emit literal */
@@ -2155,7 +2161,7 @@ local block_state deflate_rle(s, flush)
2155
2161
  } else {
2156
2162
  /* No match, output a literal byte */
2157
2163
  Tracevv((stderr,"%c", s->window[s->strstart]));
2158
- _tr_tally_lit (s, s->window[s->strstart], bflush);
2164
+ _tr_tally_lit(s, s->window[s->strstart], bflush);
2159
2165
  s->lookahead--;
2160
2166
  s->strstart++;
2161
2167
  }
@@ -2195,7 +2201,7 @@ local block_state deflate_huff(s, flush)
2195
2201
  /* Output a literal byte */
2196
2202
  s->match_length = 0;
2197
2203
  Tracevv((stderr,"%c", s->window[s->strstart]));
2198
- _tr_tally_lit (s, s->window[s->strstart], bflush);
2204
+ _tr_tally_lit(s, s->window[s->strstart], bflush);
2199
2205
  s->lookahead--;
2200
2206
  s->strstart++;
2201
2207
  if (bflush) FLUSH_BLOCK(s, 0);
@@ -329,8 +329,8 @@ void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, charf *buf,
329
329
  # define _tr_tally_dist(s, distance, length, flush) \
330
330
  { uch len = (uch)(length); \
331
331
  ush dist = (ush)(distance); \
332
- s->sym_buf[s->sym_next++] = dist; \
333
- s->sym_buf[s->sym_next++] = dist >> 8; \
332
+ s->sym_buf[s->sym_next++] = (uch)dist; \
333
+ s->sym_buf[s->sym_next++] = (uch)(dist >> 8); \
334
334
  s->sym_buf[s->sym_next++] = len; \
335
335
  dist--; \
336
336
  s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \
@@ -30,7 +30,7 @@ local gzFile gz_open OF((const void *, int, const char *));
30
30
 
31
31
  The gz_strwinerror function does not change the current setting of
32
32
  GetLastError. */
33
- char ZLIB_INTERNAL *gz_strwinerror (error)
33
+ char ZLIB_INTERNAL *gz_strwinerror(error)
34
34
  DWORD error;
35
35
  {
36
36
  static char buf[1024];
@@ -157,11 +157,9 @@ local int gz_look(state)
157
157
  the output buffer is larger than the input buffer, which also assures
158
158
  space for gzungetc() */
159
159
  state->x.next = state->out;
160
- if (strm->avail_in) {
161
- memcpy(state->x.next, strm->next_in, strm->avail_in);
162
- state->x.have = strm->avail_in;
163
- strm->avail_in = 0;
164
- }
160
+ memcpy(state->x.next, strm->next_in, strm->avail_in);
161
+ state->x.have = strm->avail_in;
162
+ strm->avail_in = 0;
165
163
  state->how = COPY;
166
164
  state->direct = 1;
167
165
  return 0;
@@ -474,7 +474,7 @@ int ZEXPORTVA gzprintf(gzFile file, const char *format, ...)
474
474
  #else /* !STDC && !Z_HAVE_STDARG_H */
475
475
 
476
476
  /* -- see zlib.h -- */
477
- int ZEXPORTVA gzprintf (file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
477
+ int ZEXPORTVA gzprintf(file, format, a1, a2, a3, a4, a5, a6, a7, a8, a9, a10,
478
478
  a11, a12, a13, a14, a15, a16, a17, a18, a19, a20)
479
479
  gzFile file;
480
480
  const char *format;