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,221 @@
|
|
1
|
+
#ifndef HEADER_CARES_IPHLPAPI_H
|
2
|
+
#define HEADER_CARES_IPHLPAPI_H
|
3
|
+
|
4
|
+
/* Copyright 1998 by the Massachusetts Institute of Technology.
|
5
|
+
* Copyright (C) 2004 - 2011 by Daniel Stenberg et al
|
6
|
+
*
|
7
|
+
* Permission to use, copy, modify, and distribute this
|
8
|
+
* software and its documentation for any purpose and without
|
9
|
+
* fee is hereby granted, provided that the above copyright
|
10
|
+
* notice appear in all copies and that both that copyright
|
11
|
+
* notice and this permission notice appear in supporting
|
12
|
+
* documentation, and that the name of M.I.T. not be used in
|
13
|
+
* advertising or publicity pertaining to distribution of the
|
14
|
+
* software without specific, written prior permission.
|
15
|
+
* M.I.T. makes no representations about the suitability of
|
16
|
+
* this software for any purpose. It is provided "as is"
|
17
|
+
* without express or implied warranty.
|
18
|
+
*/
|
19
|
+
|
20
|
+
#if defined(USE_WINSOCK)
|
21
|
+
|
22
|
+
#ifndef INET_ADDRSTRLEN
|
23
|
+
#define INET_ADDRSTRLEN 22
|
24
|
+
#endif
|
25
|
+
|
26
|
+
#ifndef INET6_ADDRSTRLEN
|
27
|
+
#define INET6_ADDRSTRLEN 65
|
28
|
+
#endif
|
29
|
+
|
30
|
+
/* ---------------------------------- */
|
31
|
+
#if !defined(_WS2DEF_) && \
|
32
|
+
!defined(__CSADDR_DEFINED__) && \
|
33
|
+
!defined(__CSADDR_T_DEFINED)
|
34
|
+
/* ---------------------------------- */
|
35
|
+
|
36
|
+
typedef struct _SOCKET_ADDRESS {
|
37
|
+
LPSOCKADDR lpSockaddr;
|
38
|
+
INT iSockaddrLength;
|
39
|
+
} SOCKET_ADDRESS, *PSOCKET_ADDRESS;
|
40
|
+
|
41
|
+
typedef struct _CSADDR_INFO {
|
42
|
+
SOCKET_ADDRESS LocalAddr;
|
43
|
+
SOCKET_ADDRESS RemoteAddr;
|
44
|
+
INT iSocketType;
|
45
|
+
INT iProtocol;
|
46
|
+
} CSADDR_INFO, *PCSADDR_INFO;
|
47
|
+
|
48
|
+
/* --------------------------------- */
|
49
|
+
#endif /* ! _WS2DEF_ && \ */
|
50
|
+
/* ! __CSADDR_DEFINED__ && \ */
|
51
|
+
/* ! __CSADDR_T_DEFINED */
|
52
|
+
/* --------------------------------- */
|
53
|
+
|
54
|
+
/* ------------------------------- */
|
55
|
+
#if !defined(IP_ADAPTER_DDNS_ENABLED)
|
56
|
+
/* ------------------------------- */
|
57
|
+
|
58
|
+
#define IP_ADAPTER_ADDRESS_DNS_ELIGIBLE 0x0001
|
59
|
+
#define IP_ADAPTER_ADDRESS_TRANSIENT 0x0002
|
60
|
+
|
61
|
+
#define IP_ADAPTER_DDNS_ENABLED 0x0001
|
62
|
+
#define IP_ADAPTER_REGISTER_ADAPTER_SUFFIX 0x0002
|
63
|
+
#define IP_ADAPTER_DHCP_ENABLED 0x0004
|
64
|
+
#define IP_ADAPTER_RECEIVE_ONLY 0x0008
|
65
|
+
#define IP_ADAPTER_NO_MULTICAST 0x0010
|
66
|
+
#define IP_ADAPTER_IPV6_OTHER_STATEFUL_CONFIG 0x0020
|
67
|
+
|
68
|
+
#define GAA_FLAG_SKIP_UNICAST 0x0001
|
69
|
+
#define GAA_FLAG_SKIP_ANYCAST 0x0002
|
70
|
+
#define GAA_FLAG_SKIP_MULTICAST 0x0004
|
71
|
+
#define GAA_FLAG_SKIP_DNS_SERVER 0x0008
|
72
|
+
#define GAA_FLAG_INCLUDE_PREFIX 0x0010
|
73
|
+
#define GAA_FLAG_SKIP_FRIENDLY_NAME 0x0020
|
74
|
+
|
75
|
+
typedef enum {
|
76
|
+
IpPrefixOriginOther = 0,
|
77
|
+
IpPrefixOriginManual,
|
78
|
+
IpPrefixOriginWellKnown,
|
79
|
+
IpPrefixOriginDhcp,
|
80
|
+
IpPrefixOriginRouterAdvertisement
|
81
|
+
} IP_PREFIX_ORIGIN;
|
82
|
+
|
83
|
+
typedef enum {
|
84
|
+
IpSuffixOriginOther = 0,
|
85
|
+
IpSuffixOriginManual,
|
86
|
+
IpSuffixOriginWellKnown,
|
87
|
+
IpSuffixOriginDhcp,
|
88
|
+
IpSuffixOriginLinkLayerAddress,
|
89
|
+
IpSuffixOriginRandom
|
90
|
+
} IP_SUFFIX_ORIGIN;
|
91
|
+
|
92
|
+
typedef enum {
|
93
|
+
IpDadStateInvalid = 0,
|
94
|
+
IpDadStateTentative,
|
95
|
+
IpDadStateDuplicate,
|
96
|
+
IpDadStateDeprecated,
|
97
|
+
IpDadStatePreferred
|
98
|
+
} IP_DAD_STATE;
|
99
|
+
|
100
|
+
typedef enum {
|
101
|
+
IfOperStatusUp = 1,
|
102
|
+
IfOperStatusDown,
|
103
|
+
IfOperStatusTesting,
|
104
|
+
IfOperStatusUnknown,
|
105
|
+
IfOperStatusDormant,
|
106
|
+
IfOperStatusNotPresent,
|
107
|
+
IfOperStatusLowerLayerDown
|
108
|
+
} IF_OPER_STATUS;
|
109
|
+
|
110
|
+
typedef enum {
|
111
|
+
ScopeLevelInterface = 0x0001,
|
112
|
+
ScopeLevelLink = 0x0002,
|
113
|
+
ScopeLevelSubnet = 0x0003,
|
114
|
+
ScopeLevelAdmin = 0x0004,
|
115
|
+
ScopeLevelSite = 0x0005,
|
116
|
+
ScopeLevelOrganization = 0x0008,
|
117
|
+
ScopeLevelGlobal = 0x000E
|
118
|
+
} SCOPE_LEVEL;
|
119
|
+
|
120
|
+
typedef struct _IP_ADAPTER_UNICAST_ADDRESS {
|
121
|
+
union {
|
122
|
+
ULONGLONG Alignment;
|
123
|
+
struct {
|
124
|
+
ULONG Length;
|
125
|
+
DWORD Flags;
|
126
|
+
} s;
|
127
|
+
} u;
|
128
|
+
struct _IP_ADAPTER_UNICAST_ADDRESS *Next;
|
129
|
+
SOCKET_ADDRESS Address;
|
130
|
+
IP_PREFIX_ORIGIN PrefixOrigin;
|
131
|
+
IP_SUFFIX_ORIGIN SuffixOrigin;
|
132
|
+
IP_DAD_STATE DadState;
|
133
|
+
ULONG ValidLifetime;
|
134
|
+
ULONG PreferredLifetime;
|
135
|
+
ULONG LeaseLifetime;
|
136
|
+
} IP_ADAPTER_UNICAST_ADDRESS, *PIP_ADAPTER_UNICAST_ADDRESS;
|
137
|
+
|
138
|
+
typedef struct _IP_ADAPTER_ANYCAST_ADDRESS {
|
139
|
+
union {
|
140
|
+
ULONGLONG Alignment;
|
141
|
+
struct {
|
142
|
+
ULONG Length;
|
143
|
+
DWORD Flags;
|
144
|
+
} s;
|
145
|
+
} u;
|
146
|
+
struct _IP_ADAPTER_ANYCAST_ADDRESS *Next;
|
147
|
+
SOCKET_ADDRESS Address;
|
148
|
+
} IP_ADAPTER_ANYCAST_ADDRESS, *PIP_ADAPTER_ANYCAST_ADDRESS;
|
149
|
+
|
150
|
+
typedef struct _IP_ADAPTER_MULTICAST_ADDRESS {
|
151
|
+
union {
|
152
|
+
ULONGLONG Alignment;
|
153
|
+
struct {
|
154
|
+
ULONG Length;
|
155
|
+
DWORD Flags;
|
156
|
+
} s;
|
157
|
+
} u;
|
158
|
+
struct _IP_ADAPTER_MULTICAST_ADDRESS *Next;
|
159
|
+
SOCKET_ADDRESS Address;
|
160
|
+
} IP_ADAPTER_MULTICAST_ADDRESS, *PIP_ADAPTER_MULTICAST_ADDRESS;
|
161
|
+
|
162
|
+
typedef struct _IP_ADAPTER_DNS_SERVER_ADDRESS {
|
163
|
+
union {
|
164
|
+
ULONGLONG Alignment;
|
165
|
+
struct {
|
166
|
+
ULONG Length;
|
167
|
+
DWORD Reserved;
|
168
|
+
} s;
|
169
|
+
} u;
|
170
|
+
struct _IP_ADAPTER_DNS_SERVER_ADDRESS *Next;
|
171
|
+
SOCKET_ADDRESS Address;
|
172
|
+
} IP_ADAPTER_DNS_SERVER_ADDRESS, *PIP_ADAPTER_DNS_SERVER_ADDRESS;
|
173
|
+
|
174
|
+
typedef struct _IP_ADAPTER_PREFIX {
|
175
|
+
union {
|
176
|
+
ULONGLONG Alignment;
|
177
|
+
struct {
|
178
|
+
ULONG Length;
|
179
|
+
DWORD Flags;
|
180
|
+
} s;
|
181
|
+
} u;
|
182
|
+
struct _IP_ADAPTER_PREFIX *Next;
|
183
|
+
SOCKET_ADDRESS Address;
|
184
|
+
ULONG PrefixLength;
|
185
|
+
} IP_ADAPTER_PREFIX, *PIP_ADAPTER_PREFIX;
|
186
|
+
|
187
|
+
typedef struct _IP_ADAPTER_ADDRESSES {
|
188
|
+
union {
|
189
|
+
ULONGLONG Alignment;
|
190
|
+
struct {
|
191
|
+
ULONG Length;
|
192
|
+
DWORD IfIndex;
|
193
|
+
} s;
|
194
|
+
} u;
|
195
|
+
struct _IP_ADAPTER_ADDRESSES *Next;
|
196
|
+
PCHAR AdapterName;
|
197
|
+
PIP_ADAPTER_UNICAST_ADDRESS FirstUnicastAddress;
|
198
|
+
PIP_ADAPTER_ANYCAST_ADDRESS FirstAnycastAddress;
|
199
|
+
PIP_ADAPTER_MULTICAST_ADDRESS FirstMulticastAddress;
|
200
|
+
PIP_ADAPTER_DNS_SERVER_ADDRESS FirstDnsServerAddress;
|
201
|
+
PWCHAR DnsSuffix;
|
202
|
+
PWCHAR Description;
|
203
|
+
PWCHAR FriendlyName;
|
204
|
+
BYTE PhysicalAddress[MAX_ADAPTER_ADDRESS_LENGTH];
|
205
|
+
DWORD PhysicalAddressLength;
|
206
|
+
DWORD Flags;
|
207
|
+
DWORD Mtu;
|
208
|
+
DWORD IfType;
|
209
|
+
IF_OPER_STATUS OperStatus;
|
210
|
+
DWORD Ipv6IfIndex;
|
211
|
+
DWORD ZoneIndices[16];
|
212
|
+
PIP_ADAPTER_PREFIX FirstPrefix;
|
213
|
+
} IP_ADAPTER_ADDRESSES, *PIP_ADAPTER_ADDRESSES;
|
214
|
+
|
215
|
+
/* -------------------------------- */
|
216
|
+
#endif /* ! IP_ADAPTER_DDNS_ENABLED */
|
217
|
+
/* -------------------------------- */
|
218
|
+
|
219
|
+
#endif /* USE_WINSOCK */
|
220
|
+
|
221
|
+
#endif /* HEADER_CARES_IPHLPAPI_H */
|
@@ -0,0 +1,78 @@
|
|
1
|
+
|
2
|
+
/* Copyright (C) 2005 by Dominick Meglio
|
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
|
+
#ifndef ARES_IPV6_H
|
18
|
+
#define ARES_IPV6_H
|
19
|
+
|
20
|
+
#ifndef HAVE_PF_INET6
|
21
|
+
#define PF_INET6 AF_INET6
|
22
|
+
#endif
|
23
|
+
|
24
|
+
#ifndef HAVE_STRUCT_SOCKADDR_IN6
|
25
|
+
struct sockaddr_in6
|
26
|
+
{
|
27
|
+
unsigned short sin6_family;
|
28
|
+
unsigned short sin6_port;
|
29
|
+
unsigned long sin6_flowinfo;
|
30
|
+
struct ares_in6_addr sin6_addr;
|
31
|
+
unsigned int sin6_scope_id;
|
32
|
+
};
|
33
|
+
#endif
|
34
|
+
|
35
|
+
#ifndef HAVE_STRUCT_ADDRINFO
|
36
|
+
struct addrinfo
|
37
|
+
{
|
38
|
+
int ai_flags;
|
39
|
+
int ai_family;
|
40
|
+
int ai_socktype;
|
41
|
+
int ai_protocol;
|
42
|
+
ares_socklen_t ai_addrlen; /* Follow rfc3493 struct addrinfo */
|
43
|
+
char *ai_canonname;
|
44
|
+
struct sockaddr *ai_addr;
|
45
|
+
struct addrinfo *ai_next;
|
46
|
+
};
|
47
|
+
#endif
|
48
|
+
|
49
|
+
#ifndef NS_IN6ADDRSZ
|
50
|
+
#if SIZEOF_STRUCT_IN6_ADDR == 0
|
51
|
+
/* We cannot have it set to zero, so we pick a fixed value here */
|
52
|
+
#define NS_IN6ADDRSZ 16
|
53
|
+
#else
|
54
|
+
#define NS_IN6ADDRSZ SIZEOF_STRUCT_IN6_ADDR
|
55
|
+
#endif
|
56
|
+
#endif
|
57
|
+
|
58
|
+
#ifndef NS_INADDRSZ
|
59
|
+
#define NS_INADDRSZ SIZEOF_STRUCT_IN_ADDR
|
60
|
+
#endif
|
61
|
+
|
62
|
+
#ifndef NS_INT16SZ
|
63
|
+
#define NS_INT16SZ 2
|
64
|
+
#endif
|
65
|
+
|
66
|
+
#ifndef IF_NAMESIZE
|
67
|
+
#ifdef IFNAMSIZ
|
68
|
+
#define IF_NAMESIZE IFNAMSIZ
|
69
|
+
#else
|
70
|
+
#define IF_NAMESIZE 256
|
71
|
+
#endif
|
72
|
+
#endif
|
73
|
+
|
74
|
+
/* Defined in ares_net_pton.c for no particular reason. */
|
75
|
+
extern const struct ares_in6_addr ares_in6addr_any; /* :: */
|
76
|
+
|
77
|
+
|
78
|
+
#endif /* ARES_IPV6_H */
|
@@ -0,0 +1,142 @@
|
|
1
|
+
|
2
|
+
/* Copyright 1998 by the Massachusetts Institute of Technology.
|
3
|
+
* Copyright (C) 2004-2009 by Daniel Stenberg
|
4
|
+
*
|
5
|
+
* Permission to use, copy, modify, and distribute this
|
6
|
+
* software and its documentation for any purpose and without
|
7
|
+
* fee is hereby granted, provided that the above copyright
|
8
|
+
* notice appear in all copies and that both that copyright
|
9
|
+
* notice and this permission notice appear in supporting
|
10
|
+
* documentation, and that the name of M.I.T. not be used in
|
11
|
+
* advertising or publicity pertaining to distribution of the
|
12
|
+
* software without specific, written prior permission.
|
13
|
+
* M.I.T. makes no representations about the suitability of
|
14
|
+
* this software for any purpose. It is provided "as is"
|
15
|
+
* without express or implied warranty.
|
16
|
+
*/
|
17
|
+
|
18
|
+
#include "ares_setup.h"
|
19
|
+
|
20
|
+
#include "ares.h"
|
21
|
+
#include "ares_library_init.h"
|
22
|
+
#include "ares_private.h"
|
23
|
+
|
24
|
+
/* library-private global and unique instance vars */
|
25
|
+
|
26
|
+
#ifdef USE_WINSOCK
|
27
|
+
fpGetNetworkParams_t ares_fpGetNetworkParams = ZERO_NULL;
|
28
|
+
fpSystemFunction036_t ares_fpSystemFunction036 = ZERO_NULL;
|
29
|
+
fpGetAdaptersAddresses_t ares_fpGetAdaptersAddresses = ZERO_NULL;
|
30
|
+
#endif
|
31
|
+
|
32
|
+
/* library-private global vars with source visibility restricted to this file */
|
33
|
+
|
34
|
+
static unsigned int ares_initialized;
|
35
|
+
static int ares_init_flags;
|
36
|
+
|
37
|
+
#ifdef USE_WINSOCK
|
38
|
+
static HMODULE hnd_iphlpapi;
|
39
|
+
static HMODULE hnd_advapi32;
|
40
|
+
#endif
|
41
|
+
|
42
|
+
|
43
|
+
static int ares_win32_init(void)
|
44
|
+
{
|
45
|
+
#ifdef USE_WINSOCK
|
46
|
+
|
47
|
+
hnd_iphlpapi = 0;
|
48
|
+
hnd_iphlpapi = LoadLibrary("iphlpapi.dll");
|
49
|
+
if (!hnd_iphlpapi)
|
50
|
+
return ARES_ELOADIPHLPAPI;
|
51
|
+
|
52
|
+
ares_fpGetNetworkParams = (fpGetNetworkParams_t)
|
53
|
+
GetProcAddress(hnd_iphlpapi, "GetNetworkParams");
|
54
|
+
if (!ares_fpGetNetworkParams)
|
55
|
+
{
|
56
|
+
FreeLibrary(hnd_iphlpapi);
|
57
|
+
return ARES_EADDRGETNETWORKPARAMS;
|
58
|
+
}
|
59
|
+
|
60
|
+
ares_fpGetAdaptersAddresses = (fpGetAdaptersAddresses_t)
|
61
|
+
GetProcAddress(hnd_iphlpapi, "GetAdaptersAddresses");
|
62
|
+
if (!ares_fpGetAdaptersAddresses)
|
63
|
+
{
|
64
|
+
/* This can happen on clients before WinXP, I don't
|
65
|
+
think it should be an error, unless we don't want to
|
66
|
+
support Windows 2000 anymore */
|
67
|
+
}
|
68
|
+
|
69
|
+
/*
|
70
|
+
* When advapi32.dll is unavailable or advapi32.dll has no SystemFunction036,
|
71
|
+
* also known as RtlGenRandom, which is the case for Windows versions prior
|
72
|
+
* to WinXP then c-ares uses portable rand() function. Then don't error here.
|
73
|
+
*/
|
74
|
+
|
75
|
+
hnd_advapi32 = 0;
|
76
|
+
hnd_advapi32 = LoadLibrary("advapi32.dll");
|
77
|
+
if (hnd_advapi32)
|
78
|
+
{
|
79
|
+
ares_fpSystemFunction036 = (fpSystemFunction036_t)
|
80
|
+
GetProcAddress(hnd_advapi32, "SystemFunction036");
|
81
|
+
}
|
82
|
+
|
83
|
+
#endif
|
84
|
+
return ARES_SUCCESS;
|
85
|
+
}
|
86
|
+
|
87
|
+
|
88
|
+
static void ares_win32_cleanup(void)
|
89
|
+
{
|
90
|
+
#ifdef USE_WINSOCK
|
91
|
+
if (hnd_advapi32)
|
92
|
+
FreeLibrary(hnd_advapi32);
|
93
|
+
if (hnd_iphlpapi)
|
94
|
+
FreeLibrary(hnd_iphlpapi);
|
95
|
+
#endif
|
96
|
+
}
|
97
|
+
|
98
|
+
|
99
|
+
int ares_library_init(int flags)
|
100
|
+
{
|
101
|
+
int res;
|
102
|
+
|
103
|
+
if (ares_initialized)
|
104
|
+
return ARES_SUCCESS;
|
105
|
+
ares_initialized++;
|
106
|
+
|
107
|
+
if (flags & ARES_LIB_INIT_WIN32)
|
108
|
+
{
|
109
|
+
res = ares_win32_init();
|
110
|
+
if (res != ARES_SUCCESS)
|
111
|
+
return res;
|
112
|
+
}
|
113
|
+
|
114
|
+
ares_init_flags = flags;
|
115
|
+
|
116
|
+
return ARES_SUCCESS;
|
117
|
+
}
|
118
|
+
|
119
|
+
|
120
|
+
void ares_library_cleanup(void)
|
121
|
+
{
|
122
|
+
if (!ares_initialized)
|
123
|
+
return;
|
124
|
+
ares_initialized--;
|
125
|
+
|
126
|
+
if (ares_init_flags & ARES_LIB_INIT_WIN32)
|
127
|
+
ares_win32_cleanup();
|
128
|
+
|
129
|
+
ares_init_flags = ARES_LIB_INIT_NONE;
|
130
|
+
}
|
131
|
+
|
132
|
+
|
133
|
+
int ares_library_initialized(void)
|
134
|
+
{
|
135
|
+
#ifdef USE_WINSOCK
|
136
|
+
if (!ares_initialized)
|
137
|
+
return ARES_ENOTINITIALIZED;
|
138
|
+
#endif
|
139
|
+
return ARES_SUCCESS;
|
140
|
+
}
|
141
|
+
|
142
|
+
|
@@ -0,0 +1,42 @@
|
|
1
|
+
#ifndef HEADER_CARES_LIBRARY_INIT_H
|
2
|
+
#define HEADER_CARES_LIBRARY_INIT_H
|
3
|
+
|
4
|
+
|
5
|
+
/* Copyright 1998 by the Massachusetts Institute of Technology.
|
6
|
+
* Copyright (C) 2004-2011 by Daniel Stenberg
|
7
|
+
*
|
8
|
+
* Permission to use, copy, modify, and distribute this
|
9
|
+
* software and its documentation for any purpose and without
|
10
|
+
* fee is hereby granted, provided that the above copyright
|
11
|
+
* notice appear in all copies and that both that copyright
|
12
|
+
* notice and this permission notice appear in supporting
|
13
|
+
* documentation, and that the name of M.I.T. not be used in
|
14
|
+
* advertising or publicity pertaining to distribution of the
|
15
|
+
* software without specific, written prior permission.
|
16
|
+
* M.I.T. makes no representations about the suitability of
|
17
|
+
* this software for any purpose. It is provided "as is"
|
18
|
+
* without express or implied warranty.
|
19
|
+
*/
|
20
|
+
|
21
|
+
#include "ares_setup.h"
|
22
|
+
|
23
|
+
#ifdef USE_WINSOCK
|
24
|
+
|
25
|
+
#include <iphlpapi.h>
|
26
|
+
#include "ares_iphlpapi.h"
|
27
|
+
|
28
|
+
typedef DWORD (WINAPI *fpGetNetworkParams_t) (FIXED_INFO*, DWORD*);
|
29
|
+
typedef BOOLEAN (APIENTRY *fpSystemFunction036_t) (void*, ULONG);
|
30
|
+
typedef ULONG (WINAPI *fpGetAdaptersAddresses_t) ( ULONG, ULONG, void*, IP_ADAPTER_ADDRESSES*, ULONG* );
|
31
|
+
|
32
|
+
/* Forward-declaration of variables defined in ares_library_init.c */
|
33
|
+
/* that are global and unique instances for whole c-ares library. */
|
34
|
+
|
35
|
+
extern fpGetNetworkParams_t ares_fpGetNetworkParams;
|
36
|
+
extern fpSystemFunction036_t ares_fpSystemFunction036;
|
37
|
+
extern fpGetAdaptersAddresses_t ares_fpGetAdaptersAddresses;
|
38
|
+
|
39
|
+
#endif /* USE_WINSOCK */
|
40
|
+
|
41
|
+
#endif /* HEADER_CARES_LIBRARY_INIT_H */
|
42
|
+
|
@@ -0,0 +1,86 @@
|
|
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 "ares.h"
|
20
|
+
#include "ares_private.h"
|
21
|
+
|
22
|
+
/* Routines for managing doubly-linked circular linked lists with a
|
23
|
+
* dummy head.
|
24
|
+
*/
|
25
|
+
|
26
|
+
/* Initialize a new head node */
|
27
|
+
void ares__init_list_head(struct list_node* head) {
|
28
|
+
head->prev = head;
|
29
|
+
head->next = head;
|
30
|
+
head->data = NULL;
|
31
|
+
}
|
32
|
+
|
33
|
+
/* Initialize a list node */
|
34
|
+
void ares__init_list_node(struct list_node* node, void* d) {
|
35
|
+
node->prev = NULL;
|
36
|
+
node->next = NULL;
|
37
|
+
node->data = d;
|
38
|
+
}
|
39
|
+
|
40
|
+
/* Returns true iff the given list is empty */
|
41
|
+
int ares__is_list_empty(struct list_node* head) {
|
42
|
+
return ((head->next == head) && (head->prev == head));
|
43
|
+
}
|
44
|
+
|
45
|
+
/* Inserts new_node before old_node */
|
46
|
+
void ares__insert_in_list(struct list_node* new_node,
|
47
|
+
struct list_node* old_node) {
|
48
|
+
new_node->next = old_node;
|
49
|
+
new_node->prev = old_node->prev;
|
50
|
+
old_node->prev->next = new_node;
|
51
|
+
old_node->prev = new_node;
|
52
|
+
}
|
53
|
+
|
54
|
+
/* Removes the node from the list it's in, if any */
|
55
|
+
void ares__remove_from_list(struct list_node* node) {
|
56
|
+
if (node->next != NULL) {
|
57
|
+
node->prev->next = node->next;
|
58
|
+
node->next->prev = node->prev;
|
59
|
+
node->prev = NULL;
|
60
|
+
node->next = NULL;
|
61
|
+
}
|
62
|
+
}
|
63
|
+
|
64
|
+
/* Swap the contents of two lists */
|
65
|
+
void ares__swap_lists(struct list_node* head_a,
|
66
|
+
struct list_node* head_b) {
|
67
|
+
int is_a_empty = ares__is_list_empty(head_a);
|
68
|
+
int is_b_empty = ares__is_list_empty(head_b);
|
69
|
+
struct list_node old_a = *head_a;
|
70
|
+
struct list_node old_b = *head_b;
|
71
|
+
|
72
|
+
if (is_a_empty) {
|
73
|
+
ares__init_list_head(head_b);
|
74
|
+
} else {
|
75
|
+
*head_b = old_a;
|
76
|
+
old_a.next->prev = head_b;
|
77
|
+
old_a.prev->next = head_b;
|
78
|
+
}
|
79
|
+
if (is_b_empty) {
|
80
|
+
ares__init_list_head(head_a);
|
81
|
+
} else {
|
82
|
+
*head_a = old_b;
|
83
|
+
old_b.next->prev = head_a;
|
84
|
+
old_b.prev->next = head_a;
|
85
|
+
}
|
86
|
+
}
|
@@ -0,0 +1,42 @@
|
|
1
|
+
#ifndef __ARES_LLIST_H
|
2
|
+
#define __ARES_LLIST_H
|
3
|
+
|
4
|
+
|
5
|
+
/* Copyright 1998 by the Massachusetts Institute of Technology.
|
6
|
+
*
|
7
|
+
* Permission to use, copy, modify, and distribute this
|
8
|
+
* software and its documentation for any purpose and without
|
9
|
+
* fee is hereby granted, provided that the above copyright
|
10
|
+
* notice appear in all copies and that both that copyright
|
11
|
+
* notice and this permission notice appear in supporting
|
12
|
+
* documentation, and that the name of M.I.T. not be used in
|
13
|
+
* advertising or publicity pertaining to distribution of the
|
14
|
+
* software without specific, written prior permission.
|
15
|
+
* M.I.T. makes no representations about the suitability of
|
16
|
+
* this software for any purpose. It is provided "as is"
|
17
|
+
* without express or implied warranty.
|
18
|
+
*/
|
19
|
+
|
20
|
+
|
21
|
+
/* Node definition for circular, doubly-linked list */
|
22
|
+
struct list_node {
|
23
|
+
struct list_node *prev;
|
24
|
+
struct list_node *next;
|
25
|
+
void* data;
|
26
|
+
};
|
27
|
+
|
28
|
+
void ares__init_list_head(struct list_node* head);
|
29
|
+
|
30
|
+
void ares__init_list_node(struct list_node* node, void* d);
|
31
|
+
|
32
|
+
int ares__is_list_empty(struct list_node* head);
|
33
|
+
|
34
|
+
void ares__insert_in_list(struct list_node* new_node,
|
35
|
+
struct list_node* old_node);
|
36
|
+
|
37
|
+
void ares__remove_from_list(struct list_node* node);
|
38
|
+
|
39
|
+
void ares__swap_lists(struct list_node* head_a,
|
40
|
+
struct list_node* head_b);
|
41
|
+
|
42
|
+
#endif /* __ARES_LLIST_H */
|