grpc 1.74.1 → 1.75.0.pre1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (368) hide show
  1. checksums.yaml +4 -4
  2. data/Makefile +83 -41
  3. data/include/grpc/credentials.h +7 -1
  4. data/src/core/call/client_call.cc +4 -4
  5. data/src/core/call/filter_fusion.h +1230 -0
  6. data/src/core/call/metadata.cc +22 -0
  7. data/src/core/call/metadata.h +24 -2
  8. data/src/core/channelz/channelz.cc +10 -17
  9. data/src/core/channelz/channelz.h +58 -19
  10. data/src/core/channelz/channelz_registry.cc +0 -162
  11. data/src/core/channelz/channelz_registry.h +14 -7
  12. data/src/core/channelz/property_list.cc +19 -23
  13. data/src/core/channelz/property_list.h +3 -1
  14. data/src/core/channelz/v2tov1/convert.cc +683 -0
  15. data/src/core/channelz/v2tov1/convert.h +58 -0
  16. data/src/core/channelz/v2tov1/legacy_api.cc +425 -0
  17. data/src/core/channelz/v2tov1/legacy_api.h +32 -0
  18. data/src/core/channelz/v2tov1/property_list.cc +118 -0
  19. data/src/core/channelz/v2tov1/property_list.h +52 -0
  20. data/src/core/client_channel/client_channel_filter.cc +5 -4
  21. data/src/core/client_channel/client_channel_filter.h +2 -2
  22. data/src/core/client_channel/client_channel_internal.h +2 -1
  23. data/src/core/client_channel/load_balanced_call_destination.cc +6 -5
  24. data/src/core/client_channel/subchannel.cc +14 -6
  25. data/src/core/client_channel/subchannel.h +2 -0
  26. data/src/core/config/core_configuration.cc +3 -1
  27. data/src/core/config/core_configuration.h +12 -0
  28. data/src/core/credentials/transport/alts/alts_credentials.cc +5 -0
  29. data/src/core/credentials/transport/alts/check_gcp_environment_windows.cc +2 -0
  30. data/src/core/credentials/transport/channel_creds_registry_init.cc +3 -1
  31. data/src/core/credentials/transport/ssl/ssl_credentials.cc +1 -1
  32. data/src/core/credentials/transport/ssl/ssl_security_connector.cc +8 -3
  33. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.cc +29 -24
  34. data/src/core/credentials/transport/tls/grpc_tls_certificate_distributor.h +19 -8
  35. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.cc +96 -54
  36. data/src/core/credentials/transport/tls/grpc_tls_certificate_provider.h +15 -2
  37. data/src/core/credentials/transport/tls/spiffe_utils.cc +371 -0
  38. data/src/core/credentials/transport/tls/spiffe_utils.h +171 -0
  39. data/src/core/credentials/transport/tls/ssl_utils.cc +11 -10
  40. data/src/core/credentials/transport/tls/ssl_utils.h +4 -2
  41. data/src/core/credentials/transport/tls/tls_credentials.cc +2 -0
  42. data/src/core/credentials/transport/tls/tls_security_connector.cc +11 -26
  43. data/src/core/credentials/transport/tls/tls_security_connector.h +12 -12
  44. data/src/core/ext/filters/backend_metrics/backend_metric_filter.cc +1 -2
  45. data/src/core/ext/filters/http/client/http_client_filter.cc +3 -6
  46. data/src/core/ext/filters/http/client_authority_filter.cc +1 -2
  47. data/src/core/ext/filters/http/message_compress/compression_filter.cc +8 -8
  48. data/src/core/ext/filters/http/server/http_server_filter.cc +3 -6
  49. data/src/core/ext/filters/message_size/message_size_filter.cc +4 -4
  50. data/src/core/ext/filters/rbac/rbac_filter.cc +1 -1
  51. data/src/core/ext/filters/stateful_session/stateful_session_filter.cc +3 -5
  52. data/src/core/ext/transport/chttp2/transport/chttp2_transport.cc +3 -2
  53. data/src/core/ext/transport/chttp2/transport/flow_control.cc +1 -0
  54. data/src/core/ext/transport/chttp2/transport/flow_control.h +1 -0
  55. data/src/core/ext/transport/chttp2/transport/frame.cc +89 -6
  56. data/src/core/ext/transport/chttp2/transport/frame.h +38 -0
  57. data/src/core/ext/transport/chttp2/transport/header_assembler.h +5 -14
  58. data/src/core/ext/transport/chttp2/transport/hpack_parser.h +4 -1
  59. data/src/core/ext/transport/chttp2/transport/http2_client_transport.cc +294 -78
  60. data/src/core/ext/transport/chttp2/transport/http2_client_transport.h +128 -9
  61. data/src/core/ext/transport/chttp2/transport/http2_settings.cc +11 -38
  62. data/src/core/ext/transport/chttp2/transport/http2_settings.h +52 -35
  63. data/src/core/ext/transport/chttp2/transport/http2_settings_manager.cc +61 -0
  64. data/src/core/ext/transport/chttp2/transport/http2_settings_manager.h +142 -0
  65. data/src/core/ext/transport/chttp2/transport/http2_transport.cc +81 -3
  66. data/src/core/ext/transport/chttp2/transport/http2_transport.h +12 -1
  67. data/src/core/ext/transport/chttp2/transport/message_assembler.h +2 -2
  68. data/src/core/ext/transport/chttp2/transport/parsing.cc +2 -1
  69. data/src/core/ext/transport/chttp2/transport/ping_promise.cc +2 -1
  70. data/src/core/ext/transport/chttp2/transport/ping_promise.h +22 -5
  71. data/src/core/ext/transport/chttp2/transport/stream_data_queue.h +607 -0
  72. data/src/core/ext/transport/chttp2/transport/writable_streams.h +254 -0
  73. data/src/core/ext/transport/chttp2/transport/writing.cc +6 -4
  74. data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb.h +4959 -0
  75. data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.c +1111 -0
  76. data/src/core/ext/upb-gen/src/proto/grpc/channelz/channelz.upb_minitable.h +108 -0
  77. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb.h +142 -54
  78. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.c +18 -14
  79. data/src/core/ext/upb-gen/src/proto/grpc/channelz/v2/property_list.upb_minitable.h +2 -2
  80. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.c +716 -0
  81. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/channelz.upbdefs.h +227 -0
  82. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.c +86 -88
  83. data/src/core/ext/upbdefs-gen/src/proto/grpc/channelz/v2/property_list.upbdefs.h +2 -2
  84. data/src/core/filter/auth/auth_filters.h +2 -2
  85. data/src/core/filter/fused_filters.cc +154 -0
  86. data/src/core/handshaker/security/legacy_secure_endpoint.cc +1 -1
  87. data/src/core/handshaker/security/pipelined_secure_endpoint.cc +965 -0
  88. data/src/core/handshaker/security/secure_endpoint.cc +28 -13
  89. data/src/core/handshaker/security/secure_endpoint.h +8 -0
  90. data/src/core/lib/channel/promise_based_filter.cc +15 -25
  91. data/src/core/lib/channel/promise_based_filter.h +6 -5
  92. data/src/core/lib/event_engine/ares_resolver.h +3 -1
  93. data/src/core/lib/event_engine/cf_engine/cf_engine.cc +9 -5
  94. data/src/core/lib/event_engine/cf_engine/cf_engine.h +2 -1
  95. data/src/core/lib/event_engine/cf_engine/cfsocket_listener.cc +263 -0
  96. data/src/core/lib/event_engine/cf_engine/cfsocket_listener.h +107 -0
  97. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.cc +31 -3
  98. data/src/core/lib/event_engine/cf_engine/cfstream_endpoint.h +12 -0
  99. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.cc +12 -10
  100. data/src/core/lib/event_engine/posix_engine/ev_epoll1_linux.h +6 -4
  101. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.cc +15 -14
  102. data/src/core/lib/event_engine/posix_engine/ev_poll_posix.h +7 -5
  103. data/src/core/lib/event_engine/posix_engine/event_poller.h +0 -8
  104. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.cc +11 -5
  105. data/src/core/lib/event_engine/posix_engine/event_poller_posix_default.h +3 -2
  106. data/src/core/lib/event_engine/posix_engine/grpc_polled_fd_posix.h +1 -0
  107. data/src/core/lib/event_engine/posix_engine/lockfree_event.cc +4 -4
  108. data/src/core/lib/event_engine/posix_engine/lockfree_event.h +3 -4
  109. data/src/core/lib/event_engine/posix_engine/posix_endpoint.cc +2 -2
  110. data/src/core/lib/event_engine/posix_engine/posix_engine.cc +188 -199
  111. data/src/core/lib/event_engine/posix_engine/posix_engine.h +30 -45
  112. data/src/core/lib/event_engine/posix_engine/posix_engine_listener.cc +1 -1
  113. data/src/core/lib/event_engine/posix_engine/tcp_socket_utils.h +1 -1
  114. data/src/core/lib/event_engine/windows/grpc_polled_fd_windows.cc +2 -1
  115. data/src/core/lib/experiments/experiments.cc +120 -6
  116. data/src/core/lib/experiments/experiments.h +46 -3
  117. data/src/core/lib/iomgr/combiner.cc +1 -1
  118. data/src/core/lib/iomgr/exec_ctx.h +3 -9
  119. data/src/core/lib/iomgr/socket_mutator.cc +1 -1
  120. data/src/core/lib/iomgr/socket_utils_posix.cc +1 -1
  121. data/src/core/lib/iomgr/socket_utils_posix.h +1 -1
  122. data/src/core/lib/iomgr/tcp_client_posix.cc +1 -1
  123. data/src/core/lib/iomgr/tcp_posix.cc +3 -3
  124. data/src/core/lib/promise/activity.h +2 -2
  125. data/src/core/lib/promise/mpsc.cc +8 -8
  126. data/src/core/lib/promise/party.cc +7 -7
  127. data/src/core/lib/promise/party.h +4 -4
  128. data/src/core/lib/promise/poll.h +10 -0
  129. data/src/core/lib/resource_quota/memory_quota.cc +90 -3
  130. data/src/core/lib/resource_quota/memory_quota.h +20 -9
  131. data/src/core/lib/resource_quota/periodic_update.cc +14 -0
  132. data/src/core/lib/resource_quota/periodic_update.h +8 -0
  133. data/src/core/lib/resource_quota/resource_quota.cc +15 -4
  134. data/src/core/lib/resource_quota/resource_quota.h +3 -0
  135. data/src/core/lib/security/authorization/grpc_server_authz_filter.cc +1 -2
  136. data/src/core/lib/surface/call.cc +5 -5
  137. data/src/core/lib/surface/call.h +6 -5
  138. data/src/core/lib/surface/completion_queue.cc +2 -4
  139. data/src/core/lib/surface/filter_stack_call.cc +1 -1
  140. data/src/core/lib/surface/version.cc +2 -2
  141. data/src/core/lib/transport/promise_endpoint.cc +2 -2
  142. data/src/core/lib/transport/promise_endpoint.h +3 -3
  143. data/src/core/load_balancing/endpoint_list.cc +29 -2
  144. data/src/core/load_balancing/grpclb/client_load_reporting_filter.cc +3 -3
  145. data/src/core/load_balancing/grpclb/client_load_reporting_filter.h +1 -1
  146. data/src/core/load_balancing/pick_first/pick_first.cc +12 -5
  147. data/src/core/load_balancing/xds/xds_cluster_impl.cc +5 -3
  148. data/src/core/net/socket_mutator.cc +19 -0
  149. data/src/core/net/socket_mutator.h +25 -0
  150. data/src/core/plugin_registry/grpc_plugin_registry.cc +6 -0
  151. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver.h +6 -1
  152. data/src/core/resolver/dns/c_ares/grpc_ares_ev_driver_windows.cc +2 -1
  153. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.cc +8 -5
  154. data/src/core/resolver/dns/c_ares/grpc_ares_wrapper.h +2 -1
  155. data/src/core/resolver/xds/xds_dependency_manager.cc +1 -1
  156. data/src/core/server/server.cc +1 -1
  157. data/src/core/server/server_call_tracer_filter.cc +0 -66
  158. data/src/core/server/server_call_tracer_filter.h +64 -0
  159. data/src/core/server/server_config_selector_filter.cc +1 -1
  160. data/src/core/service_config/service_config_channel_arg_filter.cc +3 -60
  161. data/src/core/service_config/service_config_channel_arg_filter.h +82 -0
  162. data/src/core/telemetry/call_tracer.cc +20 -14
  163. data/src/core/telemetry/call_tracer.h +22 -17
  164. data/src/core/telemetry/metrics.h +8 -8
  165. data/src/core/telemetry/stats_data.cc +151 -151
  166. data/src/core/telemetry/stats_data.h +87 -87
  167. data/src/core/transport/auth_context.cc +20 -0
  168. data/src/core/transport/auth_context.h +4 -0
  169. data/src/core/transport/auth_context_comparator_registry.h +69 -0
  170. data/src/core/tsi/alts/handshaker/alts_handshaker_client.cc +2 -3
  171. data/src/core/tsi/ssl_transport_security.cc +202 -32
  172. data/src/core/tsi/ssl_transport_security.h +19 -10
  173. data/src/core/tsi/ssl_transport_security_utils.cc +21 -0
  174. data/src/core/tsi/ssl_transport_security_utils.h +4 -0
  175. data/src/core/util/http_client/httpcli_security_connector.cc +3 -1
  176. data/src/core/util/latent_see.cc +178 -146
  177. data/src/core/util/latent_see.h +245 -188
  178. data/src/core/util/single_set_ptr.h +5 -2
  179. data/src/core/util/useful.h +91 -0
  180. data/src/core/util/windows/directory_reader.cc +1 -0
  181. data/src/core/util/windows/thd.cc +1 -3
  182. data/src/core/util/work_serializer.cc +1 -1
  183. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.cc +32 -5
  184. data/src/core/xds/grpc/file_watcher_certificate_provider_factory.h +5 -0
  185. data/src/core/xds/grpc/xds_certificate_provider.cc +5 -6
  186. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
  187. data/src/ruby/lib/grpc/version.rb +1 -1
  188. data/third_party/cares/cares/include/ares.h +925 -460
  189. data/third_party/cares/cares/include/ares_dns.h +86 -71
  190. data/third_party/cares/cares/include/ares_dns_record.h +1118 -0
  191. data/third_party/cares/cares/include/ares_nameser.h +215 -189
  192. data/third_party/cares/cares/include/ares_version.h +37 -14
  193. data/third_party/cares/cares/src/lib/ares_addrinfo2hostent.c +305 -0
  194. data/third_party/cares/cares/src/lib/ares_addrinfo_localhost.c +245 -0
  195. data/third_party/cares/cares/src/lib/ares_android.c +216 -164
  196. data/third_party/cares/cares/src/lib/ares_android.h +25 -14
  197. data/third_party/cares/cares/src/lib/ares_cancel.c +68 -44
  198. data/third_party/cares/cares/src/lib/ares_close_sockets.c +137 -0
  199. data/third_party/cares/cares/src/lib/ares_conn.c +511 -0
  200. data/third_party/cares/cares/src/lib/ares_conn.h +196 -0
  201. data/third_party/cares/cares/src/lib/ares_cookie.c +461 -0
  202. data/third_party/cares/cares/src/lib/ares_data.c +93 -181
  203. data/third_party/cares/cares/src/lib/ares_data.h +50 -39
  204. data/third_party/cares/cares/src/lib/ares_destroy.c +127 -89
  205. data/third_party/cares/cares/src/lib/ares_free_hostent.c +35 -24
  206. data/third_party/cares/cares/src/lib/ares_free_string.c +24 -16
  207. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +45 -38
  208. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +549 -663
  209. data/third_party/cares/cares/src/lib/ares_getenv.c +25 -15
  210. data/third_party/cares/cares/src/lib/ares_getenv.h +26 -18
  211. data/third_party/cares/cares/src/lib/ares_gethostbyaddr.c +163 -221
  212. data/third_party/cares/cares/src/lib/ares_gethostbyname.c +222 -223
  213. data/third_party/cares/cares/src/lib/ares_getnameinfo.c +328 -338
  214. data/third_party/cares/cares/src/lib/ares_hosts_file.c +952 -0
  215. data/third_party/cares/cares/src/lib/ares_inet_net_pton.h +25 -19
  216. data/third_party/cares/cares/src/lib/ares_init.c +425 -2091
  217. data/third_party/cares/cares/src/lib/ares_ipv6.h +63 -33
  218. data/third_party/cares/cares/src/lib/ares_library_init.c +110 -54
  219. data/third_party/cares/cares/src/lib/ares_metrics.c +261 -0
  220. data/third_party/cares/cares/src/lib/ares_options.c +418 -332
  221. data/third_party/cares/cares/src/lib/ares_parse_into_addrinfo.c +179 -0
  222. data/third_party/cares/cares/src/lib/ares_private.h +558 -356
  223. data/third_party/cares/cares/src/lib/ares_process.c +1224 -1369
  224. data/third_party/cares/cares/src/lib/ares_qcache.c +430 -0
  225. data/third_party/cares/cares/src/lib/ares_query.c +126 -121
  226. data/third_party/cares/cares/src/lib/ares_search.c +564 -262
  227. data/third_party/cares/cares/src/lib/ares_send.c +264 -93
  228. data/third_party/cares/cares/src/lib/ares_set_socket_functions.c +588 -0
  229. data/third_party/cares/cares/src/lib/ares_setup.h +115 -111
  230. data/third_party/cares/cares/src/lib/ares_socket.c +425 -0
  231. data/third_party/cares/cares/src/lib/ares_socket.h +163 -0
  232. data/third_party/cares/cares/src/lib/ares_sortaddrinfo.c +447 -0
  233. data/third_party/cares/cares/src/lib/ares_strerror.c +83 -48
  234. data/third_party/cares/cares/src/lib/ares_sysconfig.c +639 -0
  235. data/third_party/cares/cares/src/lib/ares_sysconfig_files.c +839 -0
  236. data/third_party/cares/cares/src/lib/ares_sysconfig_mac.c +373 -0
  237. data/third_party/cares/cares/src/lib/ares_sysconfig_win.c +621 -0
  238. data/third_party/cares/cares/src/lib/ares_timeout.c +136 -73
  239. data/third_party/cares/cares/src/lib/ares_update_servers.c +1362 -0
  240. data/third_party/cares/cares/src/lib/ares_version.c +29 -4
  241. data/third_party/cares/cares/src/lib/config-dos.h +88 -89
  242. data/third_party/cares/cares/src/lib/config-win32.h +122 -77
  243. data/third_party/cares/cares/src/lib/dsa/ares_array.c +394 -0
  244. data/third_party/cares/cares/src/lib/dsa/ares_htable.c +447 -0
  245. data/third_party/cares/cares/src/lib/dsa/ares_htable.h +174 -0
  246. data/third_party/cares/cares/src/lib/dsa/ares_htable_asvp.c +224 -0
  247. data/third_party/cares/cares/src/lib/dsa/ares_htable_dict.c +228 -0
  248. data/third_party/cares/cares/src/lib/dsa/ares_htable_strvp.c +210 -0
  249. data/third_party/cares/cares/src/lib/dsa/ares_htable_szvp.c +188 -0
  250. data/third_party/cares/cares/src/lib/dsa/ares_htable_vpstr.c +186 -0
  251. data/third_party/cares/cares/src/lib/dsa/ares_htable_vpvp.c +194 -0
  252. data/third_party/cares/cares/src/lib/dsa/ares_llist.c +382 -0
  253. data/third_party/cares/cares/src/lib/dsa/ares_slist.c +479 -0
  254. data/third_party/cares/cares/src/lib/dsa/ares_slist.h +207 -0
  255. data/third_party/cares/cares/src/lib/event/ares_event.h +191 -0
  256. data/third_party/cares/cares/src/lib/event/ares_event_configchg.c +743 -0
  257. data/third_party/cares/cares/src/lib/event/ares_event_epoll.c +192 -0
  258. data/third_party/cares/cares/src/lib/event/ares_event_kqueue.c +248 -0
  259. data/third_party/cares/cares/src/lib/event/ares_event_poll.c +140 -0
  260. data/third_party/cares/cares/src/lib/event/ares_event_select.c +159 -0
  261. data/third_party/cares/cares/src/lib/event/ares_event_thread.c +567 -0
  262. data/third_party/cares/cares/src/lib/event/ares_event_wake_pipe.c +166 -0
  263. data/third_party/cares/cares/src/lib/event/ares_event_win32.c +978 -0
  264. data/third_party/cares/cares/src/lib/event/ares_event_win32.h +161 -0
  265. data/third_party/cares/cares/src/lib/include/ares_array.h +276 -0
  266. data/third_party/cares/cares/src/lib/include/ares_buf.h +732 -0
  267. data/third_party/cares/cares/src/lib/include/ares_htable_asvp.h +130 -0
  268. data/third_party/cares/cares/src/lib/include/ares_htable_dict.h +123 -0
  269. data/third_party/cares/cares/src/lib/include/ares_htable_strvp.h +130 -0
  270. data/third_party/cares/cares/src/lib/include/ares_htable_szvp.h +118 -0
  271. data/third_party/cares/cares/src/lib/include/ares_htable_vpstr.h +111 -0
  272. data/third_party/cares/cares/src/lib/include/ares_htable_vpvp.h +128 -0
  273. data/third_party/cares/cares/src/lib/include/ares_llist.h +239 -0
  274. data/third_party/cares/cares/src/lib/include/ares_mem.h +38 -0
  275. data/third_party/cares/cares/src/lib/include/ares_str.h +244 -0
  276. data/third_party/cares/cares/src/lib/inet_net_pton.c +202 -157
  277. data/third_party/cares/cares/src/lib/inet_ntop.c +87 -69
  278. data/third_party/cares/cares/src/lib/legacy/ares_create_query.c +78 -0
  279. data/third_party/cares/cares/src/lib/legacy/ares_expand_name.c +99 -0
  280. data/third_party/cares/cares/src/lib/legacy/ares_expand_string.c +107 -0
  281. data/third_party/cares/cares/src/lib/legacy/ares_fds.c +80 -0
  282. data/third_party/cares/cares/src/lib/legacy/ares_getsock.c +85 -0
  283. data/third_party/cares/cares/src/lib/legacy/ares_parse_a_reply.c +107 -0
  284. data/third_party/cares/cares/src/lib/legacy/ares_parse_aaaa_reply.c +109 -0
  285. data/third_party/cares/cares/src/lib/legacy/ares_parse_caa_reply.c +137 -0
  286. data/third_party/cares/cares/src/lib/legacy/ares_parse_mx_reply.c +110 -0
  287. data/third_party/cares/cares/src/lib/legacy/ares_parse_naptr_reply.c +132 -0
  288. data/third_party/cares/cares/src/lib/legacy/ares_parse_ns_reply.c +154 -0
  289. data/third_party/cares/cares/src/lib/legacy/ares_parse_ptr_reply.c +213 -0
  290. data/third_party/cares/cares/src/lib/legacy/ares_parse_soa_reply.c +115 -0
  291. data/third_party/cares/cares/src/lib/legacy/ares_parse_srv_reply.c +114 -0
  292. data/third_party/cares/cares/src/lib/legacy/ares_parse_txt_reply.c +144 -0
  293. data/third_party/cares/cares/src/lib/legacy/ares_parse_uri_reply.c +113 -0
  294. data/third_party/cares/cares/src/lib/record/ares_dns_mapping.c +982 -0
  295. data/third_party/cares/cares/src/lib/record/ares_dns_multistring.c +307 -0
  296. data/third_party/cares/cares/src/lib/record/ares_dns_multistring.h +72 -0
  297. data/third_party/cares/cares/src/lib/record/ares_dns_name.c +673 -0
  298. data/third_party/cares/cares/src/lib/record/ares_dns_parse.c +1329 -0
  299. data/third_party/cares/cares/src/lib/record/ares_dns_private.h +273 -0
  300. data/third_party/cares/cares/src/lib/record/ares_dns_record.c +1661 -0
  301. data/third_party/cares/cares/src/lib/record/ares_dns_write.c +1229 -0
  302. data/third_party/cares/cares/src/lib/str/ares_buf.c +1498 -0
  303. data/third_party/cares/cares/src/lib/str/ares_str.c +508 -0
  304. data/third_party/cares/cares/src/lib/str/ares_strsplit.c +90 -0
  305. data/third_party/cares/cares/src/lib/str/ares_strsplit.h +51 -0
  306. data/third_party/cares/cares/src/lib/thirdparty/apple/dnsinfo.h +122 -0
  307. data/third_party/cares/cares/src/lib/util/ares_iface_ips.c +628 -0
  308. data/third_party/cares/cares/src/lib/util/ares_iface_ips.h +139 -0
  309. data/third_party/cares/cares/src/lib/util/ares_math.c +158 -0
  310. data/third_party/cares/cares/src/lib/util/ares_math.h +45 -0
  311. data/third_party/cares/cares/src/lib/util/ares_rand.c +389 -0
  312. data/third_party/cares/cares/src/lib/util/ares_rand.h +36 -0
  313. data/third_party/cares/cares/src/lib/util/ares_threads.c +614 -0
  314. data/third_party/cares/cares/src/lib/util/ares_threads.h +60 -0
  315. data/third_party/cares/cares/src/lib/util/ares_time.h +48 -0
  316. data/third_party/cares/cares/src/lib/util/ares_timeval.c +95 -0
  317. data/third_party/cares/cares/src/lib/util/ares_uri.c +1626 -0
  318. data/third_party/cares/cares/src/lib/util/ares_uri.h +252 -0
  319. data/third_party/cares/cares/src/lib/windows_port.c +16 -9
  320. metadata +121 -49
  321. data/src/core/util/ring_buffer.h +0 -122
  322. data/third_party/cares/cares/include/ares_rules.h +0 -125
  323. data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +0 -266
  324. data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +0 -240
  325. data/third_party/cares/cares/src/lib/ares__close_sockets.c +0 -61
  326. data/third_party/cares/cares/src/lib/ares__get_hostent.c +0 -260
  327. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +0 -229
  328. data/third_party/cares/cares/src/lib/ares__read_line.c +0 -73
  329. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +0 -258
  330. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +0 -507
  331. data/third_party/cares/cares/src/lib/ares__timeval.c +0 -111
  332. data/third_party/cares/cares/src/lib/ares_create_query.c +0 -197
  333. data/third_party/cares/cares/src/lib/ares_expand_name.c +0 -311
  334. data/third_party/cares/cares/src/lib/ares_expand_string.c +0 -67
  335. data/third_party/cares/cares/src/lib/ares_fds.c +0 -59
  336. data/third_party/cares/cares/src/lib/ares_getsock.c +0 -66
  337. data/third_party/cares/cares/src/lib/ares_iphlpapi.h +0 -221
  338. data/third_party/cares/cares/src/lib/ares_llist.c +0 -63
  339. data/third_party/cares/cares/src/lib/ares_llist.h +0 -39
  340. data/third_party/cares/cares/src/lib/ares_mkquery.c +0 -24
  341. data/third_party/cares/cares/src/lib/ares_nowarn.c +0 -260
  342. data/third_party/cares/cares/src/lib/ares_nowarn.h +0 -61
  343. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +0 -90
  344. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +0 -92
  345. data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +0 -199
  346. data/third_party/cares/cares/src/lib/ares_parse_mx_reply.c +0 -164
  347. data/third_party/cares/cares/src/lib/ares_parse_naptr_reply.c +0 -183
  348. data/third_party/cares/cares/src/lib/ares_parse_ns_reply.c +0 -177
  349. data/third_party/cares/cares/src/lib/ares_parse_ptr_reply.c +0 -228
  350. data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +0 -179
  351. data/third_party/cares/cares/src/lib/ares_parse_srv_reply.c +0 -168
  352. data/third_party/cares/cares/src/lib/ares_parse_txt_reply.c +0 -214
  353. data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +0 -184
  354. data/third_party/cares/cares/src/lib/ares_platform.c +0 -11042
  355. data/third_party/cares/cares/src/lib/ares_platform.h +0 -43
  356. data/third_party/cares/cares/src/lib/ares_rand.c +0 -279
  357. data/third_party/cares/cares/src/lib/ares_strcasecmp.c +0 -66
  358. data/third_party/cares/cares/src/lib/ares_strcasecmp.h +0 -30
  359. data/third_party/cares/cares/src/lib/ares_strdup.c +0 -42
  360. data/third_party/cares/cares/src/lib/ares_strdup.h +0 -24
  361. data/third_party/cares/cares/src/lib/ares_strsplit.c +0 -94
  362. data/third_party/cares/cares/src/lib/ares_strsplit.h +0 -42
  363. data/third_party/cares/cares/src/lib/ares_writev.c +0 -79
  364. data/third_party/cares/cares/src/lib/ares_writev.h +0 -36
  365. data/third_party/cares/cares/src/lib/bitncmp.c +0 -59
  366. data/third_party/cares/cares/src/lib/bitncmp.h +0 -26
  367. data/third_party/cares/cares/src/lib/setup_once.h +0 -554
  368. data/third_party/cares/cares/src/tools/ares_getopt.h +0 -53
@@ -1,4 +1,3 @@
1
-
2
1
  /*
3
2
  * Copyright (c) 2012 by Gilles Chehade <gilles@openbsd.org>
4
3
  * Copyright (c) 1996,1999 by Internet Software Consortium.
@@ -15,9 +14,11 @@
15
14
  * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS
16
15
  * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
17
16
  * SOFTWARE.
17
+ *
18
+ * SPDX-License-Identifier: MIT
18
19
  */
19
20
 
20
- #include "ares_setup.h"
21
+ #include "ares_private.h"
21
22
 
22
23
  #ifdef HAVE_NETINET_IN_H
23
24
  # include <netinet/in.h>
@@ -28,13 +29,25 @@
28
29
 
29
30
  #include "ares_nameser.h"
30
31
 
31
- #include "ares.h"
32
32
  #include "ares_ipv6.h"
33
- #include "ares_nowarn.h"
34
33
  #include "ares_inet_net_pton.h"
35
34
 
35
+ #ifdef USE_WINSOCK
36
+ # define SOCKERRNO ((int)WSAGetLastError())
37
+ # define SET_SOCKERRNO(x) (WSASetLastError((int)(x)))
38
+ # undef EMSGSIZE
39
+ # define EMSGSIZE WSAEMSGSIZE
40
+ # undef ENOENT
41
+ # define ENOENT WSA_INVALID_PARAMETER
42
+ # undef EAFNOSUPPORT
43
+ # define EAFNOSUPPORT WSAEAFNOSUPPORT
44
+ #else
45
+ # define SOCKERRNO (errno)
46
+ # define SET_SOCKERRNO(x) (errno = (x))
47
+ #endif
36
48
 
37
- const struct ares_in6_addr ares_in6addr_any = { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 } } };
49
+ const struct ares_in6_addr ares_in6addr_any = { { { 0, 0, 0, 0, 0, 0, 0, 0, 0,
50
+ 0, 0, 0, 0, 0, 0, 0 } } };
38
51
 
39
52
  /*
40
53
  * static int
@@ -51,202 +64,233 @@ const struct ares_in6_addr ares_in6addr_any = { { { 0,0,0,0,0,0,0,0,0,0,0,0,0,0,
51
64
  * 0b11110000 in its fourth octet.
52
65
  * note:
53
66
  * On Windows we store the error in the thread errno, not
54
- * in the winsock error code. This is to avoid loosing the
67
+ * in the winsock error code. This is to avoid losing the
55
68
  * actual last winsock error. So use macro ERRNO to fetch the
56
- * errno this funtion sets when returning (-1), not SOCKERRNO.
69
+ * errno this function sets when returning (-1), not SOCKERRNO.
57
70
  * author:
58
71
  * Paul Vixie (ISC), June 1996
59
72
  */
60
- static int
61
- ares_inet_net_pton_ipv4(const char *src, unsigned char *dst, size_t size)
73
+ static int ares_inet_net_pton_ipv4(const char *src, unsigned char *dst,
74
+ size_t size)
62
75
  {
63
- static const char xdigits[] = "0123456789abcdef";
64
- static const char digits[] = "0123456789";
65
- int n, ch, tmp = 0, dirty, bits;
76
+ static const char xdigits[] = "0123456789abcdef";
77
+ static const char digits[] = "0123456789";
78
+ int n;
79
+ int ch;
80
+ int tmp = 0;
81
+ int dirty;
82
+ int bits;
66
83
  const unsigned char *odst = dst;
67
84
 
68
85
  ch = *src++;
69
- if (ch == '0' && (src[0] == 'x' || src[0] == 'X')
70
- && ISASCII(src[1])
71
- && ISXDIGIT(src[1])) {
86
+ if (ch == '0' && (src[0] == 'x' || src[0] == 'X') && ares_isascii(src[1]) &&
87
+ ares_isxdigit(src[1])) {
72
88
  /* Hexadecimal: Eat nybble string. */
73
- if (!size)
89
+ if (!size) {
74
90
  goto emsgsize;
91
+ }
75
92
  dirty = 0;
76
- src++; /* skip x or X. */
77
- while ((ch = *src++) != '\0' && ISASCII(ch) && ISXDIGIT(ch)) {
78
- if (ISUPPER(ch))
79
- ch = tolower(ch);
80
- n = aresx_sztosi(strchr(xdigits, ch) - xdigits);
81
- if (dirty == 0)
93
+ src++; /* skip x or X. */
94
+ while ((ch = *src++) != '\0' && ares_isascii(ch) && ares_isxdigit(ch)) {
95
+ if (ares_isupper(ch)) {
96
+ ch = ares_tolower((unsigned char)ch);
97
+ }
98
+ n = (int)(strchr(xdigits, ch) - xdigits);
99
+ if (dirty == 0) {
82
100
  tmp = n;
83
- else
101
+ } else {
84
102
  tmp = (tmp << 4) | n;
103
+ }
85
104
  if (++dirty == 2) {
86
- if (!size--)
105
+ if (!size--) {
87
106
  goto emsgsize;
88
- *dst++ = (unsigned char) tmp;
89
- dirty = 0;
107
+ }
108
+ *dst++ = (unsigned char)tmp;
109
+ dirty = 0;
90
110
  }
91
111
  }
92
- if (dirty) { /* Odd trailing nybble? */
93
- if (!size--)
112
+ if (dirty) { /* Odd trailing nybble? */
113
+ if (!size--) {
94
114
  goto emsgsize;
95
- *dst++ = (unsigned char) (tmp << 4);
115
+ }
116
+ *dst++ = (unsigned char)(tmp << 4);
96
117
  }
97
- } else if (ISASCII(ch) && ISDIGIT(ch)) {
118
+ } else if (ares_isascii(ch) && ares_isdigit(ch)) {
98
119
  /* Decimal: eat dotted digit string. */
99
120
  for (;;) {
100
121
  tmp = 0;
101
122
  do {
102
- n = aresx_sztosi(strchr(digits, ch) - digits);
123
+ n = (int)(strchr(digits, ch) - digits);
103
124
  tmp *= 10;
104
125
  tmp += n;
105
- if (tmp > 255)
126
+ if (tmp > 255) {
106
127
  goto enoent;
107
- } while ((ch = *src++) != '\0' &&
108
- ISASCII(ch) && ISDIGIT(ch));
109
- if (!size--)
128
+ }
129
+ } while ((ch = *src++) != '\0' && ares_isascii(ch) && ares_isdigit(ch));
130
+ if (!size--) {
110
131
  goto emsgsize;
111
- *dst++ = (unsigned char) tmp;
112
- if (ch == '\0' || ch == '/')
132
+ }
133
+ *dst++ = (unsigned char)tmp;
134
+ if (ch == '\0' || ch == '/') {
113
135
  break;
114
- if (ch != '.')
136
+ }
137
+ if (ch != '.') {
115
138
  goto enoent;
139
+ }
116
140
  ch = *src++;
117
- if (!ISASCII(ch) || !ISDIGIT(ch))
141
+ if (!ares_isascii(ch) || !ares_isdigit(ch)) {
118
142
  goto enoent;
143
+ }
119
144
  }
120
- } else
145
+ } else {
121
146
  goto enoent;
147
+ }
122
148
 
123
149
  bits = -1;
124
- if (ch == '/' && ISASCII(src[0]) &&
125
- ISDIGIT(src[0]) && dst > odst) {
150
+ if (ch == '/' && ares_isascii(src[0]) && ares_isdigit(src[0]) && dst > odst) {
126
151
  /* CIDR width specifier. Nothing can follow it. */
127
- ch = *src++; /* Skip over the /. */
152
+ ch = *src++; /* Skip over the /. */
128
153
  bits = 0;
129
154
  do {
130
- n = aresx_sztosi(strchr(digits, ch) - digits);
155
+ n = (int)(strchr(digits, ch) - digits);
131
156
  bits *= 10;
132
157
  bits += n;
133
- if (bits > 32)
158
+ if (bits > 32) {
134
159
  goto enoent;
135
- } while ((ch = *src++) != '\0' && ISASCII(ch) && ISDIGIT(ch));
136
- if (ch != '\0')
160
+ }
161
+ } while ((ch = *src++) != '\0' && ares_isascii(ch) && ares_isdigit(ch));
162
+ if (ch != '\0') {
137
163
  goto enoent;
164
+ }
138
165
  }
139
166
 
140
167
  /* Firey death and destruction unless we prefetched EOS. */
141
- if (ch != '\0')
168
+ if (ch != '\0') {
142
169
  goto enoent;
170
+ }
143
171
 
144
172
  /* If nothing was written to the destination, we found no address. */
145
- if (dst == odst)
146
- goto enoent; /* LCOV_EXCL_LINE: all valid paths above increment dst */
173
+ if (dst == odst) {
174
+ goto enoent; /* LCOV_EXCL_LINE: all valid paths above increment dst */
175
+ }
147
176
  /* If no CIDR spec was given, infer width from net class. */
148
177
  if (bits == -1) {
149
- if (*odst >= 240) /* Class E */
178
+ if (*odst >= 240) { /* Class E */
150
179
  bits = 32;
151
- else if (*odst >= 224) /* Class D */
180
+ } else if (*odst >= 224) { /* Class D */
152
181
  bits = 8;
153
- else if (*odst >= 192) /* Class C */
182
+ } else if (*odst >= 192) { /* Class C */
154
183
  bits = 24;
155
- else if (*odst >= 128) /* Class B */
184
+ } else if (*odst >= 128) { /* Class B */
156
185
  bits = 16;
157
- else /* Class A */
186
+ } else { /* Class A */
158
187
  bits = 8;
188
+ }
159
189
  /* If imputed mask is narrower than specified octets, widen. */
160
- if (bits < ((dst - odst) * 8))
161
- bits = aresx_sztosi(dst - odst) * 8;
190
+ if (bits < ((dst - odst) * 8)) {
191
+ bits = (int)(dst - odst) * 8;
192
+ }
162
193
  /*
163
194
  * If there are no additional bits specified for a class D
164
195
  * address adjust bits to 4.
165
196
  */
166
- if (bits == 8 && *odst == 224)
197
+ if (bits == 8 && *odst == 224) {
167
198
  bits = 4;
199
+ }
168
200
  }
169
201
  /* Extend network to cover the actual mask. */
170
202
  while (bits > ((dst - odst) * 8)) {
171
- if (!size--)
203
+ if (!size--) {
172
204
  goto emsgsize;
205
+ }
173
206
  *dst++ = '\0';
174
207
  }
175
- return (bits);
208
+ return bits;
176
209
 
177
- enoent:
178
- SET_ERRNO(ENOENT);
179
- return (-1);
210
+ enoent:
211
+ SET_SOCKERRNO(ENOENT);
212
+ return -1;
180
213
 
181
- emsgsize:
182
- SET_ERRNO(EMSGSIZE);
183
- return (-1);
214
+ emsgsize:
215
+ SET_SOCKERRNO(EMSGSIZE);
216
+ return -1;
184
217
  }
185
218
 
186
- static int
187
- getbits(const char *src, int *bitsp)
219
+ static int getbits(const char *src, size_t *bitsp)
188
220
  {
189
221
  static const char digits[] = "0123456789";
190
- int n;
191
- int val;
192
- char ch;
222
+ size_t n;
223
+ size_t val;
224
+ char ch;
193
225
 
194
226
  val = 0;
195
- n = 0;
227
+ n = 0;
196
228
  while ((ch = *src++) != '\0') {
197
229
  const char *pch;
198
230
 
199
231
  pch = strchr(digits, ch);
200
232
  if (pch != NULL) {
201
- if (n++ != 0 && val == 0) /* no leading zeros */
202
- return (0);
233
+ if (n++ != 0 && val == 0) { /* no leading zeros */
234
+ return 0;
235
+ }
203
236
  val *= 10;
204
- val += aresx_sztosi(pch - digits);
205
- if (val > 128) /* range */
206
- return (0);
237
+ val += (size_t)(pch - digits);
238
+ if (val > 128) { /* range */
239
+ return 0;
240
+ }
207
241
  continue;
208
242
  }
209
- return (0);
243
+ return 0;
244
+ }
245
+ if (n == 0) {
246
+ return 0;
210
247
  }
211
- if (n == 0)
212
- return (0);
213
248
  *bitsp = val;
214
- return (1);
249
+ return 1;
215
250
  }
216
251
 
217
-
218
- static int
219
- ares_inet_pton6(const char *src, unsigned char *dst)
252
+ static int ares_inet_pton6(const char *src, unsigned char *dst)
220
253
  {
221
- static const char xdigits_l[] = "0123456789abcdef",
222
- xdigits_u[] = "0123456789ABCDEF";
223
- unsigned char tmp[NS_IN6ADDRSZ], *tp, *endp, *colonp;
224
- const char *xdigits, *curtok;
225
- int ch, saw_xdigit, count_xdigit;
226
- unsigned int val;
254
+ static const char xdigits_l[] = "0123456789abcdef";
255
+ static const char xdigits_u[] = "0123456789ABCDEF";
256
+ unsigned char tmp[NS_IN6ADDRSZ];
257
+ unsigned char *tp;
258
+ unsigned char *endp;
259
+ unsigned char *colonp;
260
+ const char *xdigits;
261
+ const char *curtok;
262
+ int ch;
263
+ int saw_xdigit;
264
+ int count_xdigit;
265
+ unsigned int val;
227
266
 
228
267
  memset((tp = tmp), '\0', NS_IN6ADDRSZ);
229
- endp = tp + NS_IN6ADDRSZ;
268
+ endp = tp + NS_IN6ADDRSZ;
230
269
  colonp = NULL;
231
270
  /* Leading :: requires some special handling. */
232
- if (*src == ':')
233
- if (*++src != ':')
271
+ if (*src == ':') {
272
+ if (*++src != ':') {
234
273
  goto enoent;
235
- curtok = src;
274
+ }
275
+ }
276
+ curtok = src;
236
277
  saw_xdigit = count_xdigit = 0;
237
- val = 0;
278
+ val = 0;
238
279
  while ((ch = *src++) != '\0') {
239
280
  const char *pch;
240
281
 
241
- if ((pch = strchr((xdigits = xdigits_l), ch)) == NULL)
282
+ if ((pch = strchr((xdigits = xdigits_l), ch)) == NULL) {
242
283
  pch = strchr((xdigits = xdigits_u), ch);
284
+ }
243
285
  if (pch != NULL) {
244
- if (count_xdigit >= 4)
286
+ if (count_xdigit >= 4) {
245
287
  goto enoent;
288
+ }
246
289
  val <<= 4;
247
- val |= (unsigned int)(pch - xdigits);
248
- if (val > 0xffff)
290
+ val |= (unsigned int)(pch - xdigits);
291
+ if (val > 0xffff) {
249
292
  goto enoent;
293
+ }
250
294
  saw_xdigit = 1;
251
295
  count_xdigit++;
252
296
  continue;
@@ -254,35 +298,38 @@ ares_inet_pton6(const char *src, unsigned char *dst)
254
298
  if (ch == ':') {
255
299
  curtok = src;
256
300
  if (!saw_xdigit) {
257
- if (colonp)
301
+ if (colonp) {
258
302
  goto enoent;
303
+ }
259
304
  colonp = tp;
260
305
  continue;
261
306
  } else if (*src == '\0') {
262
307
  goto enoent;
263
308
  }
264
- if (tp + NS_INT16SZ > endp)
309
+ if (tp + NS_INT16SZ > endp) {
265
310
  goto enoent;
266
- *tp++ = (unsigned char) (val >> 8) & 0xff;
267
- *tp++ = (unsigned char) val & 0xff;
268
- saw_xdigit = 0;
311
+ }
312
+ *tp++ = (unsigned char)(val >> 8) & 0xff;
313
+ *tp++ = (unsigned char)val & 0xff;
314
+ saw_xdigit = 0;
269
315
  count_xdigit = 0;
270
- val = 0;
316
+ val = 0;
271
317
  continue;
272
318
  }
273
319
  if (ch == '.' && ((tp + NS_INADDRSZ) <= endp) &&
274
320
  ares_inet_net_pton_ipv4(curtok, tp, NS_INADDRSZ) > 0) {
275
- tp += NS_INADDRSZ;
276
- saw_xdigit = 0;
277
- break; /* '\0' was seen by inet_pton4(). */
321
+ tp += NS_INADDRSZ;
322
+ saw_xdigit = 0;
323
+ break; /* '\0' was seen by inet_pton4(). */
278
324
  }
279
325
  goto enoent;
280
326
  }
281
327
  if (saw_xdigit) {
282
- if (tp + NS_INT16SZ > endp)
328
+ if (tp + NS_INT16SZ > endp) {
283
329
  goto enoent;
284
- *tp++ = (unsigned char) (val >> 8) & 0xff;
285
- *tp++ = (unsigned char) val & 0xff;
330
+ }
331
+ *tp++ = (unsigned char)(val >> 8) & 0xff;
332
+ *tp++ = (unsigned char)val & 0xff;
286
333
  }
287
334
  if (colonp != NULL) {
288
335
  /*
@@ -290,67 +337,71 @@ ares_inet_pton6(const char *src, unsigned char *dst)
290
337
  * overlapping regions, we'll do the shift by hand.
291
338
  */
292
339
  const int n = (int)(tp - colonp);
293
- int i;
340
+ int i;
294
341
 
295
- if (tp == endp)
342
+ if (tp == endp) {
296
343
  goto enoent;
344
+ }
297
345
  for (i = 1; i <= n; i++) {
298
- endp[- i] = colonp[n - i];
346
+ endp[-i] = colonp[n - i];
299
347
  colonp[n - i] = 0;
300
348
  }
301
349
  tp = endp;
302
350
  }
303
- if (tp != endp)
351
+ if (tp != endp) {
304
352
  goto enoent;
353
+ }
305
354
 
306
355
  memcpy(dst, tmp, NS_IN6ADDRSZ);
307
- return (1);
356
+ return 1;
308
357
 
309
358
  enoent:
310
- SET_ERRNO(ENOENT);
311
- return (-1);
359
+ SET_SOCKERRNO(ENOENT);
360
+ return -1;
312
361
  }
313
362
 
314
- static int
315
- ares_inet_net_pton_ipv6(const char *src, unsigned char *dst, size_t size)
363
+ static int ares_inet_net_pton_ipv6(const char *src, unsigned char *dst,
364
+ size_t size)
316
365
  {
317
366
  struct ares_in6_addr in6;
318
367
  int ret;
319
- int bits;
368
+ size_t bits;
320
369
  size_t bytes;
321
370
  char buf[INET6_ADDRSTRLEN + sizeof("/128")];
322
371
  char *sep;
323
372
 
324
- if (strlen(src) >= sizeof buf) {
325
- SET_ERRNO(EMSGSIZE);
326
- return (-1);
373
+ if (ares_strlen(src) >= sizeof buf) {
374
+ SET_SOCKERRNO(EMSGSIZE);
375
+ return -1;
327
376
  }
328
- strncpy(buf, src, sizeof buf);
377
+ ares_strcpy(buf, src, sizeof buf);
329
378
 
330
379
  sep = strchr(buf, '/');
331
- if (sep != NULL)
380
+ if (sep != NULL) {
332
381
  *sep++ = '\0';
382
+ }
333
383
 
334
384
  ret = ares_inet_pton6(buf, (unsigned char *)&in6);
335
- if (ret != 1)
336
- return (-1);
385
+ if (ret != 1) {
386
+ return -1;
387
+ }
337
388
 
338
- if (sep == NULL)
389
+ if (sep == NULL) {
339
390
  bits = 128;
340
- else {
391
+ } else {
341
392
  if (!getbits(sep, &bits)) {
342
- SET_ERRNO(ENOENT);
343
- return (-1);
393
+ SET_SOCKERRNO(ENOENT);
394
+ return -1;
344
395
  }
345
396
  }
346
397
 
347
398
  bytes = (bits + 7) / 8;
348
399
  if (bytes > size) {
349
- SET_ERRNO(EMSGSIZE);
350
- return (-1);
400
+ SET_SOCKERRNO(EMSGSIZE);
401
+ return -1;
351
402
  }
352
403
  memcpy(dst, &in6, bytes);
353
- return (bits);
404
+ return (int)bits;
354
405
  }
355
406
 
356
407
  /*
@@ -363,44 +414,38 @@ ares_inet_net_pton_ipv6(const char *src, unsigned char *dst, size_t size)
363
414
  * number of bits, either imputed classfully or specified with /CIDR,
364
415
  * or -1 if some failure occurred (check errno). ENOENT means it was
365
416
  * not a valid network specification.
366
- * note:
367
- * On Windows we store the error in the thread errno, not
368
- * in the winsock error code. This is to avoid loosing the
369
- * actual last winsock error. So use macro ERRNO to fetch the
370
- * errno this funtion sets when returning (-1), not SOCKERRNO.
371
417
  * author:
372
418
  * Paul Vixie (ISC), June 1996
419
+ *
373
420
  */
374
- int
375
- ares_inet_net_pton(int af, const char *src, void *dst, size_t size)
421
+ int ares_inet_net_pton(int af, const char *src, void *dst, size_t size)
376
422
  {
377
423
  switch (af) {
378
- case AF_INET:
379
- return (ares_inet_net_pton_ipv4(src, dst, size));
380
- case AF_INET6:
381
- return (ares_inet_net_pton_ipv6(src, dst, size));
382
- default:
383
- SET_ERRNO(EAFNOSUPPORT);
384
- return (-1);
424
+ case AF_INET:
425
+ return ares_inet_net_pton_ipv4(src, dst, size);
426
+ case AF_INET6:
427
+ return ares_inet_net_pton_ipv6(src, dst, size);
428
+ default:
429
+ return -1;
385
430
  }
386
431
  }
387
432
 
388
433
  int ares_inet_pton(int af, const char *src, void *dst)
389
434
  {
390
- int result;
435
+ int result;
391
436
  size_t size;
392
437
 
393
- if (af == AF_INET)
438
+ if (af == AF_INET) {
394
439
  size = sizeof(struct in_addr);
395
- else if (af == AF_INET6)
440
+ } else if (af == AF_INET6) {
396
441
  size = sizeof(struct ares_in6_addr);
397
- else
398
- {
399
- SET_ERRNO(EAFNOSUPPORT);
442
+ } else {
443
+ SET_SOCKERRNO(EAFNOSUPPORT);
400
444
  return -1;
401
445
  }
402
446
  result = ares_inet_net_pton(af, src, dst, size);
403
- if (result == -1 && ERRNO == ENOENT)
447
+ if (result == -1 && SOCKERRNO == ENOENT) {
404
448
  return 0;
405
- return (result > -1 ? 1 : -1);
449
+ }
450
+ return (result > -1) ? 1 : -1;
406
451
  }