grpc 1.74.0 → 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 (369) 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_channel.c +15 -6
  187. data/src/ruby/ext/grpc/rb_grpc_imports.generated.h +1 -1
  188. data/src/ruby/lib/grpc/version.rb +1 -1
  189. data/third_party/cares/cares/include/ares.h +925 -460
  190. data/third_party/cares/cares/include/ares_dns.h +86 -71
  191. data/third_party/cares/cares/include/ares_dns_record.h +1118 -0
  192. data/third_party/cares/cares/include/ares_nameser.h +215 -189
  193. data/third_party/cares/cares/include/ares_version.h +37 -14
  194. data/third_party/cares/cares/src/lib/ares_addrinfo2hostent.c +305 -0
  195. data/third_party/cares/cares/src/lib/ares_addrinfo_localhost.c +245 -0
  196. data/third_party/cares/cares/src/lib/ares_android.c +216 -164
  197. data/third_party/cares/cares/src/lib/ares_android.h +25 -14
  198. data/third_party/cares/cares/src/lib/ares_cancel.c +68 -44
  199. data/third_party/cares/cares/src/lib/ares_close_sockets.c +137 -0
  200. data/third_party/cares/cares/src/lib/ares_conn.c +511 -0
  201. data/third_party/cares/cares/src/lib/ares_conn.h +196 -0
  202. data/third_party/cares/cares/src/lib/ares_cookie.c +461 -0
  203. data/third_party/cares/cares/src/lib/ares_data.c +93 -181
  204. data/third_party/cares/cares/src/lib/ares_data.h +50 -39
  205. data/third_party/cares/cares/src/lib/ares_destroy.c +127 -89
  206. data/third_party/cares/cares/src/lib/ares_free_hostent.c +35 -24
  207. data/third_party/cares/cares/src/lib/ares_free_string.c +24 -16
  208. data/third_party/cares/cares/src/lib/ares_freeaddrinfo.c +45 -38
  209. data/third_party/cares/cares/src/lib/ares_getaddrinfo.c +549 -663
  210. data/third_party/cares/cares/src/lib/ares_getenv.c +25 -15
  211. data/third_party/cares/cares/src/lib/ares_getenv.h +26 -18
  212. data/third_party/cares/cares/src/lib/ares_gethostbyaddr.c +163 -221
  213. data/third_party/cares/cares/src/lib/ares_gethostbyname.c +222 -223
  214. data/third_party/cares/cares/src/lib/ares_getnameinfo.c +328 -338
  215. data/third_party/cares/cares/src/lib/ares_hosts_file.c +952 -0
  216. data/third_party/cares/cares/src/lib/ares_inet_net_pton.h +25 -19
  217. data/third_party/cares/cares/src/lib/ares_init.c +425 -2091
  218. data/third_party/cares/cares/src/lib/ares_ipv6.h +63 -33
  219. data/third_party/cares/cares/src/lib/ares_library_init.c +110 -54
  220. data/third_party/cares/cares/src/lib/ares_metrics.c +261 -0
  221. data/third_party/cares/cares/src/lib/ares_options.c +418 -332
  222. data/third_party/cares/cares/src/lib/ares_parse_into_addrinfo.c +179 -0
  223. data/third_party/cares/cares/src/lib/ares_private.h +558 -356
  224. data/third_party/cares/cares/src/lib/ares_process.c +1224 -1369
  225. data/third_party/cares/cares/src/lib/ares_qcache.c +430 -0
  226. data/third_party/cares/cares/src/lib/ares_query.c +126 -121
  227. data/third_party/cares/cares/src/lib/ares_search.c +564 -262
  228. data/third_party/cares/cares/src/lib/ares_send.c +264 -93
  229. data/third_party/cares/cares/src/lib/ares_set_socket_functions.c +588 -0
  230. data/third_party/cares/cares/src/lib/ares_setup.h +115 -111
  231. data/third_party/cares/cares/src/lib/ares_socket.c +425 -0
  232. data/third_party/cares/cares/src/lib/ares_socket.h +163 -0
  233. data/third_party/cares/cares/src/lib/ares_sortaddrinfo.c +447 -0
  234. data/third_party/cares/cares/src/lib/ares_strerror.c +83 -48
  235. data/third_party/cares/cares/src/lib/ares_sysconfig.c +639 -0
  236. data/third_party/cares/cares/src/lib/ares_sysconfig_files.c +839 -0
  237. data/third_party/cares/cares/src/lib/ares_sysconfig_mac.c +373 -0
  238. data/third_party/cares/cares/src/lib/ares_sysconfig_win.c +621 -0
  239. data/third_party/cares/cares/src/lib/ares_timeout.c +136 -73
  240. data/third_party/cares/cares/src/lib/ares_update_servers.c +1362 -0
  241. data/third_party/cares/cares/src/lib/ares_version.c +29 -4
  242. data/third_party/cares/cares/src/lib/config-dos.h +88 -89
  243. data/third_party/cares/cares/src/lib/config-win32.h +122 -77
  244. data/third_party/cares/cares/src/lib/dsa/ares_array.c +394 -0
  245. data/third_party/cares/cares/src/lib/dsa/ares_htable.c +447 -0
  246. data/third_party/cares/cares/src/lib/dsa/ares_htable.h +174 -0
  247. data/third_party/cares/cares/src/lib/dsa/ares_htable_asvp.c +224 -0
  248. data/third_party/cares/cares/src/lib/dsa/ares_htable_dict.c +228 -0
  249. data/third_party/cares/cares/src/lib/dsa/ares_htable_strvp.c +210 -0
  250. data/third_party/cares/cares/src/lib/dsa/ares_htable_szvp.c +188 -0
  251. data/third_party/cares/cares/src/lib/dsa/ares_htable_vpstr.c +186 -0
  252. data/third_party/cares/cares/src/lib/dsa/ares_htable_vpvp.c +194 -0
  253. data/third_party/cares/cares/src/lib/dsa/ares_llist.c +382 -0
  254. data/third_party/cares/cares/src/lib/dsa/ares_slist.c +479 -0
  255. data/third_party/cares/cares/src/lib/dsa/ares_slist.h +207 -0
  256. data/third_party/cares/cares/src/lib/event/ares_event.h +191 -0
  257. data/third_party/cares/cares/src/lib/event/ares_event_configchg.c +743 -0
  258. data/third_party/cares/cares/src/lib/event/ares_event_epoll.c +192 -0
  259. data/third_party/cares/cares/src/lib/event/ares_event_kqueue.c +248 -0
  260. data/third_party/cares/cares/src/lib/event/ares_event_poll.c +140 -0
  261. data/third_party/cares/cares/src/lib/event/ares_event_select.c +159 -0
  262. data/third_party/cares/cares/src/lib/event/ares_event_thread.c +567 -0
  263. data/third_party/cares/cares/src/lib/event/ares_event_wake_pipe.c +166 -0
  264. data/third_party/cares/cares/src/lib/event/ares_event_win32.c +978 -0
  265. data/third_party/cares/cares/src/lib/event/ares_event_win32.h +161 -0
  266. data/third_party/cares/cares/src/lib/include/ares_array.h +276 -0
  267. data/third_party/cares/cares/src/lib/include/ares_buf.h +732 -0
  268. data/third_party/cares/cares/src/lib/include/ares_htable_asvp.h +130 -0
  269. data/third_party/cares/cares/src/lib/include/ares_htable_dict.h +123 -0
  270. data/third_party/cares/cares/src/lib/include/ares_htable_strvp.h +130 -0
  271. data/third_party/cares/cares/src/lib/include/ares_htable_szvp.h +118 -0
  272. data/third_party/cares/cares/src/lib/include/ares_htable_vpstr.h +111 -0
  273. data/third_party/cares/cares/src/lib/include/ares_htable_vpvp.h +128 -0
  274. data/third_party/cares/cares/src/lib/include/ares_llist.h +239 -0
  275. data/third_party/cares/cares/src/lib/include/ares_mem.h +38 -0
  276. data/third_party/cares/cares/src/lib/include/ares_str.h +244 -0
  277. data/third_party/cares/cares/src/lib/inet_net_pton.c +202 -157
  278. data/third_party/cares/cares/src/lib/inet_ntop.c +87 -69
  279. data/third_party/cares/cares/src/lib/legacy/ares_create_query.c +78 -0
  280. data/third_party/cares/cares/src/lib/legacy/ares_expand_name.c +99 -0
  281. data/third_party/cares/cares/src/lib/legacy/ares_expand_string.c +107 -0
  282. data/third_party/cares/cares/src/lib/legacy/ares_fds.c +80 -0
  283. data/third_party/cares/cares/src/lib/legacy/ares_getsock.c +85 -0
  284. data/third_party/cares/cares/src/lib/legacy/ares_parse_a_reply.c +107 -0
  285. data/third_party/cares/cares/src/lib/legacy/ares_parse_aaaa_reply.c +109 -0
  286. data/third_party/cares/cares/src/lib/legacy/ares_parse_caa_reply.c +137 -0
  287. data/third_party/cares/cares/src/lib/legacy/ares_parse_mx_reply.c +110 -0
  288. data/third_party/cares/cares/src/lib/legacy/ares_parse_naptr_reply.c +132 -0
  289. data/third_party/cares/cares/src/lib/legacy/ares_parse_ns_reply.c +154 -0
  290. data/third_party/cares/cares/src/lib/legacy/ares_parse_ptr_reply.c +213 -0
  291. data/third_party/cares/cares/src/lib/legacy/ares_parse_soa_reply.c +115 -0
  292. data/third_party/cares/cares/src/lib/legacy/ares_parse_srv_reply.c +114 -0
  293. data/third_party/cares/cares/src/lib/legacy/ares_parse_txt_reply.c +144 -0
  294. data/third_party/cares/cares/src/lib/legacy/ares_parse_uri_reply.c +113 -0
  295. data/third_party/cares/cares/src/lib/record/ares_dns_mapping.c +982 -0
  296. data/third_party/cares/cares/src/lib/record/ares_dns_multistring.c +307 -0
  297. data/third_party/cares/cares/src/lib/record/ares_dns_multistring.h +72 -0
  298. data/third_party/cares/cares/src/lib/record/ares_dns_name.c +673 -0
  299. data/third_party/cares/cares/src/lib/record/ares_dns_parse.c +1329 -0
  300. data/third_party/cares/cares/src/lib/record/ares_dns_private.h +273 -0
  301. data/third_party/cares/cares/src/lib/record/ares_dns_record.c +1661 -0
  302. data/third_party/cares/cares/src/lib/record/ares_dns_write.c +1229 -0
  303. data/third_party/cares/cares/src/lib/str/ares_buf.c +1498 -0
  304. data/third_party/cares/cares/src/lib/str/ares_str.c +508 -0
  305. data/third_party/cares/cares/src/lib/str/ares_strsplit.c +90 -0
  306. data/third_party/cares/cares/src/lib/str/ares_strsplit.h +51 -0
  307. data/third_party/cares/cares/src/lib/thirdparty/apple/dnsinfo.h +122 -0
  308. data/third_party/cares/cares/src/lib/util/ares_iface_ips.c +628 -0
  309. data/third_party/cares/cares/src/lib/util/ares_iface_ips.h +139 -0
  310. data/third_party/cares/cares/src/lib/util/ares_math.c +158 -0
  311. data/third_party/cares/cares/src/lib/util/ares_math.h +45 -0
  312. data/third_party/cares/cares/src/lib/util/ares_rand.c +389 -0
  313. data/third_party/cares/cares/src/lib/util/ares_rand.h +36 -0
  314. data/third_party/cares/cares/src/lib/util/ares_threads.c +614 -0
  315. data/third_party/cares/cares/src/lib/util/ares_threads.h +60 -0
  316. data/third_party/cares/cares/src/lib/util/ares_time.h +48 -0
  317. data/third_party/cares/cares/src/lib/util/ares_timeval.c +95 -0
  318. data/third_party/cares/cares/src/lib/util/ares_uri.c +1626 -0
  319. data/third_party/cares/cares/src/lib/util/ares_uri.h +252 -0
  320. data/third_party/cares/cares/src/lib/windows_port.c +16 -9
  321. metadata +121 -49
  322. data/src/core/util/ring_buffer.h +0 -122
  323. data/third_party/cares/cares/include/ares_rules.h +0 -125
  324. data/third_party/cares/cares/src/lib/ares__addrinfo2hostent.c +0 -266
  325. data/third_party/cares/cares/src/lib/ares__addrinfo_localhost.c +0 -240
  326. data/third_party/cares/cares/src/lib/ares__close_sockets.c +0 -61
  327. data/third_party/cares/cares/src/lib/ares__get_hostent.c +0 -260
  328. data/third_party/cares/cares/src/lib/ares__parse_into_addrinfo.c +0 -229
  329. data/third_party/cares/cares/src/lib/ares__read_line.c +0 -73
  330. data/third_party/cares/cares/src/lib/ares__readaddrinfo.c +0 -258
  331. data/third_party/cares/cares/src/lib/ares__sortaddrinfo.c +0 -507
  332. data/third_party/cares/cares/src/lib/ares__timeval.c +0 -111
  333. data/third_party/cares/cares/src/lib/ares_create_query.c +0 -197
  334. data/third_party/cares/cares/src/lib/ares_expand_name.c +0 -311
  335. data/third_party/cares/cares/src/lib/ares_expand_string.c +0 -67
  336. data/third_party/cares/cares/src/lib/ares_fds.c +0 -59
  337. data/third_party/cares/cares/src/lib/ares_getsock.c +0 -66
  338. data/third_party/cares/cares/src/lib/ares_iphlpapi.h +0 -221
  339. data/third_party/cares/cares/src/lib/ares_llist.c +0 -63
  340. data/third_party/cares/cares/src/lib/ares_llist.h +0 -39
  341. data/third_party/cares/cares/src/lib/ares_mkquery.c +0 -24
  342. data/third_party/cares/cares/src/lib/ares_nowarn.c +0 -260
  343. data/third_party/cares/cares/src/lib/ares_nowarn.h +0 -61
  344. data/third_party/cares/cares/src/lib/ares_parse_a_reply.c +0 -90
  345. data/third_party/cares/cares/src/lib/ares_parse_aaaa_reply.c +0 -92
  346. data/third_party/cares/cares/src/lib/ares_parse_caa_reply.c +0 -199
  347. data/third_party/cares/cares/src/lib/ares_parse_mx_reply.c +0 -164
  348. data/third_party/cares/cares/src/lib/ares_parse_naptr_reply.c +0 -183
  349. data/third_party/cares/cares/src/lib/ares_parse_ns_reply.c +0 -177
  350. data/third_party/cares/cares/src/lib/ares_parse_ptr_reply.c +0 -228
  351. data/third_party/cares/cares/src/lib/ares_parse_soa_reply.c +0 -179
  352. data/third_party/cares/cares/src/lib/ares_parse_srv_reply.c +0 -168
  353. data/third_party/cares/cares/src/lib/ares_parse_txt_reply.c +0 -214
  354. data/third_party/cares/cares/src/lib/ares_parse_uri_reply.c +0 -184
  355. data/third_party/cares/cares/src/lib/ares_platform.c +0 -11042
  356. data/third_party/cares/cares/src/lib/ares_platform.h +0 -43
  357. data/third_party/cares/cares/src/lib/ares_rand.c +0 -279
  358. data/third_party/cares/cares/src/lib/ares_strcasecmp.c +0 -66
  359. data/third_party/cares/cares/src/lib/ares_strcasecmp.h +0 -30
  360. data/third_party/cares/cares/src/lib/ares_strdup.c +0 -42
  361. data/third_party/cares/cares/src/lib/ares_strdup.h +0 -24
  362. data/third_party/cares/cares/src/lib/ares_strsplit.c +0 -94
  363. data/third_party/cares/cares/src/lib/ares_strsplit.h +0 -42
  364. data/third_party/cares/cares/src/lib/ares_writev.c +0 -79
  365. data/third_party/cares/cares/src/lib/ares_writev.h +0 -36
  366. data/third_party/cares/cares/src/lib/bitncmp.c +0 -59
  367. data/third_party/cares/cares/src/lib/bitncmp.h +0 -26
  368. data/third_party/cares/cares/src/lib/setup_once.h +0 -554
  369. 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
  }