asyncengine 0.0.1.testing
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.
- data/README.markdown +0 -0
- data/asyncengine.gemspec +26 -0
- data/ext/asyncengine_ext/asyncengine_ruby.c +82 -0
- data/ext/asyncengine_ext/extconf.rb +47 -0
- data/ext/asyncengine_ext/libuv/AUTHORS +45 -0
- data/ext/asyncengine_ext/libuv/LICENSE +42 -0
- data/ext/asyncengine_ext/libuv/Makefile +119 -0
- data/ext/asyncengine_ext/libuv/README.md +88 -0
- data/ext/asyncengine_ext/libuv/build/gcc_version.py +20 -0
- data/ext/asyncengine_ext/libuv/common.gypi +176 -0
- data/ext/asyncengine_ext/libuv/config-mingw.mk +61 -0
- data/ext/asyncengine_ext/libuv/config-unix.mk +173 -0
- data/ext/asyncengine_ext/libuv/gyp_uv +60 -0
- data/ext/asyncengine_ext/libuv/include/ares.h +591 -0
- data/ext/asyncengine_ext/libuv/include/ares_version.h +24 -0
- data/ext/asyncengine_ext/libuv/include/uv-private/eio.h +403 -0
- data/ext/asyncengine_ext/libuv/include/uv-private/ev.h +838 -0
- data/ext/asyncengine_ext/libuv/include/uv-private/ngx-queue.h +106 -0
- data/ext/asyncengine_ext/libuv/include/uv-private/tree.h +768 -0
- data/ext/asyncengine_ext/libuv/include/uv-private/uv-unix.h +256 -0
- data/ext/asyncengine_ext/libuv/include/uv-private/uv-win.h +458 -0
- data/ext/asyncengine_ext/libuv/include/uv.h +1556 -0
- data/ext/asyncengine_ext/libuv/src/ares/AUTHORS +37 -0
- data/ext/asyncengine_ext/libuv/src/ares/CHANGES +1218 -0
- data/ext/asyncengine_ext/libuv/src/ares/CMakeLists.txt +22 -0
- data/ext/asyncengine_ext/libuv/src/ares/NEWS +21 -0
- data/ext/asyncengine_ext/libuv/src/ares/README +60 -0
- data/ext/asyncengine_ext/libuv/src/ares/README.cares +13 -0
- data/ext/asyncengine_ext/libuv/src/ares/README.msvc +142 -0
- data/ext/asyncengine_ext/libuv/src/ares/README.node +21 -0
- data/ext/asyncengine_ext/libuv/src/ares/RELEASE-NOTES +26 -0
- data/ext/asyncengine_ext/libuv/src/ares/TODO +23 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares__close_sockets.c +66 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares__get_hostent.c +263 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares__read_line.c +71 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares__timeval.c +111 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_cancel.c +63 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_data.c +190 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_data.h +65 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_destroy.c +105 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_dns.h +90 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_expand_name.c +200 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_expand_string.c +75 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_fds.c +63 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_free_hostent.c +42 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_free_string.c +25 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_getenv.c +30 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_getenv.h +26 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_gethostbyaddr.c +301 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_gethostbyname.c +523 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_getnameinfo.c +427 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_getopt.c +122 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_getopt.h +53 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_getsock.c +72 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_init.c +1809 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_iphlpapi.h +221 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_ipv6.h +78 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_library_init.c +142 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_library_init.h +42 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_llist.c +86 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_llist.h +42 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_mkquery.c +195 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_nowarn.c +181 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_nowarn.h +55 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_options.c +248 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_parse_a_reply.c +263 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_parse_aaaa_reply.c +259 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_parse_mx_reply.c +170 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_parse_ns_reply.c +182 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_parse_ptr_reply.c +217 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_parse_srv_reply.c +179 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_parse_txt_reply.c +201 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_platform.c +11035 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_platform.h +43 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_private.h +355 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_process.c +1295 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_query.c +183 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_rules.h +144 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_search.c +321 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_send.c +134 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_setup.h +199 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_strcasecmp.c +66 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_strcasecmp.h +30 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_strdup.c +42 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_strdup.h +26 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_strerror.c +56 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_timeout.c +80 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_version.c +11 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_writev.c +79 -0
- data/ext/asyncengine_ext/libuv/src/ares/ares_writev.h +36 -0
- data/ext/asyncengine_ext/libuv/src/ares/bitncmp.c +59 -0
- data/ext/asyncengine_ext/libuv/src/ares/bitncmp.h +26 -0
- data/ext/asyncengine_ext/libuv/src/ares/config_cygwin/ares_config.h +512 -0
- data/ext/asyncengine_ext/libuv/src/ares/config_darwin/ares_config.h +512 -0
- data/ext/asyncengine_ext/libuv/src/ares/config_freebsd/ares_config.h +512 -0
- data/ext/asyncengine_ext/libuv/src/ares/config_linux/ares_config.h +512 -0
- data/ext/asyncengine_ext/libuv/src/ares/config_netbsd/ares_config.h +512 -0
- data/ext/asyncengine_ext/libuv/src/ares/config_openbsd/ares_config.h +512 -0
- data/ext/asyncengine_ext/libuv/src/ares/config_sunos/ares_config.h +512 -0
- data/ext/asyncengine_ext/libuv/src/ares/config_win32/ares_config.h +369 -0
- data/ext/asyncengine_ext/libuv/src/ares/get_ver.awk +35 -0
- data/ext/asyncengine_ext/libuv/src/ares/inet_net_pton.c +451 -0
- data/ext/asyncengine_ext/libuv/src/ares/inet_net_pton.h +31 -0
- data/ext/asyncengine_ext/libuv/src/ares/inet_ntop.c +208 -0
- data/ext/asyncengine_ext/libuv/src/ares/inet_ntop.h +26 -0
- data/ext/asyncengine_ext/libuv/src/ares/nameser.h +203 -0
- data/ext/asyncengine_ext/libuv/src/ares/setup_once.h +504 -0
- data/ext/asyncengine_ext/libuv/src/ares/windows_port.c +22 -0
- data/ext/asyncengine_ext/libuv/src/unix/async.c +58 -0
- data/ext/asyncengine_ext/libuv/src/unix/cares.c +194 -0
- data/ext/asyncengine_ext/libuv/src/unix/check.c +80 -0
- data/ext/asyncengine_ext/libuv/src/unix/core.c +588 -0
- data/ext/asyncengine_ext/libuv/src/unix/cygwin.c +84 -0
- data/ext/asyncengine_ext/libuv/src/unix/darwin.c +341 -0
- data/ext/asyncengine_ext/libuv/src/unix/dl.c +91 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/Changes +63 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/LICENSE +36 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/Makefile.am +15 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/aclocal.m4 +8957 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/autogen.sh +3 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/config.h.in +86 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/config_cygwin.h +80 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/config_darwin.h +141 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/config_freebsd.h +81 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/config_linux.h +94 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/config_netbsd.h +81 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/config_openbsd.h +137 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/config_sunos.h +84 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/configure.ac +22 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/demo.c +194 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/ecb.h +370 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/eio.3 +3428 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/eio.c +2593 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/eio.pod +969 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/libeio.m4 +195 -0
- data/ext/asyncengine_ext/libuv/src/unix/eio/xthread.h +164 -0
- data/ext/asyncengine_ext/libuv/src/unix/error.c +98 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/Changes +388 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/LICENSE +36 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/Makefile.am +18 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/Makefile.in +771 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/README +58 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/aclocal.m4 +8957 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/autogen.sh +6 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/config.guess +1526 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/config.h.in +125 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/config.sub +1658 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/config_cygwin.h +123 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/config_darwin.h +122 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/config_freebsd.h +120 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/config_linux.h +141 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/config_netbsd.h +120 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/config_openbsd.h +126 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/config_sunos.h +122 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/configure +13037 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/configure.ac +18 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/depcomp +630 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev++.h +816 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev.3 +5311 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev.c +3921 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev.pod +5243 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev_epoll.c +266 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev_kqueue.c +235 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev_poll.c +148 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev_port.c +179 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev_select.c +310 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev_vars.h +203 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev_win32.c +153 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ev_wrap.h +196 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/event.c +402 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/event.h +170 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/install-sh +294 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/libev.m4 +39 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/ltmain.sh +8413 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/missing +336 -0
- data/ext/asyncengine_ext/libuv/src/unix/ev/mkinstalldirs +111 -0
- data/ext/asyncengine_ext/libuv/src/unix/freebsd.c +312 -0
- data/ext/asyncengine_ext/libuv/src/unix/fs.c +707 -0
- data/ext/asyncengine_ext/libuv/src/unix/idle.c +79 -0
- data/ext/asyncengine_ext/libuv/src/unix/internal.h +161 -0
- data/ext/asyncengine_ext/libuv/src/unix/kqueue.c +127 -0
- data/ext/asyncengine_ext/libuv/src/unix/linux/core.c +474 -0
- data/ext/asyncengine_ext/libuv/src/unix/linux/inotify.c +211 -0
- data/ext/asyncengine_ext/libuv/src/unix/linux/syscalls.c +230 -0
- data/ext/asyncengine_ext/libuv/src/unix/linux/syscalls.h +87 -0
- data/ext/asyncengine_ext/libuv/src/unix/loop.c +58 -0
- data/ext/asyncengine_ext/libuv/src/unix/netbsd.c +108 -0
- data/ext/asyncengine_ext/libuv/src/unix/openbsd.c +295 -0
- data/ext/asyncengine_ext/libuv/src/unix/pipe.c +266 -0
- data/ext/asyncengine_ext/libuv/src/unix/prepare.c +79 -0
- data/ext/asyncengine_ext/libuv/src/unix/process.c +369 -0
- data/ext/asyncengine_ext/libuv/src/unix/stream.c +1033 -0
- data/ext/asyncengine_ext/libuv/src/unix/sunos.c +466 -0
- data/ext/asyncengine_ext/libuv/src/unix/tcp.c +327 -0
- data/ext/asyncengine_ext/libuv/src/unix/thread.c +154 -0
- data/ext/asyncengine_ext/libuv/src/unix/timer.c +127 -0
- data/ext/asyncengine_ext/libuv/src/unix/tty.c +146 -0
- data/ext/asyncengine_ext/libuv/src/unix/udp.c +670 -0
- data/ext/asyncengine_ext/libuv/src/unix/uv-eio.c +124 -0
- data/ext/asyncengine_ext/libuv/src/unix/uv-eio.h +13 -0
- data/ext/asyncengine_ext/libuv/src/uv-common.c +354 -0
- data/ext/asyncengine_ext/libuv/src/uv-common.h +87 -0
- data/ext/asyncengine_ext/libuv/src/win/async.c +127 -0
- data/ext/asyncengine_ext/libuv/src/win/cares.c +290 -0
- data/ext/asyncengine_ext/libuv/src/win/core.c +270 -0
- data/ext/asyncengine_ext/libuv/src/win/dl.c +82 -0
- data/ext/asyncengine_ext/libuv/src/win/error.c +132 -0
- data/ext/asyncengine_ext/libuv/src/win/fs-event.c +514 -0
- data/ext/asyncengine_ext/libuv/src/win/fs.c +1576 -0
- data/ext/asyncengine_ext/libuv/src/win/getaddrinfo.c +372 -0
- data/ext/asyncengine_ext/libuv/src/win/handle.c +225 -0
- data/ext/asyncengine_ext/libuv/src/win/internal.h +352 -0
- data/ext/asyncengine_ext/libuv/src/win/loop-watcher.c +131 -0
- data/ext/asyncengine_ext/libuv/src/win/pipe.c +1661 -0
- data/ext/asyncengine_ext/libuv/src/win/process.c +1140 -0
- data/ext/asyncengine_ext/libuv/src/win/req.c +174 -0
- data/ext/asyncengine_ext/libuv/src/win/stream.c +201 -0
- data/ext/asyncengine_ext/libuv/src/win/tcp.c +1282 -0
- data/ext/asyncengine_ext/libuv/src/win/thread.c +332 -0
- data/ext/asyncengine_ext/libuv/src/win/threadpool.c +73 -0
- data/ext/asyncengine_ext/libuv/src/win/timer.c +276 -0
- data/ext/asyncengine_ext/libuv/src/win/tty.c +1795 -0
- data/ext/asyncengine_ext/libuv/src/win/udp.c +709 -0
- data/ext/asyncengine_ext/libuv/src/win/util.c +719 -0
- data/ext/asyncengine_ext/libuv/src/win/winapi.c +117 -0
- data/ext/asyncengine_ext/libuv/src/win/winapi.h +4419 -0
- data/ext/asyncengine_ext/libuv/src/win/winsock.c +470 -0
- data/ext/asyncengine_ext/libuv/src/win/winsock.h +138 -0
- data/ext/asyncengine_ext/libuv/test/benchmark-ares.c +118 -0
- data/ext/asyncengine_ext/libuv/test/benchmark-getaddrinfo.c +94 -0
- data/ext/asyncengine_ext/libuv/test/benchmark-list.h +105 -0
- data/ext/asyncengine_ext/libuv/test/benchmark-ping-pongs.c +213 -0
- data/ext/asyncengine_ext/libuv/test/benchmark-pound.c +324 -0
- data/ext/asyncengine_ext/libuv/test/benchmark-pump.c +462 -0
- data/ext/asyncengine_ext/libuv/test/benchmark-sizes.c +40 -0
- data/ext/asyncengine_ext/libuv/test/benchmark-spawn.c +156 -0
- data/ext/asyncengine_ext/libuv/test/benchmark-tcp-write-batch.c +140 -0
- data/ext/asyncengine_ext/libuv/test/benchmark-thread.c +64 -0
- data/ext/asyncengine_ext/libuv/test/benchmark-udp-packet-storm.c +247 -0
- data/ext/asyncengine_ext/libuv/test/blackhole-server.c +118 -0
- data/ext/asyncengine_ext/libuv/test/dns-server.c +321 -0
- data/ext/asyncengine_ext/libuv/test/echo-server.c +370 -0
- data/ext/asyncengine_ext/libuv/test/fixtures/empty_file +0 -0
- data/ext/asyncengine_ext/libuv/test/fixtures/load_error.node +1 -0
- data/ext/asyncengine_ext/libuv/test/run-benchmarks.c +64 -0
- data/ext/asyncengine_ext/libuv/test/run-tests.c +108 -0
- data/ext/asyncengine_ext/libuv/test/runner-unix.c +315 -0
- data/ext/asyncengine_ext/libuv/test/runner-unix.h +36 -0
- data/ext/asyncengine_ext/libuv/test/runner-win.c +343 -0
- data/ext/asyncengine_ext/libuv/test/runner-win.h +42 -0
- data/ext/asyncengine_ext/libuv/test/runner.c +317 -0
- data/ext/asyncengine_ext/libuv/test/runner.h +159 -0
- data/ext/asyncengine_ext/libuv/test/task.h +117 -0
- data/ext/asyncengine_ext/libuv/test/test-async.c +216 -0
- data/ext/asyncengine_ext/libuv/test/test-callback-stack.c +203 -0
- data/ext/asyncengine_ext/libuv/test/test-connection-fail.c +148 -0
- data/ext/asyncengine_ext/libuv/test/test-counters-init.c +216 -0
- data/ext/asyncengine_ext/libuv/test/test-cwd-and-chdir.c +64 -0
- data/ext/asyncengine_ext/libuv/test/test-delayed-accept.c +197 -0
- data/ext/asyncengine_ext/libuv/test/test-dlerror.c +49 -0
- data/ext/asyncengine_ext/libuv/test/test-eio-overflow.c +90 -0
- data/ext/asyncengine_ext/libuv/test/test-error.c +59 -0
- data/ext/asyncengine_ext/libuv/test/test-fail-always.c +29 -0
- data/ext/asyncengine_ext/libuv/test/test-fs-event.c +442 -0
- data/ext/asyncengine_ext/libuv/test/test-fs.c +1731 -0
- data/ext/asyncengine_ext/libuv/test/test-get-currentexe.c +63 -0
- data/ext/asyncengine_ext/libuv/test/test-get-loadavg.c +36 -0
- data/ext/asyncengine_ext/libuv/test/test-get-memory.c +38 -0
- data/ext/asyncengine_ext/libuv/test/test-getaddrinfo.c +122 -0
- data/ext/asyncengine_ext/libuv/test/test-gethostbyname.c +189 -0
- data/ext/asyncengine_ext/libuv/test/test-getsockname.c +342 -0
- data/ext/asyncengine_ext/libuv/test/test-hrtime.c +51 -0
- data/ext/asyncengine_ext/libuv/test/test-idle.c +81 -0
- data/ext/asyncengine_ext/libuv/test/test-ipc-send-recv.c +209 -0
- data/ext/asyncengine_ext/libuv/test/test-ipc.c +614 -0
- data/ext/asyncengine_ext/libuv/test/test-list.h +371 -0
- data/ext/asyncengine_ext/libuv/test/test-loop-handles.c +359 -0
- data/ext/asyncengine_ext/libuv/test/test-multiple-listen.c +102 -0
- data/ext/asyncengine_ext/libuv/test/test-mutexes.c +63 -0
- data/ext/asyncengine_ext/libuv/test/test-pass-always.c +28 -0
- data/ext/asyncengine_ext/libuv/test/test-ping-pong.c +253 -0
- data/ext/asyncengine_ext/libuv/test/test-pipe-bind-error.c +140 -0
- data/ext/asyncengine_ext/libuv/test/test-pipe-connect-error.c +96 -0
- data/ext/asyncengine_ext/libuv/test/test-platform-output.c +87 -0
- data/ext/asyncengine_ext/libuv/test/test-process-title.c +42 -0
- data/ext/asyncengine_ext/libuv/test/test-ref.c +322 -0
- data/ext/asyncengine_ext/libuv/test/test-run-once.c +44 -0
- data/ext/asyncengine_ext/libuv/test/test-shutdown-close.c +103 -0
- data/ext/asyncengine_ext/libuv/test/test-shutdown-eof.c +183 -0
- data/ext/asyncengine_ext/libuv/test/test-spawn.c +499 -0
- data/ext/asyncengine_ext/libuv/test/test-stdio-over-pipes.c +256 -0
- data/ext/asyncengine_ext/libuv/test/test-tcp-bind-error.c +191 -0
- data/ext/asyncengine_ext/libuv/test/test-tcp-bind6-error.c +154 -0
- data/ext/asyncengine_ext/libuv/test/test-tcp-close.c +129 -0
- data/ext/asyncengine_ext/libuv/test/test-tcp-connect-error.c +70 -0
- data/ext/asyncengine_ext/libuv/test/test-tcp-connect6-error.c +68 -0
- data/ext/asyncengine_ext/libuv/test/test-tcp-flags.c +51 -0
- data/ext/asyncengine_ext/libuv/test/test-tcp-write-error.c +168 -0
- data/ext/asyncengine_ext/libuv/test/test-tcp-write-to-half-open-connection.c +135 -0
- data/ext/asyncengine_ext/libuv/test/test-tcp-writealot.c +195 -0
- data/ext/asyncengine_ext/libuv/test/test-thread.c +183 -0
- data/ext/asyncengine_ext/libuv/test/test-threadpool.c +57 -0
- data/ext/asyncengine_ext/libuv/test/test-timer-again.c +141 -0
- data/ext/asyncengine_ext/libuv/test/test-timer.c +130 -0
- data/ext/asyncengine_ext/libuv/test/test-tty.c +110 -0
- data/ext/asyncengine_ext/libuv/test/test-udp-dgram-too-big.c +86 -0
- data/ext/asyncengine_ext/libuv/test/test-udp-ipv6.c +156 -0
- data/ext/asyncengine_ext/libuv/test/test-udp-multicast-join.c +139 -0
- data/ext/asyncengine_ext/libuv/test/test-udp-multicast-ttl.c +86 -0
- data/ext/asyncengine_ext/libuv/test/test-udp-options.c +86 -0
- data/ext/asyncengine_ext/libuv/test/test-udp-send-and-recv.c +208 -0
- data/ext/asyncengine_ext/libuv/test/test-util.c +97 -0
- data/ext/asyncengine_ext/libuv/uv.gyp +435 -0
- data/ext/asyncengine_ext/libuv/vcbuild.bat +105 -0
- data/lib/asyncengine/version.rb +3 -0
- data/lib/asyncengine.rb +41 -0
- metadata +384 -0
@@ -0,0 +1,22 @@
|
|
1
|
+
include_directories(${CMAKE_CURRENT_SOURCE_DIR})
|
2
|
+
include_directories(${node_platform}-${cares_arch})
|
3
|
+
add_definitions(-DHAVE_CONFIG_H=1)
|
4
|
+
|
5
|
+
include(CheckLibraryExists)
|
6
|
+
check_library_exists(socket socket "" HAVE_SOCKET_LIB)
|
7
|
+
check_library_exists(nsl gethostbyname "" HAVE_NSL_LIB)
|
8
|
+
|
9
|
+
file(GLOB lib_sources *.c)
|
10
|
+
add_library(cares ${lib_sources})
|
11
|
+
|
12
|
+
if(${HAVE_SOCKET_LIB})
|
13
|
+
set(cares_libs ${cares_libs} socket)
|
14
|
+
endif()
|
15
|
+
|
16
|
+
if(${HAVE_NSL_LIB})
|
17
|
+
set(cares_libs ${cares_libs} nsl)
|
18
|
+
endif()
|
19
|
+
|
20
|
+
if(cares_libs)
|
21
|
+
target_link_libraries(cares ${cares_libs})
|
22
|
+
endif()
|
@@ -0,0 +1,21 @@
|
|
1
|
+
Major changes since:
|
2
|
+
* see the CHANGES file
|
3
|
+
|
4
|
+
Major changes in release 1.1.1:
|
5
|
+
* ares should now compile as C++ code (no longer uses reserved word
|
6
|
+
"class").
|
7
|
+
* Added SRV support to adig test program.
|
8
|
+
* Fixed a few error handling bugs in query processing.
|
9
|
+
|
10
|
+
Major changes in release 1.1.0:
|
11
|
+
* Added ares_free_string() function so that memory can be freed in the
|
12
|
+
same layer as it is allocated, a desirable feature in some
|
13
|
+
environments.
|
14
|
+
* A few of the ares_dns.h macros are fixed to use the proper bitwise
|
15
|
+
operator.
|
16
|
+
* Fixed a couple of fenceposts fixed in ares_expand_name()'s
|
17
|
+
bounds-checking.
|
18
|
+
* In process_timeouts(), extract query->next before calling
|
19
|
+
next_server() and possibly freeing the query structure.
|
20
|
+
* Casted arguments to ctype macros casted to unsigned char, since not
|
21
|
+
all char values are valid inputs to those macros according to ANSI.
|
@@ -0,0 +1,60 @@
|
|
1
|
+
c-ares
|
2
|
+
======
|
3
|
+
|
4
|
+
This is c-ares, an asynchronous resolver library. It is intended for
|
5
|
+
applications which need to perform DNS queries without blocking, or need to
|
6
|
+
perform multiple DNS queries in parallel. The primary examples of such
|
7
|
+
applications are servers which communicate with multiple clients and programs
|
8
|
+
with graphical user interfaces.
|
9
|
+
|
10
|
+
The full source code is available in the 'c-ares' release archives, and in a
|
11
|
+
git repository: http://github.com/bagder/c-ares
|
12
|
+
|
13
|
+
If you find bugs, correct flaws, have questions or have comments in general in
|
14
|
+
regard to c-ares (or by all means the original ares too), get in touch with us
|
15
|
+
on the c-ares mailing list: http://cool.haxx.se/mailman/listinfo/c-ares
|
16
|
+
|
17
|
+
c-ares is of course distributed under the same MIT-style license as the
|
18
|
+
original ares.
|
19
|
+
|
20
|
+
You'll find all c-ares details and news here:
|
21
|
+
|
22
|
+
http://c-ares.haxx.se/
|
23
|
+
|
24
|
+
|
25
|
+
NOTES FOR C-ARES HACKERS
|
26
|
+
|
27
|
+
The following notes apply to c-ares version 1.7.0 and later.
|
28
|
+
|
29
|
+
* The distributed ares_build.h file is only intended to be used on systems
|
30
|
+
which can not run the also distributed configure script.
|
31
|
+
|
32
|
+
* The distributed ares_build.h file is generated as a copy of ares_build.h.dist
|
33
|
+
when the c-ares source code distribution archive file is originally created.
|
34
|
+
|
35
|
+
* If you check out from git on a non-configure platform, you must run the
|
36
|
+
appropriate buildconf* script to set up ares_build.h and other local files
|
37
|
+
before being able of compiling the library.
|
38
|
+
|
39
|
+
* On systems capable of running the configure script, the configure process
|
40
|
+
will overwrite the distributed ares_build.h file with one that is suitable
|
41
|
+
and specific to the library being configured and built, this new file is
|
42
|
+
generated from the ares_build.h.in template file.
|
43
|
+
|
44
|
+
* If you intend to distribute an already compiled c-ares library you _MUST_
|
45
|
+
also distribute along with it the generated ares_build.h which has been
|
46
|
+
used to compile it. Otherwise the library will be of no use for the users of
|
47
|
+
the library that you have built. It is _your_ responsibility to provide this
|
48
|
+
file. No one at the c-ares project can know how you have built the library.
|
49
|
+
|
50
|
+
* File ares_build.h includes platform and configuration dependent info,
|
51
|
+
and must not be modified by anyone. Configure script generates it for you.
|
52
|
+
|
53
|
+
* We cannot assume anything else but very basic compiler features being
|
54
|
+
present. While c-ares requires an ANSI C compiler to build, some of the
|
55
|
+
earlier ANSI compilers clearly can't deal with some preprocessor operators.
|
56
|
+
|
57
|
+
* Newlines must remain unix-style for older compilers' sake.
|
58
|
+
|
59
|
+
* Comments must be written in the old-style /* unnested C-fashion */
|
60
|
+
|
@@ -0,0 +1,13 @@
|
|
1
|
+
c-ares
|
2
|
+
======
|
3
|
+
|
4
|
+
This package is based on ares 1.1.1 (written by Greg Hudson). I decided to
|
5
|
+
fork and release a separate project since the ares author didn't want the
|
6
|
+
improvements that were vital for our use of it.
|
7
|
+
|
8
|
+
This package is dubbed 'c-ares' since I (Daniel Stenberg) wanted this for use
|
9
|
+
within the curl project (hence the letter C) and it makes a nice pun. Also,
|
10
|
+
c-ares is not API compatible with ares: a new name makes that more obvious to
|
11
|
+
the public.
|
12
|
+
|
13
|
+
The original libares was distributed at athena-dist.mit.edu:pub/ATHENA/ares.
|
@@ -0,0 +1,142 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
___ __ _ _ __ ___ ___
|
4
|
+
/ __| ___ / _` | '__/ _ \/ __|
|
5
|
+
| (_ |___| (_| | | | __/\__ \
|
6
|
+
\___| \__,_|_| \___||___/
|
7
|
+
|
8
|
+
|
9
|
+
How to build c-ares using MSVC or Visual Studio
|
10
|
+
=================================================
|
11
|
+
|
12
|
+
|
13
|
+
|
14
|
+
How to build using MSVC from the command line
|
15
|
+
---------------------------------------------
|
16
|
+
|
17
|
+
Open a command prompt window and ensure that the environment is properly
|
18
|
+
set up in order to use MSVC or Visual Studio compiler tools.
|
19
|
+
|
20
|
+
Change to c-ares source folder where Makefile.msvc file is located and run:
|
21
|
+
|
22
|
+
> nmake -f Makefile.msvc
|
23
|
+
|
24
|
+
This will build all c-ares libraries as well as three sample programs.
|
25
|
+
|
26
|
+
Once the above command has finished a new folder named MSVCXX will exist
|
27
|
+
below the folder where makefile.msvc is found. The name of the folder
|
28
|
+
depends on the MSVC compiler version being used to build c-ares.
|
29
|
+
|
30
|
+
Below the MSVCXX folder there will exist four folders named 'cares',
|
31
|
+
'ahost', 'acountry', and 'adig'. The 'cares' folder is the one that
|
32
|
+
holds the c-ares libraries you have just generated, the other three
|
33
|
+
hold sample programs that use the libraries.
|
34
|
+
|
35
|
+
The above command builds four versions of the c-ares library, dynamic
|
36
|
+
and static versions and each one in release and debug flavours. Each
|
37
|
+
of these is found in folders named dll-release, dll-debug, lib-release,
|
38
|
+
and lib-debug, which hang from the 'cares' folder mentioned above. Each
|
39
|
+
sample program also has folders with the same names to reflect which
|
40
|
+
library version it is using.
|
41
|
+
|
42
|
+
|
43
|
+
How to install using MSVC from the command line
|
44
|
+
-----------------------------------------------
|
45
|
+
|
46
|
+
In order to allow easy usage of c-ares libraries it may be convenient to
|
47
|
+
install c-ares libraries and header files to a common subdirectory tree.
|
48
|
+
|
49
|
+
Once that c-ares libraries have been built using procedure described above,
|
50
|
+
use same command prompt window to define environment variable INSTALL_DIR
|
51
|
+
to designate the top subdirectory where installation of c-ares libraries and
|
52
|
+
header files will be done.
|
53
|
+
|
54
|
+
> set INSTALL_DIR=c:\c-ares
|
55
|
+
|
56
|
+
Afterwards, run following command to actually perform the installation:
|
57
|
+
|
58
|
+
> nmake -f Makefile.msvc install
|
59
|
+
|
60
|
+
Installation procedure will copy c-ares libraries to subdirectory 'lib' and
|
61
|
+
c-ares header files to subdirectory 'include' below the INSTALL_DIR subdir.
|
62
|
+
|
63
|
+
When environment variable INSTALL_DIR is not defined, installation is done
|
64
|
+
to c-ares source folder where Makefile.msvc file is located.
|
65
|
+
|
66
|
+
|
67
|
+
How to build using Visual Studio 6 IDE
|
68
|
+
--------------------------------------
|
69
|
+
|
70
|
+
A VC++ 6.0 reference workspace (vc6aws.dsw) is available within the 'vc'
|
71
|
+
folder to allow proper building of the library and sample programs.
|
72
|
+
|
73
|
+
1) Open the vc6aws.dsw workspace with MSVC6's IDE.
|
74
|
+
2) Select 'Build' from top menu.
|
75
|
+
3) Select 'Batch Build' from dropdown menu.
|
76
|
+
4) Make sure that the sixteen project configurations are 'checked'.
|
77
|
+
5) Click on the 'Build' button.
|
78
|
+
6) Once the sixteen project configurations are built you are done.
|
79
|
+
|
80
|
+
Dynamic and static c-ares libraries are built in debug and release flavours,
|
81
|
+
and can be located each one in its own subdirectory, dll-debug, dll-release,
|
82
|
+
lib-debug and lib-release, all of them below the 'vc\cares' subdirectory.
|
83
|
+
|
84
|
+
In the same way four executable versions of each sample program are built,
|
85
|
+
each using its respective library. The resulting sample executables are
|
86
|
+
located in its own subdirectory, dll-debug, dll-release, lib-debug and
|
87
|
+
lib-release, below the 'vc\acountry', 'vc\adig' and 'vc\ahost'folders.
|
88
|
+
|
89
|
+
These reference VC++ 6.0 configurations are generated using the dynamic CRT.
|
90
|
+
|
91
|
+
|
92
|
+
How to build using Visual Studio 2003 or newer IDE
|
93
|
+
--------------------------------------------------
|
94
|
+
|
95
|
+
First you have to convert the VC++ 6.0 reference workspace and project files
|
96
|
+
to the Visual Studio IDE version you are using, following next steps:
|
97
|
+
|
98
|
+
1) Open vc\vc6aws.dsw with VS20XX.
|
99
|
+
2) Allow VS20XX to update all projects and workspaces.
|
100
|
+
3) Save ALL and close VS20XX.
|
101
|
+
4) Open vc\vc6aws.sln with VS20XX.
|
102
|
+
5) Select batch build, check 'all' projects and click 'build' button.
|
103
|
+
|
104
|
+
Same comments relative to generated files and folders as done above for
|
105
|
+
Visual Studio 6 IDE apply here.
|
106
|
+
|
107
|
+
|
108
|
+
Relationship between c-ares library file names and versions
|
109
|
+
-----------------------------------------------------------
|
110
|
+
|
111
|
+
c-ares static release library version files:
|
112
|
+
|
113
|
+
libcares.lib -> static release library
|
114
|
+
|
115
|
+
c-ares static debug library version files:
|
116
|
+
|
117
|
+
libcaresd.lib -> static debug library
|
118
|
+
|
119
|
+
c-ares dynamic release library version files:
|
120
|
+
|
121
|
+
cares.dll -> dynamic release library
|
122
|
+
cares.lib -> import library for the dynamic release library
|
123
|
+
cares.exp -> export file for the dynamic release library
|
124
|
+
|
125
|
+
c-ares dynamic debug library version files:
|
126
|
+
|
127
|
+
caresd.dll -> dynamic debug library
|
128
|
+
caresd.lib -> import library for the dynamic debug library
|
129
|
+
caresd.exp -> export file for the dynamic debug library
|
130
|
+
caresd.pdb -> debug symbol file for the dynamic debug library
|
131
|
+
|
132
|
+
|
133
|
+
How to use c-ares static libraries
|
134
|
+
----------------------------------
|
135
|
+
|
136
|
+
When using the c-ares static library in your program, you will have to
|
137
|
+
define preprocessor symbol CARES_STATICLIB while building your program,
|
138
|
+
otherwise you will get errors at linkage stage.
|
139
|
+
|
140
|
+
|
141
|
+
Have Fun!
|
142
|
+
|
@@ -0,0 +1,21 @@
|
|
1
|
+
Library: c-ares, DNS resolver
|
2
|
+
|
3
|
+
Version: 1.7.3 (11 June, 2010)
|
4
|
+
|
5
|
+
Authors: Greg Hudson, Daniel Stenberg
|
6
|
+
|
7
|
+
License: MIT
|
8
|
+
|
9
|
+
Notes:
|
10
|
+
|
11
|
+
Just use waf instead of the autoconf based configure script. Delete most of
|
12
|
+
the documentation and other files distributed with it. To upgrade, run
|
13
|
+
./configure on linux, macintosh, solaris (and other supported platforms) and
|
14
|
+
copy
|
15
|
+
- ares_config.h
|
16
|
+
- ares_setup.h
|
17
|
+
- ares_build.h
|
18
|
+
into the appropriate directory.
|
19
|
+
|
20
|
+
|
21
|
+
|
@@ -0,0 +1,26 @@
|
|
1
|
+
c-ares version 1.7.5
|
2
|
+
|
3
|
+
Fixed:
|
4
|
+
|
5
|
+
o detection of semicolon comments in resolv.conf
|
6
|
+
o avoid using system's inet_net_pton affected by the WLB-2008080064 advisory
|
7
|
+
o replacement ares_inet_net_pton affected by the WLB-2008080064 advisory
|
8
|
+
o replacement ares_inet_ntop affected by potential out of bounds write
|
9
|
+
o added install target to Makefile.msvc
|
10
|
+
o only fall back to AF_INET searches when looking for AF_UNSPEC addresses
|
11
|
+
o fixed ares_parse_*_reply memory leaks
|
12
|
+
o Use correct sizeof in ares_getnameinfo()
|
13
|
+
o IPv6-on-windows: find DNS servers correctly
|
14
|
+
o man pages: docs for the c-ares utility programs
|
15
|
+
o getservbyport replacement for Win CE
|
16
|
+
o config_sortlist: (win32) missing else
|
17
|
+
o advance_tcp_send_queue: avoid NULL ptr dereference
|
18
|
+
o configure: fix a bashism
|
19
|
+
o ares_expand_name: Fix encoded length for indirect root
|
20
|
+
|
21
|
+
Thanks go to these friendly people for their efforts and contributions:
|
22
|
+
|
23
|
+
Yang Tse, Jakub Hrozek, Gisle Vanem, Tom Hughes, David Stuart, Dima Tisnek,
|
24
|
+
Peter Pentchev, Stefan Buhler
|
25
|
+
|
26
|
+
Have fun!
|
@@ -0,0 +1,23 @@
|
|
1
|
+
TODO
|
2
|
+
====
|
3
|
+
|
4
|
+
ares_reinit()
|
5
|
+
|
6
|
+
- To allow an app to force a re-read of /etc/resolv.conf etc, pretty much
|
7
|
+
like the res_init() resolver function offers
|
8
|
+
|
9
|
+
ares_gethostbyname
|
10
|
+
|
11
|
+
- When built to support IPv6, it needs to also support PF_UNSPEC or similar,
|
12
|
+
so that an application can ask for any protocol and then c-ares would return
|
13
|
+
all known resolves and not just explicitly IPv4 _or_ IPv6 resolves.
|
14
|
+
|
15
|
+
ares_process
|
16
|
+
|
17
|
+
- Upon next ABI breakage ares_process() should be changed to return 'int'
|
18
|
+
and return ARES_ENOTINITIALIZED if ares_library_init() has not been called.
|
19
|
+
|
20
|
+
ares_process_fd
|
21
|
+
|
22
|
+
- Upon next ABI breakage ares_process_fd() should be changed to return
|
23
|
+
'int' and return ARES_ENOTINITIALIZED if library has not been initialized.
|
@@ -0,0 +1,66 @@
|
|
1
|
+
|
2
|
+
/* Copyright 1998 by the Massachusetts Institute of Technology.
|
3
|
+
*
|
4
|
+
* Permission to use, copy, modify, and distribute this
|
5
|
+
* software and its documentation for any purpose and without
|
6
|
+
* fee is hereby granted, provided that the above copyright
|
7
|
+
* notice appear in all copies and that both that copyright
|
8
|
+
* notice and this permission notice appear in supporting
|
9
|
+
* documentation, and that the name of M.I.T. not be used in
|
10
|
+
* advertising or publicity pertaining to distribution of the
|
11
|
+
* software without specific, written prior permission.
|
12
|
+
* M.I.T. makes no representations about the suitability of
|
13
|
+
* this software for any purpose. It is provided "as is"
|
14
|
+
* without express or implied warranty.
|
15
|
+
*/
|
16
|
+
|
17
|
+
#include "ares_setup.h"
|
18
|
+
|
19
|
+
#include <stdlib.h>
|
20
|
+
#ifdef HAVE_UNISTD_H
|
21
|
+
#include <unistd.h>
|
22
|
+
#endif
|
23
|
+
|
24
|
+
#include "ares.h"
|
25
|
+
#include "ares_private.h"
|
26
|
+
|
27
|
+
void ares__close_sockets(ares_channel channel, struct server_state *server)
|
28
|
+
{
|
29
|
+
struct send_request *sendreq;
|
30
|
+
|
31
|
+
/* Free all pending output buffers. */
|
32
|
+
while (server->qhead)
|
33
|
+
{
|
34
|
+
/* Advance server->qhead; pull out query as we go. */
|
35
|
+
sendreq = server->qhead;
|
36
|
+
server->qhead = sendreq->next;
|
37
|
+
if (sendreq->data_storage != NULL)
|
38
|
+
free(sendreq->data_storage);
|
39
|
+
free(sendreq);
|
40
|
+
}
|
41
|
+
server->qtail = NULL;
|
42
|
+
|
43
|
+
/* Reset any existing input buffer. */
|
44
|
+
if (server->tcp_buffer)
|
45
|
+
free(server->tcp_buffer);
|
46
|
+
server->tcp_buffer = NULL;
|
47
|
+
server->tcp_lenbuf_pos = 0;
|
48
|
+
|
49
|
+
/* Reset brokenness */
|
50
|
+
server->is_broken = 0;
|
51
|
+
|
52
|
+
/* Close the TCP and UDP sockets. */
|
53
|
+
if (server->tcp_socket != ARES_SOCKET_BAD)
|
54
|
+
{
|
55
|
+
SOCK_STATE_CALLBACK(channel, server->tcp_socket, 0, 0);
|
56
|
+
sclose(server->tcp_socket);
|
57
|
+
server->tcp_socket = ARES_SOCKET_BAD;
|
58
|
+
server->tcp_connection_generation = ++channel->tcp_connection_generation;
|
59
|
+
}
|
60
|
+
if (server->udp_socket != ARES_SOCKET_BAD)
|
61
|
+
{
|
62
|
+
SOCK_STATE_CALLBACK(channel, server->udp_socket, 0, 0);
|
63
|
+
sclose(server->udp_socket);
|
64
|
+
server->udp_socket = ARES_SOCKET_BAD;
|
65
|
+
}
|
66
|
+
}
|
@@ -0,0 +1,263 @@
|
|
1
|
+
|
2
|
+
/* Copyright 1998, 2010 by the Massachusetts Institute of Technology.
|
3
|
+
*
|
4
|
+
* Permission to use, copy, modify, and distribute this
|
5
|
+
* software and its documentation for any purpose and without
|
6
|
+
* fee is hereby granted, provided that the above copyright
|
7
|
+
* notice appear in all copies and that both that copyright
|
8
|
+
* notice and this permission notice appear in supporting
|
9
|
+
* documentation, and that the name of M.I.T. not be used in
|
10
|
+
* advertising or publicity pertaining to distribution of the
|
11
|
+
* software without specific, written prior permission.
|
12
|
+
* M.I.T. makes no representations about the suitability of
|
13
|
+
* this software for any purpose. It is provided "as is"
|
14
|
+
* without express or implied warranty.
|
15
|
+
*/
|
16
|
+
|
17
|
+
#include "ares_setup.h"
|
18
|
+
|
19
|
+
#ifdef HAVE_SYS_SOCKET_H
|
20
|
+
# include <sys/socket.h>
|
21
|
+
#endif
|
22
|
+
#ifdef HAVE_NETINET_IN_H
|
23
|
+
# include <netinet/in.h>
|
24
|
+
#endif
|
25
|
+
#ifdef HAVE_NETDB_H
|
26
|
+
# include <netdb.h>
|
27
|
+
#endif
|
28
|
+
#ifdef HAVE_ARPA_INET_H
|
29
|
+
# include <arpa/inet.h>
|
30
|
+
#endif
|
31
|
+
|
32
|
+
#include "ares.h"
|
33
|
+
#include "inet_net_pton.h"
|
34
|
+
#include "ares_private.h"
|
35
|
+
|
36
|
+
int ares__get_hostent(FILE *fp, int family, struct hostent **host)
|
37
|
+
{
|
38
|
+
char *line = NULL, *p, *q, **alias;
|
39
|
+
char *txtaddr, *txthost, *txtalias;
|
40
|
+
int status;
|
41
|
+
size_t addrlen, linesize, naliases;
|
42
|
+
struct ares_addr addr;
|
43
|
+
struct hostent *hostent = NULL;
|
44
|
+
|
45
|
+
*host = NULL; /* Assume failure */
|
46
|
+
|
47
|
+
/* Validate family */
|
48
|
+
switch (family) {
|
49
|
+
case AF_INET:
|
50
|
+
case AF_INET6:
|
51
|
+
case AF_UNSPEC:
|
52
|
+
break;
|
53
|
+
default:
|
54
|
+
return ARES_EBADFAMILY;
|
55
|
+
}
|
56
|
+
|
57
|
+
while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS)
|
58
|
+
{
|
59
|
+
|
60
|
+
/* Trim line comment. */
|
61
|
+
p = line;
|
62
|
+
while (*p && (*p != '#'))
|
63
|
+
p++;
|
64
|
+
*p = '\0';
|
65
|
+
|
66
|
+
/* Trim trailing whitespace. */
|
67
|
+
q = p - 1;
|
68
|
+
while ((q >= line) && ISSPACE(*q))
|
69
|
+
q--;
|
70
|
+
*++q = '\0';
|
71
|
+
|
72
|
+
/* Skip leading whitespace. */
|
73
|
+
p = line;
|
74
|
+
while (*p && ISSPACE(*p))
|
75
|
+
p++;
|
76
|
+
if (!*p)
|
77
|
+
/* Ignore line if empty. */
|
78
|
+
continue;
|
79
|
+
|
80
|
+
/* Pointer to start of IPv4 or IPv6 address part. */
|
81
|
+
txtaddr = p;
|
82
|
+
|
83
|
+
/* Advance past address part. */
|
84
|
+
while (*p && !ISSPACE(*p))
|
85
|
+
p++;
|
86
|
+
if (!*p)
|
87
|
+
/* Ignore line if reached end of line. */
|
88
|
+
continue;
|
89
|
+
|
90
|
+
/* Null terminate address part. */
|
91
|
+
*p = '\0';
|
92
|
+
|
93
|
+
/* Advance to host name */
|
94
|
+
p++;
|
95
|
+
while (*p && ISSPACE(*p))
|
96
|
+
p++;
|
97
|
+
if (!*p)
|
98
|
+
/* Ignore line if reached end of line. */
|
99
|
+
continue;
|
100
|
+
|
101
|
+
/* Pointer to start of host name. */
|
102
|
+
txthost = p;
|
103
|
+
|
104
|
+
/* Advance past host name. */
|
105
|
+
while (*p && !ISSPACE(*p))
|
106
|
+
p++;
|
107
|
+
|
108
|
+
/* Pointer to start of first alias. */
|
109
|
+
txtalias = NULL;
|
110
|
+
if (*p)
|
111
|
+
{
|
112
|
+
q = p + 1;
|
113
|
+
while (*q && ISSPACE(*q))
|
114
|
+
q++;
|
115
|
+
if (*q)
|
116
|
+
txtalias = q;
|
117
|
+
}
|
118
|
+
|
119
|
+
/* Null terminate host name. */
|
120
|
+
*p = '\0';
|
121
|
+
|
122
|
+
/* find out number of aliases. */
|
123
|
+
naliases = 0;
|
124
|
+
if (txtalias)
|
125
|
+
{
|
126
|
+
p = txtalias;
|
127
|
+
while (*p)
|
128
|
+
{
|
129
|
+
while (*p && !ISSPACE(*p))
|
130
|
+
p++;
|
131
|
+
while (*p && ISSPACE(*p))
|
132
|
+
p++;
|
133
|
+
naliases++;
|
134
|
+
}
|
135
|
+
}
|
136
|
+
|
137
|
+
/* Convert address string to network address for the requested family. */
|
138
|
+
addrlen = 0;
|
139
|
+
addr.family = AF_UNSPEC;
|
140
|
+
addr.addrV4.s_addr = INADDR_NONE;
|
141
|
+
if ((family == AF_INET) || (family == AF_UNSPEC))
|
142
|
+
{
|
143
|
+
addr.addrV4.s_addr = inet_addr(txtaddr);
|
144
|
+
if (addr.addrV4.s_addr != INADDR_NONE)
|
145
|
+
{
|
146
|
+
/* Actual network address family and length. */
|
147
|
+
addr.family = AF_INET;
|
148
|
+
addrlen = sizeof(addr.addrV4);
|
149
|
+
}
|
150
|
+
}
|
151
|
+
if ((family == AF_INET6) || ((family == AF_UNSPEC) && (!addrlen)))
|
152
|
+
{
|
153
|
+
if (ares_inet_pton(AF_INET6, txtaddr, &addr.addrV6) > 0)
|
154
|
+
{
|
155
|
+
/* Actual network address family and length. */
|
156
|
+
addr.family = AF_INET6;
|
157
|
+
addrlen = sizeof(addr.addrV6);
|
158
|
+
}
|
159
|
+
}
|
160
|
+
if (!addrlen)
|
161
|
+
/* Ignore line if invalid address string for the requested family. */
|
162
|
+
continue;
|
163
|
+
|
164
|
+
/*
|
165
|
+
** Actual address family possible values are AF_INET and AF_INET6 only.
|
166
|
+
*/
|
167
|
+
|
168
|
+
/* Allocate memory for the hostent structure. */
|
169
|
+
hostent = malloc(sizeof(struct hostent));
|
170
|
+
if (!hostent)
|
171
|
+
break;
|
172
|
+
|
173
|
+
/* Initialize fields for out of memory condition. */
|
174
|
+
hostent->h_aliases = NULL;
|
175
|
+
hostent->h_addr_list = NULL;
|
176
|
+
|
177
|
+
/* Copy official host name. */
|
178
|
+
hostent->h_name = strdup(txthost);
|
179
|
+
if (!hostent->h_name)
|
180
|
+
break;
|
181
|
+
|
182
|
+
/* Copy network address. */
|
183
|
+
hostent->h_addr_list = malloc(2 * sizeof(char *));
|
184
|
+
if (!hostent->h_addr_list)
|
185
|
+
break;
|
186
|
+
hostent->h_addr_list[1] = NULL;
|
187
|
+
hostent->h_addr_list[0] = malloc(addrlen);
|
188
|
+
if (!hostent->h_addr_list[0])
|
189
|
+
break;
|
190
|
+
if (addr.family == AF_INET)
|
191
|
+
memcpy(hostent->h_addr_list[0], &addr.addrV4, sizeof(addr.addrV4));
|
192
|
+
else
|
193
|
+
memcpy(hostent->h_addr_list[0], &addr.addrV6, sizeof(addr.addrV6));
|
194
|
+
|
195
|
+
/* Copy aliases. */
|
196
|
+
hostent->h_aliases = malloc((naliases + 1) * sizeof(char *));
|
197
|
+
if (!hostent->h_aliases)
|
198
|
+
break;
|
199
|
+
alias = hostent->h_aliases;
|
200
|
+
while (naliases)
|
201
|
+
*(alias + naliases--) = NULL;
|
202
|
+
*alias = NULL;
|
203
|
+
while (txtalias)
|
204
|
+
{
|
205
|
+
p = txtalias;
|
206
|
+
while (*p && !ISSPACE(*p))
|
207
|
+
p++;
|
208
|
+
q = p;
|
209
|
+
while (*q && ISSPACE(*q))
|
210
|
+
q++;
|
211
|
+
*p = '\0';
|
212
|
+
if ((*alias = strdup(txtalias)) == NULL)
|
213
|
+
break;
|
214
|
+
alias++;
|
215
|
+
txtalias = *q ? q : NULL;
|
216
|
+
}
|
217
|
+
if (txtalias)
|
218
|
+
/* Alias memory allocation failure. */
|
219
|
+
break;
|
220
|
+
|
221
|
+
/* Copy actual network address family and length. */
|
222
|
+
hostent->h_addrtype = addr.family;
|
223
|
+
hostent->h_length = (int)addrlen;
|
224
|
+
|
225
|
+
/* Free line buffer. */
|
226
|
+
free(line);
|
227
|
+
|
228
|
+
/* Return hostent successfully */
|
229
|
+
*host = hostent;
|
230
|
+
return ARES_SUCCESS;
|
231
|
+
|
232
|
+
}
|
233
|
+
|
234
|
+
/* If allocated, free line buffer. */
|
235
|
+
if (line)
|
236
|
+
free(line);
|
237
|
+
|
238
|
+
if (status == ARES_SUCCESS)
|
239
|
+
{
|
240
|
+
/* Memory allocation failure; clean up. */
|
241
|
+
if (hostent)
|
242
|
+
{
|
243
|
+
if (hostent->h_name)
|
244
|
+
free((char *) hostent->h_name);
|
245
|
+
if (hostent->h_aliases)
|
246
|
+
{
|
247
|
+
for (alias = hostent->h_aliases; *alias; alias++)
|
248
|
+
free(*alias);
|
249
|
+
free(hostent->h_aliases);
|
250
|
+
}
|
251
|
+
if (hostent->h_addr_list)
|
252
|
+
{
|
253
|
+
if (hostent->h_addr_list[0])
|
254
|
+
free(hostent->h_addr_list[0]);
|
255
|
+
free(hostent->h_addr_list);
|
256
|
+
}
|
257
|
+
free(hostent);
|
258
|
+
}
|
259
|
+
return ARES_ENOMEM;
|
260
|
+
}
|
261
|
+
|
262
|
+
return status;
|
263
|
+
}
|