diff options
Diffstat (limited to 'CHANGES')
-rw-r--r-- | CHANGES | 3971 |
1 files changed, 3966 insertions, 5 deletions
@@ -1,7 +1,3968 @@ -This file no longer holds the changelog. Now you can generate it yourself -like this: + Changelog for the c-ares project. Generated with git2changes.pl - $ git log --pretty=fuller --no-color --date=short --decorate=full -1000 | - ./git2changes.pl +Version 1.12.0 (29 Sep 2016) -The older, manually edited, changelog is found in git named CHANGES.0 +Daniel Stenberg (29 Sep 2016) +- RELEASE-NOTES: 1.12.0 + +- [David Drysdale brought this change] + + ares-test-misc: test ares_create_query with escaped trailing dot + +- ares_create_query: avoid single-byte buffer overwrite + + ... when the name ends with an escaped dot. + + CVE-2016-5180 + + Bug: https://c-ares.haxx.se/adv_20160929.html + +- ares_library_initialized.3: added + +- make: bump CARES_VERSION_INFO for release + +David Drysdale (29 Sep 2016) +- man: update ares_init_options.3 + +Daniel Stenberg (29 Sep 2016) +- ares_library_init.3: corrected the ares_library_init_mem proto + +- README.md: remove space from link + +- README: link to the correct c-ares badge! + + Reported-by: David Hotham + + Fixes #63 + +- docs: minor formatting edits + +- ares_destroy.3: formatting polish + +- ares_init.3: split the init docs into two separate man pages + +- SECURITY: point to the vulnerabilities page now + +- RELEASE-NOTES: synced with daa7235b1a5 + +- ares_create_query.3: edit language + + Tried to make the man page more readable. + +David Drysdale (26 Sep 2016) +- test: fix gMock to work with gcc >= 6.x + + Taken from: + https://github.com/google/googletest/issues/705#issuecomment-235067917 + +Daniel Stenberg (26 Sep 2016) +- [Brad House brought this change] + + headers: remove checks for and defines of variable sizes + + ... they're not really used and by avoiding them in the ares_build.h + output we make the public header less dependent on data sizes. + +David Drysdale (24 Sep 2016) +- api: add ARES_OPT_NOROTATE optmask value + + Fix up a couple of problems with configuring whether c-ares rotates + between different name servers between requests. + + Firstly, ares_save_options() returns (in *optmask) the value of + (channel->optmask & ARES_OPT_ROTATE), which doesn't necessarily + indicate whether the channel is or is not actually doing rotation. + This can be confusing/incorrect if: + - the channel was originally configured without ARES_OPT_ROTATE + (so it appears that the channel is not rotating) + - the /etc/resolv.conf file includes the 'rotate' option + (so the channel is actually performing rotation). + + Secondly, it is not possible to reliably configure a channel + to not-rotate; leaving off ARES_OPT_ROTATE is not enough, since + a 'rotate' option in /etc/resolv.conf will turn it on again. + + Therefore: + - add an ARES_OPT_NOROTATE optmask value to allow explicit + configuration of no-rotate behaviour + - in ares_save_options(), report the value of channel->rotate + as exactly one of (optmask & ARES_OPT_ROTATE) or + (optmask & ARES_OPT_NOROTATE). + + In terms of back-compatibility: + - existing apps that set ARES_OPT_ROTATE will continue to rotate, + and to have ARES_OPT_ROTATE reported back from ares_save_options() + - existing apps that don't set ARES_OPT_ROTATE will continue to + use local config/defaults to decide whether to rotate, and will + now get ARES_OPT_ROTATE or ARES_OPT_NOROTATE reported back from + ares_save_options() rather than 0. + +- ares_init_options: only propagate init failures from options + + Commit 46bb820be3a8 ("ares_init_options: don't lose init failure") + changed init behaviour so that earlier errors in initialization + weren't lost. In particular, if the user passes in specific + options but they are not applied (e.g. because of an allocation + failure), that failure needs to be reported back to the user; this + also applies when duplicating a channel with ares_dup(). + + However, other initialization failures can be ignored and + overridden -- in particular, if init_by_resolv_conf() or + init_by_environment() fail, then falling back to default values + is OK. + + So only preserve failures from the init_by_options() stage, not + from all initialization stages. + + Fixes issue 60. + +- test: Force reinstall of libtool on OSX + + Travis build environment appears to have changed. + +- test: Add valgrind build variant + +- test: Add null pointer to gtest args + + GoogleTest assumes that there is a null pointer in argv[argc], + so make it look like that. Without this change, tests run with + command-line arguments get memory errors under valgrind/ASAN. + +Daniel Stenberg (21 Aug 2016) +- AUTHOR: maybe gitgub isn't really an author =) + +- AUTHORS: added contributors from the git log + +- LICENSE.md: add a stand-alone license file + + Just the MIT license used in the top the source files moved out to a + stand-alone file for easier reference and discovery. + +- README: added "CII best practices" badge + +- SECURITY.md: suggested "security process" for the project + +David Drysdale (17 Aug 2016) +- test: Add Clang static analysis build to Travis + + Run scan-build over the library source code, but skip the + tests. Needs a later Clang install in Travis + +- test: more info on how to run fuzz testing + +- test: make fuzzer driver code C not C++ + +- test: fuzzer mode for AFL's persistent mode + + When fuzzing with AFL, if the LLVM-based instrumentation is + used (via the afl-clang-fast wrapper), then it is possible to + have a single execution of the fuzzer program iterate multiple + times over the fuzzing entrypoint (similar to libFuzzer's normal + mode of execution) with different data. This is much (e.g. 10x) + faster. + + Add code to support this, by checking whether __AFL_LOOP is + defined at compile-time. + + Also, shift the code to effectively be C rather than C++. + +- test: simplify deps for fuzzer entrypoint + + No need to depend on the rest of the test code (ares-test.h) for + the fuzzer entrypoint; this makes the entrypoint slightly simpler + to build with LLVM's libFuzzer. + + Also shift the code to effectively be C rather than C++ + +- test: disable MinGW tests + + The test binary built in the MinGW build is failing for some + reason. It works for me when I build locally, so I'm guessing + it's down to some sort of AppVeyor environment issue. + + Disable for now. + +Daniel Stenberg (16 Aug 2016) +- read_tcp_data: remove superfluous NULL check + + CID 56884 by Coverity. The pointer is already derefenced before this + point so it can't be NULL here anyway. + +- web: http => https + +GitHub (20 Jul 2016) +- [David Drysdale brought this change] + + Merge pull request #59 from fuze/master + + Update msvc_ver.inc for VS2015 Update 3 + +- [Chris Araman brought this change] + + Update msvc_ver.inc + + support Visual Studio 2015 Update 3 + +David Drysdale (2 May 2016) +- Fix trailing comment for #endif + +Daniel Stenberg (30 Apr 2016) +- email: use Gisle's "new" address + +David Drysdale (18 Apr 2016) +- test: drop superfluous fuzz inputs + + Where there are multiple fuzz input files that only differ in + the first two bytes (the query ID), just keep the first such + file. + +svante karlsson (15 Apr 2016) +- Update msvc_ver.inc + + support Visual Studio 2015 Update 2 + +David Drysdale (31 Mar 2016) +- test: Run fuzzcheck.sh in Travis build + +- test: add fuzzing check script to tests + + Add a test script that runs the fuzzing command over the + corpus of DNS packets. This doesn't actually do any fuzzing + (it just runs them as inputs without generating any variations) + but it does ensure that the fuzzing entrypoint is still working. + +- test: allow multiple files in aresfuzz command line + + If no arguments are specified, use stdin as input. + Otherwise treat each argument as a filename and feed + its contents to the fuzz entrypoint. + +- test: Add corpus of DNS packets + + For fuzz testing it is useful to start from a corpus of valid + packets, so fill out the test/fuzzinput/ directory with a bunch + of inputs. + + These packets were generated by temporarily modifying the c-ares + process_answer() function to save off any incoming response messages. + +- test: Add utility to show DNS packet from file + +- [nordsturm brought this change] + + Fix nsort initialization + + Author: Alexander Drachevskiy + http://c-ares.haxx.se/mail/c-ares-archive-2014-07/0004.shtml + http://c-ares.haxx.se/mail/c-ares-archive-2014-07/0014.shtml + +- test: Check setting nsort=0 option is respected + +- test: Update fuzzing function prototype + + libFuzzer changed expected return type from void to int + in LLVM 3.8. + +- Explicitly clear struct servent before use + + On a build where MSAN has been manually set up (which involves + using an MSAN-instrumented version of the standard C++ library, see + https://github.com/google/sanitizers/wiki/MemorySanitizerLibcxxHowTo) + there's a warning about use of uninitialized memory here. It + might be a false positive, but the fix is trivial so include it. + +- test: for AF_UNSPEC, return CNAME only for AAAA, but valid A record + + Also shuffle expected responses rsp6/rsp4 into the order they will occur. + +- [Chris Araman brought this change] + + msvc_ver.inc: support Visual Studio 2015 Update 1 + +- build: commonize MSVC version detection + + Remove the need to copy/paste version number mapping between + Makefile.msvc and test/Makefile.msvc. + +- test: Use different name in live test + +- test: Only pass unused args to GoogleTest + +- ahost.c: add cast to fix C++ compile + + If ahost.c is force-compiled as C++ the missing cast from + (void *) to (char **) is problematic. + +- ares_library_cleanup: reset ares_realloc too + + Otherwise a subsequent use of the library might use a previous + incarnation's realloc() implementation. + +Daniel Stenberg (9 Mar 2016) +- [Brad House brought this change] + + configure: check if tests can get built before enabled + + The current approach for disabling tests is not a good solution because + it forces you to pass --disable-tests, rather than auto-detect if your + system can support the tests in the first place. Many (most?) systems + do not have C++11. This also causes issues when chain-building c-ares, + the hosting system needs to be updated to support passing this + additional flag if necessary, it doesn't seem reasonable to add this + requirement which breaks compatibility. + + This change auto-detects if the system can build the tests and + automatically disable them if it cannot. If you pass --enable-tests to + configure and the system cannot build them either due to lack of system + support, or because cross-compilation is being used, it will throw an + appropriate error since the user indicated they really did want the + tests. + +David Drysdale (3 Mar 2016) +- [Viktor Szakats brought this change] + + Makefile.m32: add support for CROSSPREFIX + +- [Viktor Szakats brought this change] + + Makefile.m32: add support for extra flags + + Allow specification of CARES_{LD,C}FLAG_EXTRAS envvars + for mingw + +- test: Build with MinGW on AppVeyor + +- test: avoid in6addr_* constants + + These aren't available on MinGW, so use explicit addresses instead. + +- test: add missing #includes for dns-proto.cc + +- [Gregor Jasny brought this change] + + Fix man page typos detected by Lintian + +Daniel Stenberg (19 Feb 2016) +- configure: acknowledge --disable-tests + + Fixes #44 + +- AUTHORS: added contributors from the 1.11.0 release + +- bump: start working on the next version + +Version 1.11.0 (19 Feb 2016) + +Daniel Stenberg (19 Feb 2016) +- RELEASE-NOTES: final edits for 1.11.0 + +David Drysdale (15 Feb 2016) +- ares_dup.3: remove mention of nonexistent function + + ares_dup_options() doesn't exist, so don't document it. + +- test: skip repeated build steps + + Top-level buildconf/configure now triggers for the + test/ subdir too, so don't need to do explicitly. + +- test: namespaces unavailable when cross-compiling + +Daniel Stenberg (13 Feb 2016) +- configure: only run configure in test when NOT cross-compiling + + ... as the tests won't run cross-compiled anyway + +David Drysdale (13 Feb 2016) +- test: prefer ON_CALL to EXPECT_CALL to reduce flakes + + For UDP tests, there's a chance of a retry. EXPECT_CALL only + expects a single request to arrive at the server; ON_CALL allows + for a UDP retry and repeats the same answer. + + Note that ON_CALL and EXPECT_CALL can't be mixed in the same + test, and that tests that have a varied sequence of responses + for the same repeated request still have to use EXPECT_CALL. + +Daniel Stenberg (13 Feb 2016) +- configure: run configure in 'test' too + + Having the test dir completely stand-alone causes too many issues for + users and devs. It still needs to be built specifically. + +- configure: build silently by default + +- buildconf: run test/buildconf too if present + +- test/configure: build silently by default + +- [Gregor Jasny brought this change] + + dist: Distribute README.md + + Closes #42 + +Version 1.11.0 (11 Feb 2016) + +Daniel Stenberg (11 Feb 2016) +- Makefile.am: distribute the test dir too + +- RELEASE-NOTES: synced with 385582bd14b68a + +- [Nicolas \"Pixel\" Noble brought this change] + + ares_win32_init: make LoadLibrary work when using UNICODE too + + Closes #17 + +David Drysdale (11 Feb 2016) +- Use "resolve" as synonym of "dns" in nsswitch.conf + + Modern Linux systems may have libnss_resolve from systemd as the + resolver, which is then configured in /etc/nsswitch.conf with + the "resolve" keyword rather than "dns". + + Fixes #33 + +- ares_set_socket_callback: make manpage match code + + The code in ares_process.c that invokes the socket creation/connection + callback only checks for rc < 0, not for standard ares error codes. + +- Merge pull request #36 from AGWA-forks/master + + Add ares_set_socket_configure_callback() + +- test: Update init tests to match behaviour + + Unreadable config files are now treated the same way + as absent config files. + +- [Fedor Indutny brought this change] + + Ignore `fopen` errors to use default values + + After 46bb820be3a83520e70e6c5f0c5133253fcd69cd `init_by_resolv_conf` + errors are no longer swallowed in `ares_init_options`. This has exposed + a previously unknown bug in `lookups` initialization code. + + If there is no lookup configuration in `resolv.conf`, + `init_by_resolv_conf` will attempt to read it from other files available + on the system. However, some of these files may have restricted + permissions (like `600`), which will lead to `EACCESS` errno, which in + turn is handled like a fatal error by `init_by_resolv_conf`. + + However, it sounds illogical that this error should be handled as a + fatal. There is a `init_by_defaults` call that overrides `lookups` with + default value, and certainly possible absence of lookup information is + the reason why this function exists in a first place! + + I suggest handling any `fopen` errors as non-fatal ones, allowing to + pick up the `lookups` value from different config files, or to pick up + default value. + +Andrew Ayer (9 Feb 2016) +- Document callback type in man page for ares_set_socket_callback + +- Add ares_set_socket_configure_callback() + + This function sets a callback that is invoked after the socket is + created, but before the connection is established. This is an ideal + time to customize various socket options. + +David Drysdale (9 Feb 2016) +- test: ares_set_socket_callback failure behaviour + +- test: Check ares_parse_txt_reply_ext() entrypoint + +- [Fedor Indutny brought this change] + + txt: introduce `ares_parse_txt_reply_ext` + + Introduce `ares_txt_ext` structure with an extra `record_start` + field, which indicates a start of a new TXT record, thus allowing to + differentiate the chunks in the same record, from a chunks in a + different record. + + Introduce a new API method: `ares_parse_txt_reply_ext` that works with + this kind of struct. + +- doc: Update missed repo references + +- doc: Update docs on contributing + +- test: Run command line tools in Travis + + Do a quick execution of each of the command line tools + in the continuous integration build, so that any (say) + sanitizer failures show up. + +- acountry: drop inert test + + If ver_1 is true, then z0 and z1 must both be 'z', and so + (z0 != 'z' && z1 != 'z') can never be true. + + CID 56879, pointed out by Coverity. + +- doc: update badge locations to master repo + +- test: Enable maintainer mode + debug in Travis + +- test: Add an iOS build target + +- test: Ignore SIGPIPE in tests + +- test: More initialization tests + +- test: Improve containerized test mechanism + + Aim is to ensure that code coverage information can escape the + container. To do this: + - Enter a new mount namespace too, so that we can... + - Bind mount the expected source directory into the container + - Share memory with the sub-process so coverage information is + shared too. + +- test: Make contained tests easier to write + +- test: Add framework for containerized testing + + On Linux we can potentially use user and UTS namespaces to run a test + in a pseudo-container with: + - arbitrary filesystem (e.g. /etc/resolv.conf, /etc/nsswitch.conf, /etc/hosts) + - arbitrary hostname/domainname. + + Include a first pass at the framework code to allow this, along with a + first test case that uses the container. + +- test: Use a longer timeout for less flakiness + + Having occasional test failures from timeout before multiple + queries can complete, so up the default timeout for the test + from 100ms to 1500ms. + +- test: Make failure tests more robust + + Different platforms will do different numbers of allocations + in the processing of a given API call; just check that the + return code is either success or ENOMEM, and free off any + returned state in the former case. + + Also cope with ECONNREFUSED as well as ENOTFOUND. + +- test: Get test code building under Windows + + - Initial nmake file based off library nmake file + - Cast socket call arguments to (char *) + - Use wrapper sclose() that maps to closesocket() or close() + - Build a config.h indicating presence of headers + - Conditionally include netdb.h + - Remove unnecessary include of sys/socket.h + - Force longer bitmask for allocation failure tracking + - Call WSAStartup() / WSACleanup() in main() + - Set TCP_NODELAY for mock server + - Turn on tests in AppVeyor build + +- test: Disable tests that manipulate env on Windows + +- test: Move file lists into Makefile.inc + + In preparation for a Win32 build of the test suite. + +- test: Add a simple multi-server test + + Check rotate option does something + +- test: Allow for multiple mock servers + + - Update the MockServer to allow separate specification of + UDP and TCP ports + - Have an array of mock servers listening on consecutive + sets of ports. + - Rename Process(fd) to ProcessFD(fd) to avoid confusion. + - Initialize channel by using the new ares_set_servers_ports() + entrypoint, so multiple ports on the same loopback address + can be used. + +- test: Update test for set/get_servers variants + + Ports are significant in the _ports_ variant functions, so update test to cope. + +- test: Make GetNameServers() utility function port-aware + + Also make it generally available. + +- test: more testing, including of internal static functions + +- test: more tests, especially fallback processing + + - Make mock server listen on UDP + TCP in parallel. + - Test UDP->TCP fallback on truncation + - Test EDNS->no-EDNS fallback + - Test some environment init options + - Test nonsense reply + + test: short response + +- test: more tests, particularly of initialization + +- test: Run mock tests over both TCP and UDP + + With the exception of a few tests that make use of the timed + retry aspect of UDP. + +- test: Run mock tests over both IPv4 and IPv6 + +- test: Add more tests for edge cases + +- test: more nooks and crannies of pton functions + +- test: More tests for PTR parsing + +- test: Use of HOSTALIAS environment variable + +- test: Add RAII utility classes for testing + + - TempFile holds specific contents + - EnvValue sets an environment variable + +- test: More search domain scenarios + +- test: Remove duplicate flags from Makefile.am + +- test: Make test code leak-free + +- test: More tests + + - test use of sortlist + - test gethostbyname(AF_UNSPEC) + +- test: Test ares_gethostbyname_file() + +- test: Add more tests of ares_getnameinfo() + +- test: Tweak tests, add alloc failure test + +- test: Test init with options + +- test: More tests + + - ares_inet_net_pton() variants + - ares_getsock() variants + +- test: Expose ProcessWork() function + +- test: More parsing tests + + Including: + - Split each parse function test set out into separate files. + - Add an allocation failure test for each parsing function. + - Add error check test for each parsing function. + +- test: Add various additional tests + +- test: More tests + + Include tests of internal functions, based on the value of the + CARES_SYMBOL_HIDING macro; need to configure the library with + --disable-symbol-hiding to enable these tests. + +- test: Allow command line override of mock server port + +- test: Add README.md documentation + +- test: Temporarily avoid latest Python requests package + + Currently get error from Travis on this install step, and downgrading one + version appears to fix the problem. + + "Could not find any downloads that satisfy the requirement pyOpenSSL>=0.13 + (from requests[security])" + +- test: Add AppVeyor config file for Windows build + +- test: Add configuration for a Travis build + + Cover Linux & OSX on the container infrastructure, but install + a later G++ to satisfy the tests' need for C++11. + + Use a build matrix to include a variety of build variants: + - ASAN + - UBSAN + - LSAN + - Coverage via coveralls.io + + test: invoke ASAN and coverage in Travis build + + Also shift to use explicit build matrix + + test: Use coveralls.io for coverage tracking + + test: Add a build with UBSAN + + Also expand and re-order the setting of environment variables + for easier modification. + + test: Add LSAN build to Travis config + +- test: Add initial unit tests for c-ares library + + The tests are written in C++11, using the GoogleTest and GoogleMock + frameworks. They have their own independent autoconf setup, so that + users of the library need not have a C++ compiler just to get c-ares + working (however, the test/configure.ac file does assume the use of + a shared top-level m4/ directory). However, this autoconf setup has + only been tested on Linux and OSX so far. + + Run with "./arestest", or "./arestest -v" to see extra debug info. + The GoogleTest options for running specific tests are also + available (e.g. "./arestest --gtest_filter=*Live*"). + + The tests are nowhere near complete yet (currently hitting around + 60% coverage as reported by gcov), but they do include examples + of a few different styles of testing: + + - There are live tests (ares-test-live.cc), which assume that the + current machine has a valid DNS setup and connection to the + internet; these tests issue queries for real domains but don't + particularly check what gets returned. The tests will fail on + an offline machine. + + - There a few mock tests (ares-test-mock.cc) that set up a fake DNS + server and inject its port into the c-ares library configuration. + These tests allow specific response messages to be crafted and + injected, and so are likely to be used for many more tests in + future. + + - To make this generation/injection easier, the dns-proto.h file + includes C++ helper classes for building DNS packets. + + - Other library entrypoints that don't require network activity + (e.g. ares_parse_*_reply) are tested directly. + + - There are few tests of library-internal functions that are not + normally visible to API users (in ares-test-internal.cc). + + - A couple of the tests use a helper method of the test fixture to + inject memory allocation failures, using the earlier change to the + library to allow override of malloc/realloc/free. + + - There is also an entrypoint to allow Clang's libfuzzer to drive + the packet parsing code in ares_parse_*_reply, together with a + standalone wrapper for it (./aresfuzz) to allow use of afl-fuzz + for further fuzz testing. + +- test: Add local copy of GoogleMock/GoogleTest 1.7.0 + + Don't check in gtest/m4 files, as they are unused and interfere + with the top-level configure process. + +- doc: Show build badges in README.md + + Note that these URLs will need to be updated if/when the test branch + gets pulled into the master repo/branch. + +- doc: Convert README to README.md + + Gives better display on GitHub + +- doc: Update in preparation for next release + + Assume 1.11.0 is next (as there are various API additions). + Also add myself to AUTHORS. + +- build: Allow header compilation by Windows C++ compiler + +- build: Expose whether symbol hiding is on + + Adding the CARES_SYMBOL_HIDING definition allows the test suite to + detect whether internal symbols are available or not. + +- build: Add autoconf macros for C++11 code using pthreads + + Pull in testing macros from the GNU autoconf archive to allow + configure scripts to test for and setup use of a C++11 compiler + (AX_CXX_COMPILE_STDCXX_11) and the pthreads library (AX_PTHREAD). + + Note that these macros are not used by the main library autoconf, + just by the tests (which share the same m4/ directory). + +- build: Add a code coverage option + + Configure with: + ./configure --enable-code-coverage + Show coverage output with: + make code-coverage-capture + + Built on m4/ax_code_coverage.m4 from the GNU autoconf archive + to provide the macros to check for presence of gcov + lcov; + upstream macro modified to: + - Remove use of $(AM_DEFAULT_VERBOSITY) , as earlier versions of + autoconf (such as the one used by default on Travis) do not have this. + - Rather than automatically defining CODE_COVERAGE_RULES to be a set + of makefile rules that use ifeq/endif (which is GNU make-specific), + instead only define CODE_COVERAGE_RULES if coverages is turned on, + and in that case don't use conditionals in the makefile. + +- api: Add entrypoints to allow use of per-server ports + + Add user-visible entrypoints ares_{get,set}_servers_ports(3), which + take struct ares_addr_port_node rather than struct ares_addr_node. + This structure includes a UDP and TCP port number; if this is set + to zero, the channel-wide port values are used as before. + + Similarly, add a new ares_set_servers_ports_csv(3) entrypoint, which + is analogous to ares_set_servers(3) except it doesn't ignore any + specified port information; instead, any per-server specified port + is used as both the UDP and TCP port for that server. + + The internal struct ares_addr is extended to hold the UDP/TCP ports, + stored in network order, with the convention that a value of zero + indicates that the channel-wide UDP/TCP port should be used. + + For the internal implementation of ares_dup(3), shift to use the + _ports() version of the get/set functions, so port information is + transferred correctly to the new channel. + + Update manpages, and add missing ares_set_servers_csv to the lists + while we're at it + +- api: Add ares_set_sortlist(3) entrypoint + + Allow explicit configuration of the channel's sortlist, by + specifying a string in the same format as the equivalent + /etc/resolv.conf option. + + This allows library users to perform the same configuration + that is available via /etc/resolv.conf, but without needing + to change that file. + +- api: Allow injection of user-specified malloc/free functions + + Add a new ares_library_init_mem() initialization function for the + library which allows the library user to specify their own malloc, + realloc & free equivalents for use library-wide. + + Store these function pointers in library-wide global variables, + defaulting to libc's malloc(), realloc() and free(). + + Change all calls to malloc, realloc and free to use the function pointer + instead. Also ensure that ares_strdup() is always available + (even if the local environment includes strdup(3)), and change the + library code to always use it. + + Convert calls to calloc() to use ares_malloc() + memset + +- api: Add option to expose some internal functions + + Purely for testing, add --enable-expose-statics option to configure + which converts some static internal functions to be externally visible. + +- api: Expose the ares_library_initialized() function + +- ahost: Allow repeated -s <domain> options + + This also removes a potential leak where later -s options would + replace earlier ones without freeing the relevant string. + +- Mark unhittable lines + + Add comments for the benefit of the lcov tool, marking + lines that cannot be hit. Typically these are fall-back + protection arms that are already covered by earlier checks, + and so it's not worth taking out the unhittable code (in case + someone changes the code between the two places in future). + +- ares_set_servers_csv.3: make return type match code + +- bitncmp: update comment to match code behaviour + +- ares_striendstr: fix so non-NULL return can happen + + This looks to have been broken since it was first introduced in 2005 in + commit aba0b775ea30 ("Added ares_getnameinfo which mimics the + getnameinfo API") + +- config_sortlist: free any existing sortlist on (re)alloc failure + + If we get an allocation failure on 2nd or later entry in the sortlist, the + code would return ENOMEM but still leave the initial entries allocated. + Ensure that *sortlist is set to NULL whenever ENOMEM is returned. + +- ares_dup: clear new channel on failure + + If the attempt to transfer IPv6 servers from the old to the new channel + fails, the previous code would still return a channel to the user even though + an error return code was generated. This makes it likely that users would + leak the channel, so explicitly clear the channel in this case. + +- ares_init_options: don't lose init failure + + If (say) init_by_options() fails, the subsequent call to + init_by_defaults() was overwriting the return code with + success. Still call init_by_defaults() regardless, but track + its return value separately + +- ares_gethostbyname: don't leak valid-but-empty hostent + + If an AF_UNSPEC query gets a valid response to its AAAA query, + but which has no IPv6 addresses in it, then the code chains on to + a A record query. However, the hostent from the AAAA response + was being leaked along the way (because it gets replaced before + the follow-on end_hquery() invocation). + +- ares_parse_txt_reply: propagate errors from per-substring loop + + If we get an allocation failure when processing a particular substring in a + TXT record, that failure is silently lost; fix that by propagating errors from + the inner loop to the outer loop. + +- process_answer: fix things up correctly when removing EDNS option + + When a server rejects an EDNS-equipped request, we retry without + the EDNS option. However, in TCP mode, the 2-byte length prefix was + being calculated wrong -- it was built from the answer length rather than + the length of the original request. + + Also, it is theoretically possible that the call to realloc() might change + the data pointed to; to allow for this, qbuf also needs updating. + + (Both these fixes were actually included in a patchset sent on the mailing + list in Oct 2012, but were included with other functional changes that + didn't get merged: + http://c-ares.haxx.se/mail/c-ares-archive-2012-10/0004.shtml) + +- ares__read_line: clear buf pointer on realloc failure + +- ares_expand_name: check for valid bits in label length + + The top two bits of the label length indicate whether this is a + label length (00) or an index to a name elsewhere in the message + (11). RFC1035 4.1.4 says that the other possible values for the + top two bits (01, 10) are reserved for future use. + +Daniel Stenberg (23 Jan 2016) +- [Gregor Jasny brought this change] + + Fix typos detected by lintian + + Closes #32 + +- [Gregor Jasny brought this change] + + Distribute all man pages + +- README.cares: s/I/Daniel + + ... and add a pointer to an existing version of the original area 1.1.1 + package.a + +- read_tcp_data: don't try to use NULL pointer after malloc failure + + CID 56884, pointed out by Coverity. We really should make this function + return an error code so that a malloc() failure can return back a major + failure. + +- configure_socket: explicitly ignore return code + + CID 56889 in Coverity pointed out the return code from setsocknonblock() + is ignored, and this added typecast to (void) makes it explicit. + +- ahost: check the select() return code + + Fixes CID 137189, pointed out by Coverity + +David Drysdale (18 Jan 2016) +- Fix buildconf on platforms using glibtoolize + + Commit c49a87eea538 changed buildconf to only check for + libtoolize, but missed a line + +- Don't exit loop early leaving uninitialized entries + + Update for commit affc63cba875d. + + The original patch from Gregor Jasny did not have the break + statement; I incorrectly added it to prevent continuing the loop. + However, the later entries in the array would then be left + uninitialized, causing problems for later cleanup. + + So fix to match Gregor's original patch, with apologies. + +Daniel Stenberg (18 Jan 2016) +- buildconf: remove check for libtool, it only requires libtoolize + +David Drysdale (17 Jan 2016) +- [Gregor Jasny brought this change] + + Use libresolv to initialize cares on iPhone targets + + On iPhone targets like iOS, watchOS or tvOS the file + /etc/resolv.conf cannot be used to configure cares. + + Instead the resolver library is queried for configuration + values. + + CC: Yury Kirpichev <ykirpichev@yandex-team.ru> + +Daniel Stenberg (17 Jan 2016) +- README: updated to new repo URL + +David Drysdale (14 Jan 2016) +- [Lei Shi brought this change] + + Fixing slow DNS lookup issue + + This patch is fixing the dns lookup issue due to dummy dns information + of a disconnected adapter(in my case is a bluetooth adapter). I changed + the dns lookup policy to try GetNetworkParams first because the + GetNetworkParams provides the most reliable dns information (lots of + checks were done by system). I also filter out inoperable adapter in + DNS_AdaptersAddresses in case GetNetworkParams fail. + +- Merge pull request #30 from p-push/vs-2015 + + Support Visual Studio 2015 + +Oleg Pudeyev (3 Jan 2016) +- [Gisle Vanem brought this change] + + Support Visual Studio 2015 + +David Drysdale (11 Nov 2015) +- [Andrew Andkjar brought this change] + + added another version case to Makefile.msvc + + nmake version 11.00.61030.0 resolves to CC_VERS_NUM = 110 + +- Merge pull request #26 from bitbouncer/vs-2013 + + added define for visual studio 2013 + +svante karlsson (25 Jun 2015) +- added define for visual studio 2013 + +Jakub Hrozek (6 Nov 2014) +- ares__read_line: free buf on realloc failure + +- Destroy options if ares_save_options fails + + It's possible that, if ares_save_options failed, the opts structure + would contain some allocated memory. Calling ares_destroy_options in + this case is safe, because ares_save_options zeroes out the memory + initially. + +- [David Drysdale brought this change] + + Continue loop if space for hostname not large enough + + When attempting to build a search domain from the local hostname + (used as a fallback when no other methods have given a search + domain), the code doubles the buffer size on each loop iteration. + + However, the loop previously had a WHILE_FALSE terminator so the continue + statement exited the loop rather than going round again. + +Daniel Stenberg (30 Oct 2014) +- ares_getnameinfo.3: there is no ares_getaddrinfo + +David Drysdale (30 Sep 2014) +- [Gregor Jasny brought this change] + + Prevent tmpbuf from overrunning + + Fix Coverity error CID 56886. + + Signed-off-by: Gregor Jasny <gjasny@googlemail.com> + +- [Gregor Jasny brought this change] + + Re-start loop if select fails + + Fix Coverity error CID 56882 + + Signed-off-by: Gregor Jasny <gjasny@googlemail.com> + +- [Gregor Jasny brought this change] + + Free temporary variable in error path + + Fix Coverity CID 56890 + + Signed-off-by: Gregor Jasny <gjasny@googlemail.com> + +- [Gregor Jasny brought this change] + + Fix integer shift overflow if both tcp_socket and udp_socket are set + + The problem occurs if at the start of the loop the sockindex is at the + last valid ARES_GETSOCK_MAXNUM position. If then both udp_socket and + tcp_socket are valid, sockindex gets incremented for UDP first and + points one entry behind the array for the tcp block. + So the fix is to check after every increment of sockindex if it is still + valid. + + Fix Coverity error CID 56878 + + Signed-off-by: Gregor Jasny <gjasny@googlemail.com> + +- [Gregor Jasny brought this change] + + Null check before dereference + + Fix Coverity error CID 56880 + + Signed-off-by: Gregor Jasny <gjasny@googlemail.com> + +Jakub Hrozek (28 Jul 2014) +- [Gisle Vanem brought this change] + + Comment in ares_ipv6.h + +David Drysdale (25 Jul 2014) +- CONTRIBUTING: add file to indicate mailing list is preferred + +- Add -t u option to ahost + + Add an option to allow specification of the AF_UNSPEC + address family. + +Jakub Hrozek (24 Jul 2014) +- host_callback: Fall back to AF_INET on searching with AF_UNSPEC + + Previously, when an ares_gethostbyname() searched with AF_UNSPEC and the + first AF_INET6 call only returned CNAMEs, the host_callback never + retried AF_INET. + + This patch makes sure than on ARES_SUCCESS, the result of AF_INET6 is + taken as authoritative only if the result contains some addresses. + +- [David Drysdale brought this change] + + Move memset call below platform-specific declarations + + A GitHub commenter [1] says that my recent change to ahost.c has + problems compiling on Windows + C89 platforms. + + [1] https://github.com/bagder/c-ares/commit/ee22246507c9#commitcomment-6587616 + +- [David Drysdale brought this change] + + Update ahost man page to describe -s option. + + Commit ee22246507c9 added the -s <domain> option to the + ahost command, but neglected to update the man page to + describe it. + + Also fix typo in description of -t option. + +- ares_parse_soa_reply: Do not leak rr_name on allocation failure + + If ares_malloc_data failed, already allocated rr_name would go out of + scope. + +- [David Drysdale brought this change] + + Don't override explicitly specified search domains + + Only set search domains from /etc/resolv.conf if there isn't a value + already present in the channel. + +- [David Drysdale brought this change] + + Allow specification of search domain in ahost + + Add the "-s domain" command line option to override the search + domains. + +Daniel Stenberg (12 May 2014) +- Revert "ares_parse_aaaa_reply: fix leak when reply contains 1 alias and no address" + + This reverts commit 440110b303fdbfadb3ad53d30eeb98cc45d70451. + +- [Frederic Germain brought this change] + + ares_parse_aaaa_reply: fix leak when reply contains 1 alias and no address + +- [Doug Kwan brought this change] + + ares_build.h: fix building on 64-bit powerpc + + There are two issues. + + 1. gcc actually does not use __ppc__ and __ppc64__ but __PPC__ and + __PPC64__. The tests of __ILP32__ and __LP64__ are sufficient for gcc. + + 2. clang defines __GNU__ and defines both __ppc64__ and __ppc__ when + targeting ppc64. This makes CARES_SIZEOF_LONG to be 4 on a ppc64 system + when building with clang. + + My patch is two change the order of the checks so that we check the + 64-bit case first. + +- refresh: updated now with automake 1.14 + +- [David Drysdale brought this change] + + single_domain: Invalid memory access for empty string input + + We noticed a small buglet in ares_search() when it gets an empty string + as input -- the single_domain() utility function in ares_search.c + accesses invalid memory (before the start of the string). + +Guenter Knauf (31 Aug 2013) +- Fixed warning 'type specifier missing'. + +Daniel Stenberg (30 Aug 2013) +- [Tor Arntsen brought this change] + + ares_rules.h: CARES_SIZEOF_LONG doesn't exist anymore, don't test for it + + It was removed in f19387dd72432 + +- nowarn: use <limits.h> instead of configure for size of long + + This makes the header file much more multi-arch friendly and can be used + as-is with both 32 bit and 64 bit builds. + +- timeoffset: made static and private + + ares__timeoffset() was only used once within this single source file + +- timeadd: make static + + ares__timeadd() was only ever used from within the same source + +Yang Tse (18 Jul 2013) +- xc-am-iface.m4: comments refinement + +- configure: fix 'subdir-objects' distclean related issue + + See XC_AMEND_DISTCLEAN comments for details. + +- configure: automake 1.14 compatibility tweak (use XC_AUTOMAKE) + +- xc-am-iface.m4: provide XC_AUTOMAKE macro + +Daniel Stenberg (12 May 2013) +- gitignore: ignore all ares_*pdf but also CHANGES.dist + +- bump: start working towards 1.10.1 + +Version 1.10.0 (12 May 2013) + +Daniel Stenberg (12 May 2013) +- RELEASE-NOTES: two more bug fixes + +- [Keith Shaw brought this change] + + ares_set_servers_csv: fixed IPv6 address parsing + + Fixed bug that caused the last part of an IPv6 address to be parsed as + the port number when the last part is all numeric. + +- nroff: fix two syntax mistakes + + ares_parse_a_reply and ares_parse_aaaa_reply both had two \fB instead of + \fP + + Reported-by: Alexander Klauer + Bug: http://c-ares.haxx.se/mail/c-ares-archive-2013-03/0010.shtml + +- [Alex Loukissas brought this change] + + build: fix build on msvc11 + +- Makefile.am: increment -version-info for 1.10.0 release + +- README: remove unnecessary comment + +- ares_version.h: copyright end range year is now 2013 + +- RELEASE-NOTES: synced with fb0737f3a0a1c37 + +- [Paul Saab brought this change] + + ares_parse_aaaa_reply: Plug memory leak + + This change is similar to ares_parse_a_reply.c in commit + bffd67f16a8f42fe6dbf79ab2e39d92eea05c8a6 + +- [Patrick Valsecchi brought this change] + + ares_parse_txt_reply: return a ares_txt_reply node for each sub-string + + Previously, the function would wrongly return all substrings merged into + one. + +- [Alexander Klauer brought this change] + + library init: documentation update + + This commit updates the documentation of ares_library_init() and + ares_library_cleanup() with regard to the newly introduced reference + counting of initializations and deinitializations. + +- [Alexander Klauer brought this change] + + library init: be recursive + + Previously, a single call to ares_library_cleanup() would deinitialise + the c-ares library, regardless of how many times ares_library_init() was + called. This behaviour may cause problems in programs linking two or + more libraries which, in turn, use c-ares. The present commit fixes this + problem, deinitializing the library only after a number of calls to + ares_library_cleanup() matching the number of calls to + ares_library_init(). + +- [Patrick Valsecchi brought this change] + + protocol parsing: check input data stricter + + ... so that bad length fields aren't blindly accepted + + Bug: http://c-ares.haxx.se/mail/c-ares-archive-2013-04/0016.shtml + +Guenter Knauf (11 Apr 2013) +- Create ares_build.h when buidling from Git. + +- Added -DCARES_STATICLIB to CFLAGS. + + Currently this static makefile does only support building the + static library libcares.a. + +Daniel Stenberg (8 Apr 2013) +- [Alexander Klauer brought this change] + + .gitignore: ignore patch files + + This commit adds a line to .gitignore to the effect that patch files + generated by 'git format-patch' are excluded from the repository. + +- [Alexander Klauer brought this change] + + ares_destroy() documentation: no new requests + + Clarify that no new requests may be added to a resolver channel that is + currently being destroyed. + +- [Alexander Klauer brought this change] + + Documentation: properly document ARES_ECANCELLED + + This commit clarifies the behaviour of ares_cancel() with respect to + callbacks and adds missing documentation of ARES_ECANCELLED to the man + pages of the affected functions. + +- [Alexander Klauer brought this change] + + ares_cancel(): cancel requests safely + + An invocation of ares_cancel() walks through the request list, calling + the callbacks of all pending requests on a channel. Previously, if such + a callback added a new request to the channel, the request list might + not end up empty, causing an abort by assertion failure. The present + commit ensures that precisely all requests present upon entry of + ares_cancel() are cancelled, and that adding new requests through + callbacks is safe. + +Yang Tse (10 Mar 2013) +- ares.h: stricter CARES_EXTERN linkage decorations logic + + No API change involved. + +- ares_build.h.dist: enhance non-configure GCC ABI detection logic + + GCC specific adjustments: + + - check __ILP32__ before 32 and 64bit processor architectures in + order to detect ILP32 programming model on 64 bit processors + which, of course, also support LP64 programming model, when using + gcc 4.7 or newer. + + - keep 32bit processor architecture checks in order to support gcc + versions older than 4.7 which don't define __ILP32__ + + - check __LP64__ for gcc 3.3 and newer, while keeping 64bit processor + architecture checks for older versions which don't define __LP64__ + +Daniel Stenberg (9 Mar 2013) +- ares.h: there is no ares_free_soa function + +Yang Tse (9 Mar 2013) +- Makefile.am: empty AM_LDFLAGS definition for automake 1.7 compatibility + +- ares_inet_ntop.3: s/socklen_t/ares_socklen_t + +- configure: use XC_LIBTOOL for portability across libtool versions + +- xc-lt-iface.m4: provide XC_LIBTOOL macro + +- Makefile.am: use AM_CPPFLAGS instead of INCLUDES + +- inet_ntop.c: s/socklen_t/ares_socklen_t + +- inet_ntop.c: s/socklen_t/ares_socklen_t for portability + +Daniel Stenberg (19 Feb 2013) +- ares.h: s/socklen_t/ares_socklen_t for portability + +- ares_inet_ntop.3: 4th argument is socklen_t! + +- spell inet correctly! + +- ares_inet_pton/ntop: cleanup + + Make sure that the symbols are always exported and present in c-ares. + + Make the headers prefixed with 'ares'. + + Removed the inet_ntop.h version as it no longer features any content. + +- ares_inet_ntop/ares_inet_pton: added man pages + +Yang Tse (15 Feb 2013) +- [Gisle Vanem brought this change] + + curl_setup_once.h: definition of HAVE_CLOSE_S defines sclose() to close_s() + +- [Gisle Vanem brought this change] + + config-dos.h: define HAVE_CLOSE_S for MSDOS/Watt-32 + +- [Gisle Vanem brought this change] + + config-dos.h: define strerror() to strerror_s_() for High-C + +Daniel Stenberg (13 Feb 2013) +- ares_get_datatype: removed unused function + + it was also wrongly named as internal functions require two underscores + +- ares__bitncmp: use two underscores for private functions + + It used a single one previously making it look like a public one + +- ares__generate_new_id: moved to ares_query.c + + ... and ares__rc4 is turned into a local static function. + +- ares__swap_lists: make private and static + + ... since there's only one user, make it static within ares_process.c + +Yang Tse (13 Feb 2013) +- Makefile.msvc: add four VS version strings + +Daniel Stenberg (13 Feb 2013) +- ares_expand_name.3: clarify how to free the data + +Yang Tse (30 Jan 2013) +- zz40-xc-ovr.m4: fix 'wc' detection - follow-up 2 + + - Fix a pair of single quotes to double quotes. + + URL: http://curl.haxx.se/mail/lib-2013-01/0355.html + Reported by: Tor Arntsen + +- zz40-xc-ovr.m4: fix 'wc' detection - follow-up + + - Take into account that 'wc' may return leading spaces and/or tabs. + + - Set initial IFS to space, tab and newline. + +- zz40-xc-ovr.m4: fix 'wc' detection + + - Take into account that 'wc' may return leading spaces. + + - Set internationalization behavior variables. + + Tor Arntsen analyzed and reported the issue. + + URL: http://curl.haxx.se/mail/lib-2013-01/0351.html + +- zz40-xc-ovr.m4: check another three basic utilities + +- zz40-xc-ovr.m4: 1.0 interface stabilization + + - Stabilization results in 4 public interface m4 macros: + XC_CONFIGURE_PREAMBLE + XC_CONFIGURE_PREAMBLE_VER_MAJOR + XC_CONFIGURE_PREAMBLE_VER_MINOR + XC_CHECK_PATH_SEPARATOR + - Avoid one level of internal indirection + - Update comments + - Drop XC_OVR_ZZ40 macro + +- zz40-xc-ovr.m4: emit witness message in configure BODY + + This avoids witness message in output when running configure --help, + while sending the message to config.log for other configure runs. + +- zz40-xc-ovr.m4: truly do version conditional overriding + + - version conditional overriding + - catch unexpanded XC macros + - fix double words in comments + +- zz40-xc-ovr.m4: fix variable assignment of subshell output bashism + + Tor Arntsen analyzed and reported the issue. + + URL: http://curl.haxx.se/mail/lib-2013-01/0306.html + +- zz40-xc-ovr.m4: reinstate strict AC_REQUIRE macro dependencies + +- zz40-xc-ovr.m4: avoid double single-quote usage + +- zz40-xc-ovr.m4: parentheses balancing of 'case' statements + + m4 quadrigraph shell comment technique allows proper autoconf + parentheses balancing in shell 'case' statements. The presence + of unbalanced parentheses may otherwise trigger expansion bugs. + +- zz40-xc-ovr.m4: internals overhauling + + - Update comments + - Execute commands in subshells + - Faster path separator check + - Fix missing 'test' command + - Rename private macros + - Minimize AC_REQUIRE usage + +- zz40-xc-ovr.m4: redirect errors and warnings to stderr + +- configure: use XC_CONFIGURE_PREAMBLE early checks + + Some basic checks we make were placed early enough in generated + configure script when using autoconf 2.5X versions. Newer autoconf + versions expand these checks much further into the configure script, + rendering them useless. Using XC_CONFIGURE_PREAMBLE fixes placement + of early intended checks across all our autoconf supported versions. + +- zz40-xc-ovr.m4: provide XC_CONFIGURE_PREAMBLE macro + +- configure: autotools compatibility fixes - step I + + Fix proper macro expansion order across autotools versions for + C compiler and preprocessor program checks. + +- configure: fix automake 1.13 compatibility + + Tested with: + + buildconf: autoconf version 2.69 + buildconf: autom4te version 2.69 + buildconf: autoheader version 2.69 + buildconf: automake version 1.13.1 + buildconf: aclocal version 1.13.1 + buildconf: libtool version 2.4 + buildconf: GNU m4 version 1.4.16 + +- ares_private.h: use again memdebug.h instead of curl_memdebug.h + +- configure.ac: replace AM_CONFIG_HEADER with AC_CONFIG_HEADERS + + automake 1.13 errors if AM_CONFIG_HEADER is used in configure script. + +- cares-override.m4: provide AC_CONFIG_MACRO_DIR definition conditionally + + Provide a 'traceable' AC_CONFIG_MACRO_DIR definition only when using + an autoconf version that does not provide it, instead of what we were + doing up to now of providing and overriding AC_CONFIG_MACRO_DIR for + all autoconf versions. + +- ares_private.h: use curl_memdebug.h instead of memdebug.h + +- vc6cares.dsp: add ares_create_query.c and ares_parse_soa_reply.c + +- cares-functions.m4: improve gethostname arg 2 data type check + +- setup_once.h: HP-UX specific 'bool', 'false' and 'true' definitions. + + Also reverts commit bceb40095a + +- configure: check if compiler halts on function prototype mismatch + +- cares-functions.m4: add gethostname arg 2 data type check and definition + +- cares-functions.m4: update thread-safeness detection of getaddrinfo() + + Take in account that POSIX standard Issue 7 drops h_errno support. Now, we also + consider getaddrinfo() to be thread-safe when (_POSIX_C_SOURCE >= 200809L) or + (_XOPEN_SOURCE >= 700) independently of whether h_errno exists or not. + + Take in account that h_errno might be a modifiable lvalue not defined as + a C preprocessor macro. + +- setup_once.h: HP-UX <sys/socket.h> issue workaround + + Issue: When building a 32bit target with large file support HP-UX + <sys/socket.h> header file may simultaneously provide two different + sets of declarations for sendfile and sendpath functions, one with + static and another with external linkage. Given that we do not use + mentioned functions we really don't care which linkage is the + appropriate one, but on the other hand, the double declaration emmits + warnings when using the HP-UX compiler and errors when using modern + gcc versions resulting in fatal compilation errors. + + Mentioned issue is now fixed as long as we don't use sendfile nor + sendpath functions. + +- setup_once.h: refactor inclusion of <unistd.h> and <sys/socket.h> + + Inclusion of these two header files now done in setup_once.h + +- Header inclusion clean-up + + Remove header inclusions already done in setup_once.h + +- setup_once.h: HP-UX specific TRUE and FALSE definitions + + Some HP-UX system headers require TRUE defined to 1 and FALSE to 0. + +- ares_timeout.c: fix compiler warning + +- ares_create_query.c: IRIX compilation fix + +- c-ares/nameser.h: add some T_* defines for ns_t_* values + +Daniel Stenberg (7 Nov 2012) +- Revert "ares_parse_aaaa_reply: fix memory leak" + + This reverts commit 50f25d8a4b2d16f4c5e0ef620238688b7a315c7a. + +- ares_parse_aaaa_reply: fix memory leak + + an allocated buffer was not freed in the successful case. + +- [Gisle Vanem brought this change] + + adig: perror() doesn't work for socket errors on windows + + ... so print the SOCKERRNO instead + +- get_DNS_AdaptersAddresses: fix IPv6 parsing + + Use of the wrong define made the function not parse IPv6 addresses + properly. + + Bug: http://c-ares.haxx.se/mail/c-ares-archive-2012-06/0028.shtml + Reported by: Saúl Ibarra Corretgé + +- version: bumped to 1.10.0 + + Due to the newly added function: ares_create_query() + +- AUTHORS: synced with 83093ac450 + + Added 21 authors since this document was last updated + +- ares_create_query.3: mention when this is added + +- [hpopescu@ixiacom.com brought this change] + + Added new feature (rfc2671) + +- code police: fix indents, < 80 columns, reflowed comments + +Guenter Knauf (11 Jul 2012) +- Cleaned up version awk script. + +Daniel Stenberg (30 Jun 2012) +- [Gisle Vanem brought this change] + + read_udp_packets: bail out loop on bad sockets + + I can see that recvfrom() in ares_process.c many times is called with + 'udp_socket' == ARES_SOCKET_BAD. The code takes care not to call + recv/recvfrom with ARES_SOCKET_BAD in the outer-loop. So should the + inner-loop. + +Yang Tse (29 Jun 2012) +- cares-compilers.m4: remove -Wstrict-aliasing=3 from clang + + Currently it is unknown if there is any version of clang that + actually supports -Wstrict-aliasing. What is known is that there + are several that don't support it. + +- cares-compilers.m4: -Wstrict-aliasing=3 for warning enabled gcc and clang builds + +Daniel Stenberg (18 Jun 2012) +- version: work towards 1.9.2 (at least) + +Version 1.9.1 (18 Jun 2012) + +Daniel Stenberg (18 Jun 2012) +- RELEASE-NOTES: 1.9.1 coming up + +Version 1.9.0 (16 Jun 2012) + +Daniel Stenberg (16 Jun 2012) +- ares_version.h: next version is 1.9.0 + +- [Marko Kreen brought this change] + + ares_data.h: ARES_DATATYPE_SOA_REPLY is added in 1.9.0 + +- RELEASE-NOTES: synced with 979bf951d + + Next release deemed to become 1.9.0 due to the new function + +- [Marko Kreen brought this change] + + SOA parser added + + I need to do SOA queries, so here is a parser for them. + + - ares_soa_reply: new struct + - ares_malloc_data/ares_free_soa: ARES_DATATYPE_SOA_REPLY + - ares_parse_soa_reply: actual function + +Yang Tse (14 Jun 2012) +- Kill compiler warning + +- Fix libcares.pc generation for static MingW* cross builds + +Daniel Stenberg (21 May 2012) +- [Nick Alcock brought this change] + + Fix UDP and TCP port byte order in saved options. + + The UDP and TCP port are stored in network byte order in the + ares_channeldata, but are passed in to ares_init_options() in host byte + order. Thus we must return them from ares_save_options() in host byte + order too, or a duplicated channel will convert them again, leading to a + nonfunctional channel and a mysterious connection refused error from + ares_gethostbyname(). This breaks ares_dup(), thus the curl easy API + when c-ares is used by curl, and thus all the curl easy API's users. + +Yang Tse (28 Apr 2012) +- version: start working on 1.8.1-DEV + +Version 1.8.0 (27 Apr 2012) + +Daniel Stenberg (27 Apr 2012) +- RELEASE-NOTES: call next 1.8 instead + + Since we added a function, let's use a stricter bumping scheme + +Yang Tse (25 Apr 2012) +- INSTALL: some adjustments + +Daniel Stenberg (25 Apr 2012) +- GIT-INFO: mention buildconf + +Yang Tse (25 Apr 2012) +- INSTALL: remove more sections that don't apply to c-ares + +- ares_timeout.c: fix compiler warning + +Daniel Stenberg (25 Apr 2012) +- [Ben Noordhuis brought this change] + + Makefile.m32: fix mingw32 build + + * add . to include path so ares_build.h is picked up + * make ar configurable to ease cross-compiling + +- RELEASE-NOTES: added what's happened since 1.7.5 + +Guenter Knauf (22 Apr 2012) +- Updated copyright year. + +Yang Tse (21 Apr 2012) +- ares_init.c: Further refactoring of Windows system's DNS fetching code + +Guenter Knauf (20 Apr 2012) +- Android: small changes to dns property part. + + Prefix prop vars; kill var; use DNS_PROP_NAME_PREFIX macro. + +- Handle CNAME-only in ares_parse_aaaa_reply(). + + posted to the c-ares list by Peter Griess <pg@std.in>. + +- Add support for multiple DNS servers on Android. + + Before, c-ares always used the first DNS server on Android, causing + network problems if this DNS server was not available. + + Signed-off-by: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com> + +- Added INSTALL so it gets into tarballs. + +- Added some more ifdefs to silent compiler warnings. + +Yang Tse (17 Apr 2012) +- INSTALL: remove a non c-ares section + +- cares-compilers.m4: -Wno-pedantic-ms-format for Windows gcc 4.5 builds + + When building a Windows target with gcc 4.5 or newer and strict compiler + warnings enabled use -Wno-pedantic-ms-format in addition to other flags. + +- setup_once.h: tighten requirements for stdbool.h header inclusion + + Include stdbool.h only when it is available and configure is capable of + detecting a proper 'bool' data type when the header is included. + +- configure: NATIVE_WINDOWS no longer defined in config file + +- cares-compilers.m4: double underscore decoration for visibility attribute + +- build adjustments: CARES_SYMBOL_HIDING no longer defined in config files + + configure script now provides conditional definitions for Makefile.am + that result in CARES_SYMBOL_HIDING being defined by resulting makefiles + when appropriate. + +- configure: Windows cross-compilation fixes + + CARES_BUILDING_LIBRARY and CARES_STATICLIB no longer defined in ares_config.h, + configure will generate appropriate conditionals so that mentioned symbols + get defined and used in Makefile derived from Makefile.am at compilation time. + +Guenter Knauf (17 Apr 2012) +- Added INSTALL file adapted from libcurl. + + Not yet ready, and needs further edits. + +Yang Tse (16 Apr 2012) +- ares_init.c: get_iphlpapi_dns_info() refactoring + +Guenter Knauf (16 Apr 2012) +- Kill some more compiler warnings. + +- Kill compiler warning about unused var. + +- Fixed my last commit: wrong preprocessor directive. + +- Check for __ANDROID__ in addition to ANDROID macro. + +- Check for __ANDROID__ in addition to ANDROID macro. + + Posted to c-ares list by Wayne. + +- Fix for Android to disable useless arpa/nameser.h. + +- Fix for Android to include sys/select.h for fd_set. + +Yang Tse (17 Mar 2012) +- ares_data.c: some NAPTR related fixes + +Daniel Stenberg (16 Mar 2012) +- port numbers: convert them to network order! + + When the config options ARES_OPT_UDP_PORT or ARES_OPT_TCP_PORT are used, + make sure to convert them to network byte order! + + Bug: http://c-ares.haxx.se/mail/c-ares-archive-2012-02/0004.shtml + +- white space cleanup + + - Keep code within 80 columns + + - Removed funny spaces after open paren and before closing paren + +- [Poul Thomas Lomholt brought this change] + + get_iphlpapi_dns_info: fix buffer overrun + + I experienced a buffer overrun exception in c-ares on Windows and + tracked it down to be an error in the calculation of the 'left' variable + in get_iphlpapi_dns_info(). + + I changed the variable type of 'left' to a _signed_ type because of the + subtraction arithmetic; not sure if a long is the best choice + +- Merge pull request #7 from saghul/naptr + + Added support for parsing NAPTR records + +saghul (23 Feb 2012) +- Added support for parsing NAPTR records + +Yang Tse (19 Jan 2012) +- ares_init.c: fix compiler warning on winsock builds + +- configure: libtool 1.5 tweaks + +Daniel Stenberg (19 Dec 2011) +- ares_timeout.3: fix the NAME section + + It was clearly a copy n' paste error + +Yang Tse (27 Sep 2011) +- [Albert Chin brought this change] + + configure - m4: make CURL_CHECK_DEF ignore leading whitespace on symbol def + + When using Sun C compiler the preprocessor somehow inserts an extra space + in front of replaced symbol, breaking CURL_CHECK_DEF macro. To workaround + this, macro CURL_CHECK_DEF now ignores all leading whitespace in front of + symbol substitution result. + +- ares_init.c: fix segfault triggered in ares_init_options() upon previous + failure of init_by_defaults() and incomplete cleanup there. + +- ares_process.c: fix compiler warning + +- fix MSVC compiler warning 'conditional expression is constant' + +- setup_once.h cleanup and sync + +- [Denis Bilenko brought this change] + + ares_getnameinfo: fix random results with c-ares 1.7.5 + + In ares_getnameinfo memcpy did not copy enough bytes, causing + it to return arbitrary memory contents as a result. + +- warnings: fix another 'conversion may lose significant bits' compiler warning + +- ares_dns.h: adjust DNS__16BIT and DNS__32BIT macro definitions + + Fixing compiler warnings existing definitions triggered on these. + +- ares_destroy.c: fix segfault in ares_destroy_options() + +Daniel Stenberg (21 Aug 2011) +- ares_parse_srv_reply: silence compiler warnings + + ... by adding ugly typecasts. + +- CHANGES: generate from script + + The CHANGES file is now generated automatically with 'git2changes.pl', + invoked by the maketgz script which is used to build release archives. + + The former human edited CHANGES file was renamed to CHANGES.0 in git. + +Yang Tse (21 Aug 2011) +- Makefile.netware: SIZEOF_SHORT definition + +- warnings: fix some 'conversion may lose significant bits' compiler warnings + +- configure: fix symbol hiding usability check + + A more thorough test is done now in order to determine visibility attribute + usability, given that some compilers don't support visibility attribute on + all configurations. + +Daniel Stenberg (16 Aug 2011) +- 1.7.6: start working... + +Version 1.7.5 (16 Aug 2011) + +Daniel Stenberg (16 Aug 2011) +- CHANGES: synced for 1.7.5 release + +- RELEASE-NOTES: synced with bb4096effef7f000 + +Jakub Hrozek (15 Aug 2011) +- Only fall back to AF_INET searches when looking for AF_UNSPEC addresses + +Yang Tse (10 Aug 2011) +- [Gisle Vanem brought this change] + + ares_iphlpapi.h: Watcom C fix + + Added "!defined(_WS2DEF_)" since Watcom doesn't have + a per type guard for the typedefs 'CSADDR_INFO' (that MingW has) or + 'SOCKET_ADDRESS' (that MSVC has). But we can use the header-guard for + <ws2def.h> instead. + +- [Gisle Vanem brought this change] + + Makefile.Watcom: + * The 'NTDDI_VERSION' needs to be raised to 0x05010000 + in order for SOCKADDR_STORAGE etc. to be typedefed. + * Replaced '-dUSE_WATT32' with '-dWATT32'. + * Added $(DEMOS) to the 'all' target and removed the 'demos' + target to be consistent with e.g. Makefile.msvc etc. + * 'ENABLE_IPV6' is no longer used. Hence removed the '%use_ipv6' construct. + * object-file order seems to be important (Watcom v.19). Hence + 'ares_getopt.obj' must be put after the .obj that references getopt(). + +- cares-compilers.m4: CARES_CONVERT_INCLUDE_TO_ISYSTEM adjustments + + Add CARES_CHECK_COMPILER as a requirement. + + Ensure macro does nothing unless GNU_C or CLANG compiler is used. + + This should allow usage of this macro in unforeseen placements. + +- config-win32.h: comments adjustments - followup + +- config-win32.h: comments adjustments + +Daniel Stenberg (5 Aug 2011) +- [Tom Hughes brought this change] + + ares_parse_a_reply: fix memleak + +Yang Tse (29 Jul 2011) +- cares-functions.m4 serial # bump + +- Revert "configure: additional flag checks for fcntl() and socket()" + + This reverts commit 5f2a3b0e48f26d24cb1fefea0dccb92d417dcbf7. + +- configure: additional flag checks for fcntl() and socket() + +- xc-translit.m4 fix quoting + +- configure: avoid direct usage of AS_TR_* macros + +- xc-translit.m4 provides transliteration macros with well defined behavior. + +Jakub Hrozek (15 Jun 2011) +- Revert "Only fall back to AF_INET searches when looking for AF_UNSPEC addresses" + + This reverts commit b5823d65706af687c0e5110af8f0cfdcd068997d. + + This patch was not reviewed properly before pushing + +- Revert "Do not use sized constants in public headers" + + This reverts commit 22c01e96f7b2ae9923e1baa50bfe3c0d22297a7d. + + This is a Red Hat specific patch that does not belong into upstream + +- Use correct sizeof in ares_getnameinfo() + +- Do not leak rr_name on failures inside ares_parse_ptr_reply + +- Do not leak rr_name on failures inside ares_parse_a_reply + +- Do not leak rr_name on failures inside ares_parse_aaaa_reply + +- Do not leak rr_name on failures inside ares_parse_ns_reply + +- Fix incorrect sizeof() in ares_save_options + +- Fix incorrect allocation in ares_parse_ptr_reply() + +- Only fall back to AF_INET searches when looking for AF_UNSPEC addresses + +- Do not use sized constants in public headers + +Daniel Stenberg (13 Jun 2011) +- [Jakub Hrozek brought this change] + + ares_free_hostent(NULL) should be a noop + +Yang Tse (8 Jun 2011) +- configure: fix recvfrom 5th arg type qualifier detection (followup) + +- configure: fix recvfrom 5th arg type qualifier detection + + Additionally remove whitespace from EOL + +Daniel Stenberg (4 Jun 2011) +- strlen: use size_t to receive the return + +Yang Tse (4 Jun 2011) +- xlc: avoid preprocessor definition usage when linking + +- ares_nowarn: icc 9.1 workaround + +- ares_nowarn: header inclusion fix + +- ares_init: make ares_private.h last included header again + +- compiler warning: fix + + Fix compiler warning: conversion may lose significant bits + +- compiler warning: fix + + Fix compiler warning: variable was set but never used + + Fix compiler warning: clobber ignored + +- ares_iphlpapi: fix compiler warnings + +- winsock: compilation fixes + + Provide winsock iphlpapi alternative definitions to prevent compilation + failures when using a variety of winsock header implementations. + +Daniel Stenberg (17 May 2011) +- [David Stuart brought this change] + + IPv6-on-windows: find DNS servers correctly + +- man pages: docs for the c-ares utility programs + +- ares_parse_ns_reply.c: remove CVSism + +Yang Tse (27 Mar 2011) +- build: fix header inclusion + +- getservbyport replacement for Win CE + +- renamed getplatform() to ares__getplatform() to avoid namespace pollution + +- configure: fix libtool warning + + Recent versions of libtool are now tracing usage of AC_CONFIG_MACRO_DIR + macro and warn heavily when not used in configure script along with + ACLOCAL_AMFLAGS in Makefile.am. So in order to make libtool happy + while keeping backwards compatibility this is added. + +- adig: RFC4034 resource record type detection + + Can be tested with: adig -s 8.8.8.8 -t ANY example.com + +- nameser.h: RFC4034 resource record type definitions + +- build: move platform stuff to ares_platform.c and ares_platform.h + +- build: find out windows platform using GetVersionEx() + +- build: use getenv() replacement function for systems which lack it + +- setup_once: system error codes for Windows CE + +- ares_search: use ERRNO macro for portability sake + +- System's errno.h inclusion cleanup follow-up. + + System's errno.h is conditionally included from setup_once.h + +- Windows CE specific adjustment + + All versions of Windows CE support Winsock 1.1 + +- System's errno.h inclusion cleanup. + + System's errno.h is conditionally included from setup_once.h + +- ares_init: fix gethostname error detection on winsock platforms + +- configure: r-enable temporarily disabled detection of system's inet_ntop() + + Detection was temporarily disabled in commit 674e044ccb21f2f63537da53565fce868f + +Daniel Stenberg (15 Mar 2011) +- configure: stop using the deprecated AM_INIT_AUTOMAKE syntax + +- [Gisle Vanem brought this change] + + Watt-32: use errno + + Make sure Watt-32 programs use 'errno' even on Win32 targets + +Guenter Knauf (18 Feb 2011) +- Removed commented CLFAGS no longer needed. + +- Fixed CFLAGS for NetWare. + + Added -m32 to enable compilation with x86_64 compilers; + added conditional to set -fpcc-struct-return only for gcc compiler. + +Daniel Stenberg (18 Feb 2011) +- [Gisle Vanem brought this change] + + Watt32: fix server init + + Somewhere in the process, programs using the Watt-32 tcp/ip stack + stopped working. + +- [Dima Tisnek brought this change] + + config_sortlist: (win32) missing else + + Without an else there, contents of "pat" that could have been + successfully set just above, may be clobbered by successive unsuccessful + calls to "xxx_pton" or "ip_addr". + +Yang Tse (17 Jan 2011) +- Makefile.msvc: add a couple of VS version strings + +- Makefile.msvc: add a couple of VS version strings + +- build: add install target to Makefile.msvc + +Daniel Stenberg (27 Dec 2010) +- ares_set_servers_csv: remove unused variables + +- init_by_resolv_conf: fix compiler warnings + + The code received the return codes in the 'status' variable without + using it. Instead we just ignore those particular errors. + +- getv4: Value stored to 'dst' is never read + +- advance_tcp_send_queue: avoid NULL ptr dereference + + If given a too large 'num_bytes' value, it would cause a NULL ptr + dereference. Instead the code will now break out of the loop at the end + of the list. + +- [Peter Pentchev brought this change] + + configure: fix a bashism + +- cleanup: avoid unsafe typecasts + + Avoid the risk of reading 16bit data from an unaligned address by using + a macro that is adapted for this. + +- [Stefan Bühler brought this change] + + ares_expand_name: Fix encoded length for indirect root + +Yang Tse (18 Dec 2010) +- build: add some explicit file references to VS project files + +- config-win32: provide HAVE_ASSERT_H definition + +- build: include ares_nowarn in sample program VS project files + +- build: include ares_nowarn among SAMPLESOURCES and SAMPLEHEADERS + +- configure: temporarily disable detection of system's inet_ntop() + + This is done to allow compilation of ares_inet_ntop() by some daily + builds picky compilers that otherwise do not need this function. + +- changes: mention last fix + +- ares_inet_ntop: remove definition and usage of macro SPRINTF + + Existing definition of SPRINTF always resulted in sprintf() being used, + and sprintf() returning 'int' is already used throughout the library. + +- ares_inet_ntop: reapply changes from previous c-ares version (III) + + - Replace 'u_char' with 'unsigned char'. + - Replace 'u_int' with 'unsigned int'. + - use macros ERRNO and SET_ERRNO() for errno handling. + +- ares_inet_ntop: reapply changes from previous c-ares version (II) + + - Remove rcsid. + - Adjust header file inclusions. + - ares_inet_ntop used only on systems without a proper inet_ntop function. + +- ares_inet_ntop: reapply changes from previous c-ares version (I) + + - Replace tabs with spaces. + - Use ANSI C style for function declarations and definitions. + - Use sizeof with parentheses. + +- ares_inet_ntop: fix off by one error triggering out of bounds write + + ares_inet_ntop would trigger an out of bounds write when the representation + of the address required 15 characters, due to not taking in account null + termination character. + + Full import of inet_ntop.c from bind-9.5.3rc1 to pull additional fixes. + +- ares_nowarn: add conditional inclusion of assert.h header + +- fix compiler warning: conversion may lose significant bits + +- ares_inet_net_pton: fix non-rejection of some malformed literals + + ares_inet_net_pton would return wrong values when excessively large, + and invalid, netmasks are used. Fixes are from bind-9.5.3rc1, + issue also described in the WLB-2008080064 advisory. + +- setup_once: provide ISASCII macro + +- configure: inet_net_pton function check adjustments + + Define HAVE_INET_NET_PTON only when system's inet_net_pton function is IPv6 + capable and is not affected by the WLB-2008080064 advisory. + + HAVE_INET_NET_PTON_IPV6 is no longer defined nor used. + +- ares_init: fix detection of semicolon comments in resolv.conf + + File resolv.conf may either use a hash '#' or a semicolon ';' character as an + indication that the rest of the line is a comment. This fixes not recognizing + the semicolon as a valid comment indicator in resolv.conf. + +- version: start working on 1.7.5 + +Version 1.7.4 (8 Dec 2010) + +Daniel Stenberg (8 Dec 2010) +- release-preps: CHANGES and RELEASE-NOTES synced + +- ares_set_local_*: added in 1.7.4, not before + +Yang Tse (3 Dec 2010) +- build: provide SIZEOF_SIZE_T definition for non-configure builds + +- build: config.dos renamed to config-dos.h + +- build: provide SIZEOF_SIZE_T netware definition + +- ares_gethostbyaddr: fix compiler warning: conversion may lose significant bits + +- configure: undo using autobuilds to temporarily verify strict aliasing warnings. + +- fix compiler warning: rounding, sign extension, or loss of accuracy may result + +Daniel Stenberg (2 Dec 2010) +- [Ben Noordhuis brought this change] + + ares_parse_a_reply: fix CNAME response parsing + + Reply to a CNAME query doesn't contain addresses, causing + ares_parse_a_reply() to bail out with ARES_ENODATA + + Bug: http://groups.google.com/group/nodejs/browse_thread/thread/a1268c9ea5e9ad9b + +Yang Tse (1 Dec 2010) +- fix compiler warning: conversion may lose significant bits + +- atoi: remove atoi usage + +- ares_init: fix compiler warning: conversion may lose significant bits + +- configure: fix autoconf warning + +- inet_pton: fix compiler warning + +- configure: use autobuilds to temporarily verify strict aliasing warnings. + + Temporarily, When cross-compiling with gcc 3.0 or later, enable strict aliasing + rules and warnings. Given that cross-compiled targets autobuilds do not run the + test-suite, there is no risk of running code that violates strict aliasing rules + +- ares_getnameinfo: Partially revert commit 85520d66e0ac7ac73411bc25e98769a88b2f + + Upon socket address family and length validation failure return ARES_ENOTIMP + in callback again, this is the error code documented in man page and used + mostly all over the library. + +- ares_getnameinfo: Validate socket address family and length. + + Validate socket address family and that the socket address length is appropriate + for the specified family. Failure is reported with ARES_EBADFAMILY in callback. + +- ares_getnameinfo: fix two compiler warnings + +- Added another VS10 version string + +- Fix GCC 4 compiler warning 'dereferencing type-punned pointer might break strict-aliasing rules'. + +- Revert commit 494274e653936335c255a47599970de3df21e7c4 + +- configure: fix autoconf 2.68 warning: no AC_LANG_SOURCE call detected in body + +- Fix compiler warning: array subscript has type 'char' + +- Fix GCC 4 compiler warning 'dereferencing type-punned pointer might break strict-aliasing rules'. + +- Revert following commits: + 07bc7ea79509bcc9ef6e09151e81766ed00d3392 + 3392a50ea3f8573ea4b7a9d82b9833dab60cb0e9 + 9912637d32c9987719a1ea12db591aee2941891c + + The purpose of the whole patch was to silence a compiler warning triggered + with GCC 4 on file ares_process.c The specific compiler warning was + 'dereferencing type-punned pointer might break strict-aliasing rules'. + + A simpler patch will follow to equally silence the warning. + +- ares_options: reorder header inclusions to make inclusion of + ares_private.h the last included one again. + +Daniel Stenberg (12 Nov 2010) +- [Patrik Thunstrom brought this change] + + adig: fix NAPTR parsing + + I ran across a small "issue" in your adig example. + + It is simply the last part of the NAPTR record, the replacement element, + which is not a string, as currently handled in adig, but a domain name. + +- ares_save_options: assignments instead of memcpy + +- init_by_options: don't copy an empty sortlist + + If there aren't any sort items to copy, don't bother. Without this + little precaution it would do a malloc(0) which causes undefined + behaviors and is frowned upon by curl's memdebug-system. + +Guenter Knauf (3 Oct 2010) +- Minor Watcom makefile tweaks. + +Daniel Stenberg (30 Sep 2010) +- [Mike Crowe brought this change] + + Fix lookup with HOSTALIASES set. + + ares__read_line returns ARES_EOF when it reaches the end of the + file. This will happen every time when reading to the end of the + HOSTALIASES file. Unfortunately single_domain treats this error as + being fatal. + + Signed-off-by: Mike Crowe <mac@mcrowe.com> + +Ben Greear (24 Aug 2010) +- Add missing break that caused get_ares_servers to fail. + + Reported-by: Ning Dong <flintning@163.com> + Signed-off-by: Ben Greear <greearb@candelatech.com> + +Yang Tse (11 Aug 2010) +- configure: werror related adjustments + +Guenter Knauf (8 Aug 2010) +- Added copyright string to ares_version.h and make use of it in other files. + +- Block created ares_build.h for NetWare to avoid usage from other platforms. + +- Fix to overwrite default libname. + +- Some more Watcom makefile massage ... + +- Some more Watcom makefile massage ... + +Ben Greear (4 Aug 2010) +- sock-addr-storage: Detect and deal with lack of .ss_family member. + + AIX, at least, does not have sockaddr_storage.ss_family member. + Detect this in the configure logic and use proper #ifdefs in the + ares_process logic. + + Signed-off-by: Ben Greear <greearb@candelatech.com> + Tested-by: Tor Arntsen <tor@spacetec.no> + +Guenter Knauf (3 Aug 2010) +- Added Watcom makefile based on libcurl's Makefile.Watcom. + +Ben Greear (31 Jul 2010) +- typo: Fix compile bug for platforms that don't have sockaddr_storage. + + Bug was introduced by me in previous commit. + + Signed-off-by: Ben Greear <greearb@candelatech.com> + +- Fix aliasing warning in gcc 4.4.4 (at least). + + Should be no functional change, though the code gets a bit + ugglier. + + Signed-off-by: Ben Greear <greearb@candelatech.com> + +Daniel Stenberg (31 Jul 2010) +- ares_set_servers_csv: use ISDIGIT + + The IS*() set of macros are preferred to the regular is*() functions as + they help us avoid the most common pitfalls. + +Ben Greear (30 Jul 2010) +- cast arg to isdigit to int + + Looks like it might silence a warning on Netware build. + + Signed-off-by: Ben Greear <greearb@candelatech.com> + +- remove all uses of uint32_t + + Previous fix forgot a few. + + Signed-off-by: Ben Greear <greearb@candelatech.com> + +- fix signed v/s unsigned casts warning in ares_gethostbyaddr.c + + Signed-off-by: Ben Greear <greearb@candelatech.com> + +- local-bind-fixup: Fix inet_pton warning. + + Conditionally include <arpa/inet.h> for inet_pton + headers. + + Signed-off-by: Ben Greear <greearb@candelatech.com> + +- build: Enable compiling with -Werror. + + This helps find compile warnings because they simply break + the build. + + To use: + ./configure --enable-warnings --enable-werror + + Signed-off-by: Ben Greear <greearb@candelatech.com> + +- ipv6: Fix some build issues related to the local-bind feature. + + Signed-off-by: Ben Greear <greearb@candelatech.com> + +Guenter Knauf (29 Jul 2010) +- Replaced uint32_t with unsigned int to fix broken builds on a couple of platforms. + +Daniel Stenberg (18 Jul 2010) +- [Ben Greear brought this change] + + local-bind: Support binding to local interface/IPs + + Add 3 new functions to set the local binding for the out-going + socket connection, and add ares_set_servers_csv() to set a + list of servers at once as a comma-separated string. + + Signed-off-by: Ben Greear <greearb@candelatech.com> + +- version: now start on 1.7.4 + +- [Andrew C. Morrow brought this change] + + fix memory leak in ares_getnameinfo + +Version 1.7.3 (11 Jun 2010) + +Daniel Stenberg (11 Jun 2010) +- changelogs: updated for 1.7.3 + +- [BogDan Vatra brought this change] + + init: allow c-ares to work on Android OS + +- changelog: fill in the 1.7.2 changes + +- added another pdf to ignore + +Yang Tse (11 Jun 2010) +- add ares_parse_mx_reply.c to VS dsp file + +Daniel Stenberg (10 Jun 2010) +- tarball: add $(CSOURCES) $(HHEADERS) to EXTRA_DIST + + It's not clear to me why we need this, but we apparently may + otherwise not get all files bundled in the dist tarball. + +- version: start working on 1.7.3 + +Version 1.7.2 (10 Jun 2010) + +Daniel Stenberg (10 Jun 2010) +- RELEASE-NOTES: 1.7.2 details added + +- [Jakub Hrozek brought this change] + + ares_init: Last, not first instance of domain or search should win + +- style: make code less than 80 columns wide + +Yang Tse (31 May 2010) +- [Tor Arntsen brought this change] + + improve alternative definition of bool to use enum instead of unsigned char + +- fix VS2010 compiler warnings + +Daniel Stenberg (18 Apr 2010) +- [Jérémy Lal brought this change] + + added ares_parse_mx_reply + +- repair the file mode + +- remove all $Id$ lines + +- remove all .cvsignore files + +- spell fix + + reported by Gregor Jasny on the mailing list + +- [Peter Pentchev brought this change] + + Fix a couple of typos and grammar nits. + +- ignore the GPG signature files too + +- start the journey towards 1.7.2 + +- no longer CVS tagging + +- ignore generated PDFs + +Version 1.7.1 (23 Mar 2010) + +Daniel Stenberg (23 Mar 2010) +- 1.7.1 + +- made README the primary readme file + + ... and did README.cares to contain a historic reason etc. + +- s/CVS/git + +- git now, not CVS + +- ignore lots of generated files + +- [Daniel Johnson brought this change] + + Fix warnings for clang + +Yang Tse (17 Mar 2010) +- replaced intel compiler option -no-ansi-alias with -fno-strict-aliasing + +- update outdated serial number + +- fix compiler warning + +- watt32 compilation fix + +- Added another VS10 version string + +- fix line break + +- removed usage of 's6_addr', fixing compilation issue triggered with no + longer using 'in6_addr' but only our 'ares_in6_addr' struct + +Daniel Stenberg (5 Mar 2010) +- Daniel Johnson provided fixes for building with the clang compiler + +Yang Tse (5 Mar 2010) +- Added IPv6 name servers support + +Gisle Vanem (5 Mar 2010) +- Ops!. Readded ares_nowarn.h. + +- Added ares_nowarn.c. + +Yang Tse (28 Feb 2010) +- Added SIZEOF_INT and SIZEOF_SHORT definitions for non-configure systems + +- Added ares_nowarn.* to VC6 project file + +- Added SIZEOF_INT definition + +- fix compiler warning + +- fix compiler warning + +- fix compiler warning + +Daniel Stenberg (17 Feb 2010) +- ares_reinit() + + - To allow an app to force a re-read of /etc/resolv.conf etc, pretty much + like the res_init() resolver function offers + +- - Tommie Gannert pointed out a silly bug in ares_process_fd() since it didn't + check for broken connections like ares_process() did. Based on that, I + merged the two functions into a single generic one with two front-ends. + +Yang Tse (30 Dec 2009) +- VMS specific preprocessor symbol checking adjustments + +- Mention last changes + +- - Fix configure_socket() to use ares_socket_t instead of int data type. + +- - Where run-time error checks enabling compiler option /GZ was used it is now + replaced with equivalent /RTCsu for Visual Studio 2003 and newer versions. + + - Compiler option /GX is now replaced with equivalent /EHsc for all versions. + +- - Ingmar Runge noticed that Windows config-win32.h configuration file + did not include a definition for HAVE_CLOSESOCKET which resulted in + function close() being inappropriately used to close sockets. + +Daniel Stenberg (30 Nov 2009) +- start working on 1.7.1 + +Version 1.7.0 (27 Nov 2009) + +Yang Tse (27 Nov 2009) +- Preserve empty line following last target + +- - Larry Lansing fixed ares_parse_srv_reply to properly parse replies + which might contain non-SRV answers, skipping over potential non-SRV + ones such as CNAMEs. + +- When using icc, compile with -fpic and link with intel dynamic libraries. + +- Added 'currently' in italics to insist on transient situation. + +- Fix language + +- Daniel wants upcoming release to be 1.7.0 + +- Mention last changes + +- - Removed from external interface preprocessor symbol definition for + CARES_HAVE_ARES_FREE_DATA. Current functionality of ares_free_data() + makes it unnecessary. + +- Added README.msvc + +- Changed c-ares naming conventions when using MSVC as described in README.msvc + +- - Mention other recent changes + +- - Jakub Hrozek renamed addrttl and addr6ttl structs to ares_addrttl and + ares_addr6ttl in order to prevent name space pollution, along with + necessary changes to code base and man pages.This change does not break + ABI, there is no need to recompile existing applications. But existing + applications using these structs with the old name will need source code + adjustments when recompiled using c-ares 1.6.1. + +- - Jakub Hrozek fixed more function prototypes in man pages to sync them + with the ones declared in ares.h + +- Make configure remove the ares_build.h file included in distribution tarballs. + +- Fix macro redefinition. + +- Fix name space pollution. + +- Allow using different extra import libraries for debug and release builds. + +- Add manifest stuff to msvc makefile + +- Sync man page with reality + +- Add missing external API decoration for ares_set_socket_callback() + +- Add ares_free_data() man page. + +- - Provide in external interface preprocessor symbol definitions for + CARES_HAVE_ARES_FREE_DATA as an indication of function availability. + +- Remove typecast + +- Fix comment + +- Add ares_data.c and ares_data.h + +- Jakub Hrozek modified ares_parse_srv_reply() and ares_parse_txt_reply() API + to return a linked lists of results. These were also modified to internally + use the ares_data memory struct and as such its result must be free'ed with + ares_free_data(). + +- Initial support for the generic ares_free_data() function that will allow + applications to free memory allocated and returned by some c-ares funtions. + +- Make usage of calloc()'s arguments consistent with rest of code base + +- workaround icc 9.1 optimizer issue + +- Add icc fvisibility bug test + +- Fix icc 9.0 compiler warning: external definition with no prior declaration + +- Fix three var names + +- Add check for assert.h header file + +- getaddrinfo is fully thread safe on solaris versions which + implement the function even when h_errno is not a macro. + + The h_errno macro test now only done on systems for which there + is no hard coded knowledge about getaddrinfo's thread safeness. + +- Remove files generated on previous buildconf/configure run + +- Remove enable-thread / disable-thread configure option. These were only placebo + options. The library is always built as thread safe as possible on every system. + +- Refactor how preprocessor symbol _THREAD_SAFE definition is done. + +- Assume that getaddrinfo is thread safe, unless hard coded + knowledge says the contrary or h_errno is not defined. + +- Related with the threadsafe capability of getaddrinfo: + + - Constantine Sapuntzakis reported that Darwin 6.0 a.k.a. MAC OS X 10.2 + and newer have a threadsafe getaddrinfo. + + - Fix Dragonfly BSD triplet detection. + + - In case the hard-coded knowledge says that getaddrinfo is threadsafe, + an additional check is done to verify that h_errno is also defined. + If h_errno isn't defined, we finally assume that it isn't threadsafe. + Jamie Lokier provided the inspiration for this extra check. + +- AIX 5.2 and newer have threadsafe getaddrinfo. + + Add some comments to better understand what the regex's pretend to achieve. + +- HP-UX 11.11 and later have threadsafe getaddrinfo + +- Check if getaddrinfo is threadsafe when function check allows it to be used + +- Renamed fpGetNetworkParams and fpSystemFunction036 to avoid namespace pollution with static library + +- Add kernel32.lib + +- Mention last changes + +- Reinstate copyright symbol lost in previous commit + +- Make some strings different in resource file for debug or release builds + +- Ignore more subdirs + +- Fix compiler warning: conditional expression is constant + +- Sync linker and resource compiler options with Makefile.msvc + +- Follow Makefile.msvc subdirectory naming scheme, and sync compiler options + +- Updated MSVC makefile that allows building dynamic and static + c-ares libraries in debug and release flavours. + + Additionally each of the three sample programs is built against + each of the four possible c-ares libraries, generating all this + a total number of 12 executables and 4 libraries. + +- Test for USE_WINSOCK since it is more restrictive than WIN32 + +- Make header inclusion depend on HAVE_*_H definition + +- Remove unneeded preprocessor directives + +- Adjust c-ares include paths for memory tracking enabled (--enable-curldebug) builds + +- source files used by sample programs + +- Renamed c-ares setup.h to ares_setup.h + +- Adjust include paths to take in account that currently: + + c-ares with --enable-curldebug uses memdebug.h from libcurl's lib subdirectory. + + memdebug.h needs access to libcurl's setup.h from libcurl's lib subdirectory + and also needs access to libcurl's generated curl_config.h + +- Undo old temporary change once used for testing purposes + +- Mention many changes + +- Mention --enable-symbol-hiding configure option + +- Symbol hiding configure options renamed to the hopefully less ambiguous + --enable-symbol-hiding and --disable-symbol-hiding as well as related + macro names and some internal variables used for them. + + Related configuration file preprocessor symbols named to + CARES_SYMBOL_HIDING and CARES_SYMBOL_SCOPE_EXTERN. + +- Header inclusion depending on HAVE_* symbol. + Fix two typos. + +- Comparison of the Initial revision of this file with ares_parse_a_reply.c + shows that this one is actually a modified copy of ares_parse_a_reply.c. + + In order to comply with ares_parse_a_reply.c's M.I.T. license, the old + 1998 M.I.T. copyright notice is now also preserved in this file the same + as it is done in other ares_parse_*.c files. + +- Add CVS Id tag. + Fix identation of some license lines. + +- Add CVS Id tag. + +- Fix comment + +- In no particular order, changed/fixed all of the following in + ares_parse_txt_reply() current version: + + - Fixed a couple of potential double free's. + + - Fixed memory leaks upon out of memory condition. + + - Fixed pointer arithmetic. + + - Setting ntxtreply to zero upon entry for all failure cases. + + - Changed data type to size_t for variables substr_len, str_len and + the length member of ares_txt_reply struct. + + - Avoided a couple of memcpy() calls. + + - Changed i data type to unsigned int to prevent compiler warnings. + + - Adjusted a comment. + + - Use ARES_SUCCESS literal for successfull completion. + + - Added CVS Id tag. + +- Add c-ares DLL resource file to distribution archive + +- ignore files + +- Empty subdir + +- Updated MSVC 6.0 workspace and project files that allows building + dynamic and static c-ares libraries in debug and release flavours. + + Additionally each of the three sample programs is built against + each of the four possible c-ares libraries, generating all this + a total number of 12 executables and 4 libraries. + +Daniel Stenberg (29 Oct 2009) +- no need to check for NULL pointers before dereferencing, as the pointers + MUST be valid and they are dereferenced further down in the function + unconditionally! + +- shorten the descriptions somewhat + +- update to the new struct name + +- Jakub Hrozek added ares_parse_txt_reply() for TXT parsing + +- use 'ares_srv_reply' for proper name-spacing + +Yang Tse (29 Oct 2009) +- Add reference for ares_parse_srv_reply.pdf + +- Add reference for ares_parse_srv_reply docs + +- External API function linkage decoration adjustment + +- External API function linkage decoration adjustment + +- Initial step towards the ability to reduce c-ares exported symbols + based on the 'visibility' attribute for GNUC and __global for Sun + compilers, taking also in account __declspec function decoration + for Win32 and Symbian DLL's. + + Introducing configure options --enable-hidden-symbols and + --disable-hidden-symbols following libcurl's naming. + +- Fix comment + +- Fix spelling + +- Fix Pelles C Win32 target compilation issues + +- John Engelhart noticed an unreleased problem relative to a duplicate + ARES_ECANCELLED error code value and missing error code description. + +- Fix compiler warning: local variable may be used without having been initialized + +- Use *_CHECK_PATH_SEPARATOR_REQUIRED to ensure that *_CHECK_PATH_SEPARATOR + is only expanded and included once in the configure script. + +- Our _AS_PATH_SEPARATOR_PREPARE override is now m4_defun'd instead of m4_define'd + due to autoconf 2.64 m4_require'ing it in _AS_SHELL_SANITIZE indirectly through + _AS_PATH_WALK. + +- Fix compiler warning: argument is incompatible with corresponding format string conversion + +- Fix potential out-of-bounds read + +- Fix compiler warning: loop without body + +- Fix compiler warning + +- Fix compiler warning + +- Fix compiler warning + +- Fix compiler warning: addition result could be truncated before cast to bigger sized type + +- Overhauled ares__get_hostent() + + - Fixing out of bounds memory overwrite triggered with malformed /etc/hosts file. + - Improving parsing of /etc/hosts file. + - Validating requested address family. + - Ensuring that failures always return a NULL pointer. + - Adjusting header inclusions. + +- Fix ssize_t redefinition errors on WIN64 reported by Alexey Simak + +- more files to ignore + +- Check if _REENTRANT definition is required to + make errno available as a preprocessor macro. + +- Attempt to silence bogus compiler warning: "Potential null pointer dereference" + +- ignore more files + +Gisle Vanem (7 Sep 2009) +- Suppress warnings about unused prototypes in Watt32 and Win32 programs. + +- Update email address. + +- Update my email address. Add ares_config.h as dependency for 'make depend'. + +Yang Tse (6 Sep 2009) +- T_SRV portability check + +Gunter Knauf (5 Sep 2009) +- changed includes to match style how we do with all other *.c files. + +- changed u_int16_t to unsigned short because it is the only place within ares and curl where such a type would be used; + also it broke many autobuilds. We should probably introduce an ares_port_t if we want to use a type here. + +Gisle Vanem (5 Sep 2009) +- Replace 'uint16_t' with 'u_int16_t' since the latter is used in ares.h. + +- Added 'ares_parse_srv_reply.obj'. Added definition of 'u_int16_t'. This is I don't like; we should not depend on such non-universal types in a public header. But this is just a quick fix. + +Daniel Stenberg (4 Sep 2009) +- - Jakub Hrozek added ares_parse_srv_reply() for SRV parsing + +Steinar H. Gunderson (27 Aug 2009) +- Support lookup of IPv4 literals in ares_gethostbyname(), even when the address family is set to AF_INET6. + +Gisle Vanem (3 Aug 2009) +- Remove call to LoadLibrary(). (leftover from debugging). + +- Fix bad sentence. + +Daniel Stenberg (3 Aug 2009) +- - Timo Teras changed the reason code used in the resolve callback done when + ares_cancel() is used, to be ARES_ECANCELLED instead of ARES_ETIMEOUT to + better allow the callback to know what's happening. + +- - Joshua Kwan fixed the init routine to fill in the defaults for stuff that + fails to get inited by other means. This fixes a case of when the c-ares + init fails when internet access is fone. + +Gunter Knauf (16 Jul 2009) +- test if adding ../lib to includes can fix the current break ... + +- renamed generated config.h to ares_config.h in order to avoid clashes when libcurl is used with other projects which also have a config.h. + +Yang Tse (21 Jun 2009) +- Refactor how libraries are checked for connect() function, follow-up. + +- Refactor how libraries are checked for connect() function, + and check for connect() as it is done for other functions. + +Gisle Vanem (20 Jun 2009) +- Remove unneeded defines. + +- Use select_s() and not select(). + +Yang Tse (19 Jun 2009) +- sclose() function-like macro definition used to close a socket, + now solely based on HAVE_CLOSESOCKET and HAVE_CLOSESOCKET_CAMEL + config file preprocessor definitions. + +- add CloseSocket camel case function check + +- check for socket() and closesocket() as it is done for other functions + +- Remove HAVE_CONFIG_H definition from here, + CFLAGS from common.dj already defines it. + +- initial step towards decoupling c-ares from libcurl for DOS + +- don't ignore these subdirs, they must be removed first + +- Remove DEBUGBUILD symbol definition, is not required for programs using the library. + +- DEBUGBUILD symbol definition for debug builds + +- ignore some subdirs + +- fix comment + +- Try to make more clear that --enable-curldebug has nothing to do with --enable-debug for this library. + +- Revert last change, it is inappropriate. + +Gisle Vanem (12 Jun 2009) +- Replace CURLDEBUG with DEBUGBUILD. + +Yang Tse (11 Jun 2009) +- when running automake copy missing files instead of symlinking them + +- Adjusted to take in account that... + + With the curl memory tracking feature decoupled from the debug build feature, + CURLDEBUG and DEBUGBUILD preprocessor symbol definitions are used as follows: + + CURLDEBUG used for curl debug memory tracking specific code (--enable-curldebug) + + DEBUGBUILD used for debug enabled specific code (--enable-debug) + +- c-ares' --enable-debug --enable-curldebug decoupling follow-up + +- mention last changes + +- Remove buildconf.bat from release and daily snapshot archives. + + buildconf.bat is only for CVS tree builds. + +- Ensure that buildconf.bat does nothing unless it is used with a CVS checkout. + +- CVS-INFO file only present in CVS tree, never in release nor daily snapshot + archives. Used as a sentinel file in buildconf.bat to differentiate CVS builds. + +Gisle Vanem (8 Jun 2009) +- Update comment about "ML". Removed "-D_USE_32BIT_TIME_T" (not a requirement). + +Yang Tse (8 Jun 2009) +- just comment it out + +- For debugging purposes... + + Disable the '-export-symbols-regex' to discard this as the origin + of link failures related with shared libraries and non-GNU linkers. + +- c-ares Makefile.am back to using $(top_builddir) for *_LDADD + +- c-ares' -no-undefined and --enable-curldebug adjustments + +- Use relative path to built c-ares tree libtool library + +- John E. Malmberg noticed that the configure script was failing to detect the + timeval struct on VMS when building with _XOPEN_SOURCE_EXTENDED undefined due + to definition taking place in socket.h instead of time.h + +- Fix compiler warning: out of bound access + +- fix compilation on AIX + +- c-ares' --enable-curldebug adjustments + +- Remove temporarily introduced memory leak. + +- Temporarily introduce a memory leak to verify curl debug memory tracking works. + +- Allow curl debug memory tracking when building a shared library on + systems which support external, undefined, symbols in shared libraries. + +Daniel Stenberg (26 May 2009) +- language fix + +Yang Tse (26 May 2009) +- Make ares_init(), ares_dup() and ares_init_options() return ARES_ENOTINITIALIZED + if library initialization has not been performed calling ares_library_init(). + +- c-ares's --enable-curldebug configure option decoupled from c-ares's --enable-debug + +- Prevent copying 'sourced' manpages for build targets that don't use them. + +Daniel Stenberg (23 May 2009) +- minor edits + +Yang Tse (21 May 2009) +- Include .pdf versions of c-ares man pages in distribution tarball. + +- Allow generation of .html and .pdf versions of c-ares man pages. + +Gisle Vanem (21 May 2009) +- $(OBJ_DIR)/ares_getopt.o must be cleaned explicitly. + +Yang Tse (20 May 2009) +- Mention last changes + +- Initial ares_library_cleanup(3) man page + +- Update man page + +- Update man page + +- Initial ares_library_init(3) man page attempt + +- Force revision update, to force CVS to update the $Id date string format + +- Add same copyright notice as other c-ares files + +- Fix case + +- Remove run-time requirement for advapi32.dll since + c-ares can work even with no advapi32.dll at all. + +- Intentionally avoid checking if the address of SystemFunction036, a.k.a. + RtlGenRandom, has been located or not. This function is only available on + WinXP and later. When unavailable c-ares uses portable rand() function. + +- - Provide in external interface preprocessor symbol definitions for + CARES_HAVE_ARES_LIBRARY_INIT and CARES_HAVE_ARES_LIBRARY_CLEANUP + to ease the use of new capabilities. + + - Move ares_version() prototype to ares.h + +- Introduction of ares_library_init() and ares_library_cleanup() + +- Introduction of ares_library_init() and ares_library_cleanup() + +- remove outdated comment + +- Fix preprocessor conditional expression + +- fiX *__SOCKLEN_T definitions for remaining targets + +- *__SOCKLEN_T definitions for OS400 already fixed + +- fIX *__SOCKLEN_T definitions for SYMBIAN32 and VMS targets + +Daniel Stenberg (11 May 2009) +- - Gregor Jasny made c-ares link with libtool 's -export-symbols-regex option to + only expose functions starting with ares_. + +Yang Tse (11 May 2009) +- Remove experimental check. Currently there's no need for it. + +- Fix an m4 overquoting triggering a spurious 'AS_TR_CPP' symbol definition + attempt in generated config.h + +- Proper naming for the experimental compiler test and moved to *-compilers.m4 + +- Moved *_CHECK_COMPILER_HALT_ON_ERROR and *_CHECK_COMPILER_ARRAY_SIZE_NEGATIVE to *-compilers.m4 along with other *_CHECK_COMPILER_* + +- fIX *__SOCKLEN_T definitions for OS400 and generic GCC targets + +- fIX *__SOCKLEN_T definitions for MVS and 370 targets + +- fIX *__SOCKLEN_T definitions for several Windows target tool-chains + +- HP-UX's X/Open network library requirement check follow-up + +- HP-UX's X/Open network library requirement check follow-up + +- Use build-time configured ares_socklen_t instead of socklen_t + +- David McCreedy's "TPF-platform specific changes to various files" patch follow-up + +Daniel Stenberg (1 May 2009) +- s/libcurl/c-ares + +- version number typo fix + +Yang Tse (1 May 2009) +- David McCreedy's "TPF-platform specific changes to various files" patch + +- Check definition of _XOPEN_SOURCE_EXTENDED with the compiler + +- Check if X/Open network library is required + +- cope with ares_build.h and ares_rules.h follow-up + +- Added some notes regarding ares_build.h + +- fix EOL + +- fix EOL + +- cope with ares_build.h and ares_rules.h + +- buildconf.bat for CVS-tree c-ares + +- Use 'unsigned int' instead of size_t attempting to avoid header inclusion + +- NetWare LibC's getpeername() third argument data type is size_t + +- Remove temporary debug tracing for ares_socklen_t Windows targets + +- ares_socklen_t follow-up + +- ares_build.h Windows follow-up + +- Add temporary debug tracing for ares_socklen_t Windows targets + +- ares_build.h NetWare follow-up + +- ares_build.h NetWare attempt + +- Initial step towards a configure time ares_socklen_t definition + +- ignore stamp-h* + +- Added CARES_INCLUDES_SYS_TYPES + +- Initial step towards a configure time curl_socklen_t definition + +- avoid use of alloca() + +- Moved potential inclusion of system's malloc.h and memory.h header files to + setup_once.h. Inclusion of each header file is based on the definition of + NEED_MALLOC_H and NEED_MEMORY_H respectively. + +- ignore + +Gisle Vanem (18 Apr 2009) +- Added '-DHAVE_LIMITS_H'. + +Yang Tse (17 Apr 2009) +- remove compiler options used while debugging the icc 9.1 optimizer issue + +- moved HAVE_LIMITS_H to common defines + +- Set HP-UX compiler warning level back to the one that exposes + the socklen_t issue on this platform. + +- HAVE_LIMITS_H definition for NetWare CLIB + +- use HAVE_LIMITS_H symbol to protect limits.h inclusion + +- fix compiler warning: implicit conversion shortens 64-bit value into a 32-bit value + +- s/u_long/unsigned long/ + +- Do not halt compilation when using VS2008 to build a Windows 2000 target + +- ignore + +Phil Blundell (3 Feb 2009) +- * February 3 2009 (Phil Blundell) + - If the server returns garbage or nothing at all in response to an AAAA query, + go on and ask for A records anyway. + +Daniel Stenberg (31 Jan 2009) +- - ares_gethostbyname() now accepts 'AF_UNSPEC' as a family for resolving + either AF_INET6 or AF_INET. It works by accepting any of the looksups in the + hosts file, and it resolves the AAAA field with a fallback to A. + +Gisle Vanem (18 Jan 2009) +- fopen() returns error in 'errno' even on Windows. + So don't use ERRNO (GetLastError()). Trimmed trailing + blanks. + +- Constified some arguments in local functions. + +Daniel Stenberg (14 Jan 2009) +- - ares.h no longer uses the HAVE_STRUCT_IN6_ADDR define check, but instead it + now declares the private struct ares_in6_addr for all systems instead of + relying on one possibly not present in the system. + +Phil Blundell (13 Jan 2009) +- - ares__send_query() now varies the retry timeout pseudo-randomly to avoid + packet storms when several queries were started at the same time. + +Daniel Stenberg (11 Jan 2009) +- - Phil Blundell added the internal function ares__expand_name_for_response() + that is now used by the ares_parse_*_reply() functions instead of the + ares_expand_name() simply to easier return ARES_EBADRESP for the cases where + the name expansion fails as in responses that really isn't expected. + +Gunter Knauf (30 Dec 2008) +- added HAVE_SOCKADDR_IN6_SIN6_SCOPE_ID to ares Makefile.netware and sync'd with other Makefile.netware. + +Daniel Stenberg (9 Dec 2008) +- use the new URL + +- start over on the 1.6.1 release... + +Version 1.6.0 (9 Dec 2008) + +Daniel Stenberg (9 Dec 2008) +- add space + +Gisle Vanem (9 Dec 2008) +- Fix for Win32 targets using Watt-32. + +Dan Fandrich (9 Dec 2008) +- C89 compilers (like Minix' ACK) only need to handle 31 functions arguments + so split a long sprintf into two calls to get below that number. + +Gisle Vanem (8 Dec 2008) +- Added needed defines for Watt-32 on Windows. + +- Undefine 'optarg', 'optind' and 'opterr' when using Watt-32 + (to get correct linkage on Windows). + +- ares_writev() shall not be exported when using Watt-32 (has writev). + Added _USE_32BIT_TIME_T to avoid runtime warning. Applies to + VC-2008+ only. + +- Removed unneeded defines HAVE_SIGNAL_H, HAVE_SIG_ATOMIC_T, + RETSIGTYPE and HAVE_PROCESS_H. + +Daniel Stenberg (4 Dec 2008) +- the initial version of the ares_set_socket_callback man page + +- Gregor Jasny provided the patch that introduces ares_set_socket_callback(), + and I edited it to also get duped by ares_dup(). + +Dan Fandrich (4 Dec 2008) +- Bring the sys/include.h include test in line with curl's. + +Daniel Stenberg (3 Dec 2008) +- Let's not call ares_save_options() deprecated just yet + +- Introduce ares_dup(3) and new thoughts about API/ABI and how to move forwards. + Also discussed on the ml. + +Dan Fandrich (2 Dec 2008) +- Make sure sys/socket.h is included before netinet/in.h (required by + OpenWatcom C, and condoned by SUS) + +Daniel Stenberg (1 Dec 2008) +- minor indent fix + +- Convert the public config struct to the same binary size/construct as in the + latest releases to remain ABI compatible. + +Gisle Vanem (29 Nov 2008) +- Added '-DHAVE_GETHOSTNAME'. + +Dan Fandrich (29 Nov 2008) +- Make sure sys/socket.h is included before netinet/in.h (required by + OpenWatcom C) + +- Netware has gethostname() + +- Fixed a couple of typos + +- Don't tweak the HAVE_* macros when using autoconf + +- Make use of gethostname() conditional on it being available + +- Only set TCP_NODELAY when it exists + +Daniel Stenberg (28 Nov 2008) +- updated with changes, preparing for a release soon + +Yang Tse (26 Nov 2008) +- Gerald Combs fixed a bug in ares_parse_ptr_reply() which would cause a + buffer to shrink instead of expand if a reply contained 8 or more records. + +- Brad Spencer provided changes to allow buildconf to work on OS X. + +- In preparation for the upcomming IPv6 nameservers patch, the internal + ares_addr union is now changed into an internal struct which also holds + the address family. + +Dan Fandrich (20 Nov 2008) +- Make checking for struct ifreq a prerequisite for setting + HAVE_IOCTL_SIOCGIFADDR since it's needed to use SIOCGIFADDR and Watcom C + doesn't currently define it. + +Daniel Stenberg (20 Nov 2008) +- use unsigned short better intead of mixing with ints to prevent compiler + warnings + +- please the picky compilers by staying with short as the data we get is short + only + +- - Brad Spencer brought the new function ares_gethostbyname_file() which simply + resolves a host name from the given file, using the regular hosts syntax. + +Yang Tse (19 Nov 2008) +- user provided PATH_SEPARATOR always overrides auto-detected one + +- attempting to keep lines below 80 chars + +- provide a common PATH_SEPARATOR check method which is required by + upcomming work to support the broadest range of Autoconf versions + +- check for gethostbyaddr and gethostbyname as it is done for other functions + +- Make configure script check if ioctl with the SIOCGIFADDR command can be + used, and define HAVE_IOCTL_SIOCGIFADDR if appropriate. + +- fix leftover from previous commit + +- fix inet_pton() runtime configure check + +- trim down configure script size + +Daniel Stenberg (15 Nov 2008) +- Fixed an OOM condition reported by Jim Meyering + +Yang Tse (14 Nov 2008) +- fix typo affecting inclusion of <arpa/inet.h> in configure + checks for inet_ntoa_r() inet_ntop() and inet_pton() + +- #include <string.h> in the getaddrinfo() runtime check for the memset() prototype + +- fix symbol definition check for fcntl.h inclusion + +- Refactor configure script detection of functions used to set sockets into + non-blocking mode, and decouple function detection from function capability. + +Daniel Stenberg (1 Nov 2008) +- Added a TODO file to list things we want changed, added or fixed. + +- - Carlo Contavalli added support for the glibc "rotate" option, as documented + in man resolv.conf: + + causes round robin selection of nameservers from among those listed. This + has the effect of spreading the query load among all listed servers, rather + than having all clients try the first listed server first every time. + + You can enable it with ARES_OPT_ROTATE + +Yang Tse (1 Nov 2008) +- Adjust WIN32 freeaddrinfo, getaddrinfo and getnameinfo availability + +- WIN32 availability of freeaddrinfo, getaddrinfo and getnameinfo functions is quite + convoluted, compiler dependant and in some cases even build target dependat. + +- check for freeaddrinfo() at configuration phase + +- update aclocal file serial number + +- remove verification of the freeability of the addrinfo struct pointer members + +- fix comment + +- make CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_ADDR + and CHECK_FUNC_GETADDRINFO_UNFREEABLE_AI_CANONNAME + internal to CHECK_FUNC_GETADDRINFO + +- fix leftover + +- Initial attempt to detect at configuration time if the getaddrinfo() + function returns an addrinfo with an unfreeable ai_canonname member ptr. + +- Initial attempt to detect at configuration time if the getaddrinfo() + function returns an addrinfo with an unfreeable ai_addr member ptr. + +- icc adjustments: + + Select ANSI C89 dialect plus GNU extensions, again. + +- some more temporary magic for the icc seg-fault issue + +- icc permanent adjustment: + + Select precise floating-point model, otherwise doubles are less than 64-bit wide + + icc test adjustment: + + Select c89 dialect + +- icc adjustments: + + Enable more icc warnings. + + Optimization disabling options used only for icc 9.1 + +- #include <stdlib.h> for exit() prototype + +- some more temporary magic for the icc seg-fault issue + +- remove from configure.ac temporary magic for the icc seg-fault issue + +- some more temporary magic for the icc seg-fault issue + +- Charles Hardin patch: + + - handles the EINPROGRESS for UDP connects + - uses closesocket instead of close on some paths that were noticed + +- some more temporary magic for the icc seg-fault issue + +- messages initially intended only for debug purposes, now become permanent + since these are extremely useful when compiler rejects a set of options. + +- fix compiler warning + +- fix missing double-quotes + +Daniel Stenberg (17 Oct 2008) +- Charles Hardin made adig support a regular numerical dotted IP address for the + -s option as well. + +Yang Tse (16 Oct 2008) +- some more temporary magic for the icc seg-fault issue + +- Ensure that shell variable contents which have active meaning + to the shell echo command are not interpreted when trying to + remove extra whitespace from shell variable content. + +- Adjust Watcom C warnings: + + Disable warnings on structure members padding. + +- With this change Solaris target builds will now be done with _REENTRANT defined. + +- Adjust Tiny C basic options: + + Remove -b from debug-enabled configuration, as Tiny C might have + been built without the memory and bounds checker support. + +- Adjust GCC warnings: + + Better disable following warnings when cross-compiling with a gcc older + than 3.0, to avoid warnings from third party system headers: + + -Wmissing-declarations + -Wmissing-prototypes + -Wunused + -Wshadow + +- fix syntax error + +- Initial attempt to detect Watcom C compiler + +- make naming scheme more consistent across whole file + +- Adjust GCC warnings: + + Disable following warnings when cross-compiling with a gcc older + than 3.0, to avoid warnings from third party system headers: + + -Wmissing-prototypes + -Wunused + -Wshadow + +- Adjust GCC --enable-warnings: + + Do not enable -pedantic when cross-compiling with a gcc older + than 3.0, to avoid warnings from third party system headers. + +- adjust SGI MIPSpro C detection + +- LCC compiler adjustments: + + Highest warning level is double -A, next is single -A. + Due to the big number of warnings these trigger on third + party header files it is impratical for us to use any of + them here. If you want them simply define it in CPPFLAGS. + +- remove extra space + +- split SGI compiler check. One for MIPS C and another for MIPSpro C + +- LCC compiler adjustments: + + Warning level reduced from double -A to single -A + +- Initial attempt to detect Tiny C compiler + +- Initial attempt to detect LCC compiler + +- 1) fix bug in CONVERT_INCLUDE_TO_ISYSTEM + + 2) Disable SGI remark: controlling expression is constant + +- simplify SGI C compiler check + +- HP C adjustments: + + Due to the HP-UX socklen_t issue it is insane to use the +w1 warning level. + It generates more than 1100 warnings on socklen_t related statements. + + Until the issue is somehow fixed we will just use the +w2 warning level. + +- Add debug tracing for COMPILER_WORKS_IFELSE + +- configure will also warn on 'strict compiler warning' rejected options + +- convert rejected compiler options messages into a warnings + +- remove extra whitespace from string in SGI C check + +- oops + +- Initial attempt to detect SGI C compiler + +- HP C adjustments: + + Disallow run-time dereferencing of null pointers. + + Disable some remarks: + + #4227: padding struct with n bytes to align member. + + #4255: padding size of struct with n bytes to alignment boundary. + +- improve presentation of accepted/rejected debug/optimizer options + +- refactoring of COMPILER_BASIC_OPTS + +- Initial attempt to detect SUN C compiler + +- Initial attempt to detect HP C compiler + +- fix compiler warning: 'dot_4' may be used uninitialized in this function + +- adjust ICC_windows settings + +- fix VAR_STRIP + +- Sync up with reality + +- Initial attempt to support configure's --(dis|en)able-optimize + option to specify dis(activation) of compiler optimizations. + + If option is specified, it will be honored independant of the + --(dis|en)able-debug option. + +- fix comment + +- Initial attempt to support configure's --(dis|en)able-warnings + option to specify dis(activation) of picky compiler warnings. + + If option is specified, it will be honored independant of the + --(dis|en)able-debug option. + + If option is not specified, it will follow --(dis|en)able-debug + setting, whose default is disabled if not specified. + +- fix compiler warning: dereferencing type-punned pointer will break strict-aliasing rules + +- now compiler warnings are activated for all gcc builds, not only debug ones. + +- Use CFLAGS for icc linker options instead of LDFLAGS, + otherwise gethostbyname() is not detected. + +- use ac_cv_compiler and ac_cv_compiler_num to keep compiler ID and version number + +- Temporary icc adjustment: + + Disable floating point optimizations + +- HAVE_INET_PTON will only be defined when an IPv6 capable working + inet_pton function is available. + +- HAVE_INET_NTOP will only be defined when an IPv6 capable working + inet_ntop function is available. + +- ntoa() and inet_ntoa_r() no longer used + +- icc adjustments for icc 9.0 and prior versions: + + Disable remark #279: controlling expression is constant + + Remark triggered mostly on va_arg() and FD_ZERO() macros. + +- attempt to make work the gethostname function + check for winsock build target configurations + +Gisle Vanem (21 Sep 2008) +- Added HAVE_NETDB_H, HAVE_ARPA_INET_H, HAVE_STRCASECMP + and HAVE_STRNCASECMP. + +Yang Tse (19 Sep 2008) +- icc adjustments: + + Disable remark #981: operands are evaluated in unspecified order + + Function calls which are triggering this remark, today, do not depend + on the order of evaluation of its arguments. + + Disable remark #1469: "cc" clobber ignored + + Remark triggered on htons() and ntohs() due to glibc header files. + +- icc adjustments + +- fix netdb.h prerequisite inclusion + +- improve detection of getservbyport_r() + +- On Linux Intel's icc uses gcc's header files, so + we select ANSI C89 dialect plus GNU extensions. + +- improve detection of gethostname() + +- NetWare builds include "nameser.h" from the c-ares subdir + +- include <strings.h> + +- Sync up with reality + +- adjust inclusion of "nameser.h" + +- reorder some lines in file + +- code cleanup + +- NetWare seems to have writev() + +- rearrange to allow internal/private use of ares_writev to any system + that lacks the writev function. + +- NetWare CLIB target has stricmp() and strnicmp() + +- include header file only when available + +- rearrange to allow internal/private use of ares_strcasecmp to any system that + lacks the strcasecmp function. + +- improve detection of: + strcasecmp() + strcmpi() + stricmp() + strncasecmp() + strncmpi() + strnicmp() + +- *** empty log message *** + +Gisle Vanem (12 Sep 2008) +- djgpp does have strdup(). + +Yang Tse (12 Sep 2008) +- change CRLF into LF line endings + +- strdup() clone for systems/configurations which lack it + +- move inclusion of ares_private.h last + +- icc adjustments + +- icc adjustments + +- Select strict ANSI C89 conformance for icc + +- remove unnecessary typecasting of malloc() + +- remove unnecessary typecasting of realloc() + +Daniel Stenberg (29 Aug 2008) +- we start over working towards 1.5.4 + +Version 1.5.3 (29 Aug 2008) + +Daniel Stenberg (29 Aug 2008) +- Version 1.5.3 + +- added the three people from RELEASE-NOTES and sorted the list alphabetically + +Yang Tse (27 Aug 2008) +- Don't abort configuration if recvfrom() is not available. + +- Functionality only possible if recvfrom() is available. + +- George Neill's fix acountry sample application compilation failure. + +- Brad House's validation that DNS response address matches the request address + +- fix the output name + +- Get rid of ENABLE_64BIT symbol definition and usage. + + Improve HAVE_LONGLONG symbol description. + +- Export 'ares_process_fd' too. + +Gisle Vanem (16 Aug 2008) +- Ops, remove 'use_vc'. + +- Support Watt-32 under Win32. + +Yang Tse (10 Aug 2008) +- Fix: Remove now this SIZEOF_CURL_OFF_T symbol definition. + + This should have been done with the initial 64-bit curl_off_t patch. + +- Improve CURL_CHECK_DEF + +- Fix IBM C and DEC/Compaq C compiler detection + +- Initial support of curlbuild.h and curlrules.h which allows + to have a curl_off_t data type no longer gated to off_t. + +- The minimum autoconf version required for this file is 2.50 + + Avoid dot notation in aclocal serial file number, use a single number now. + +Daniel Stenberg (4 Aug 2008) +- - Fix by Tofu Linden: + + The symptom: + * Users (usually, but not always) on 2-Wire routers and the Comcast service + and a wired connection to their router would find that the second and + subsequent DNS lookups from fresh processes using c-ares to resolve the same + address would cause the process to never see a reply (it keeps polling for + around 1m15s before giving up). + + The repro: + * On such a machine (and yeah, it took us a lot of QA to find the systems + that reproduce such a specific problem!), do 'ahost www.secondlife.com', + then do it again. The first process's lookup will work, subsequent lookups + will time-out and fail. + + The cause: + * init_id_key() was calling randomize_key() *before* it initialized + key->state, meaning that the randomness generated by randomize_key() is + immediately overwritten with deterministic values. (/dev/urandom was also + being read incorrectly in the c-ares version we were using, but this was + fixed in a later version.) + * This makes the stream of generated query-IDs from any new c-ares process + be an identical and predictable sequence of IDs. + * This makes the 2-Wire's default built-in DNS server detect these queries + as probable-duplicates and (erroneously) not respond at all. + +Yang Tse (4 Aug 2008) +- Autoconf 2.62 has changed the behaviour of the AC_AIX macro which we use. + Prior versions of autoconf defined _ALL_SOURCE if _AIX was defined. But, + autoconf 2.62 version of AC_AIX defines _ALL_SOURCE along with other four + preprocessor symbols no matter if the system is AIX or not. To keep the + traditional behaviour, as well as an uniform one, across autoconf versions + AC_AIX is replaced with our own internal macro. + +- Adjust DEC/Compaq C compiler settings. + +- Another AC_TRY_LINK conversion to AC_LINK_IFELSE. + Proper definition of HAVE_function if function is found deeper. + +- Sync up with reality + +- Rename reentrant.m4 to avoid filename clash. + +- Add file version serial number that might be used by 'aclocal' and others. + + Keep the '#' character as the first one on the line. + +- Update copyright year. + +- Sync comment with reality. + +- Reinstate the 'aclocal -I m4' in buildconf and 'ACLOCAL_AMFLAGS = -I m4' way of + including our local m4/reentrant.m4 file. This even takes care of including the + file in the distribution tarball. + +- Add quoting for the AC_DEFINE arguments. + +- Also remove the whitespace. + +- Also remove the extra quoting. + +- Replace some '@%:@' quadigraphs by its actual representation '#'. + + This quadigraph used before a C preprocessor 'define' directive could + be fooling M4, when processing this file, and make it think that the + line contains a pure M4 'define' macro. + +- Tests done using 'aclocal -I m4' in buildconf and 'ACLOCAL_AMFLAGS = -I m4 + in top Makefile.am triggered a problem that prevented aclocal from running + successfully on SunOS 5.10 with GNU m4 1.4.5 and GNU Autoconf 2.61 + + A tarball which reproduces mentioned problem is the one dated July-28-2008 + http://cool.haxx.se/curl-daily/curl-7.19.0-20080728.tar.gz + + We actually don't need all the bells and whistles that the above mechanism + provides. We only need to include our m4/reentrant.m4 file in acinclude.m4 + so here we go with this simpler mechanism. + +- for debugging purposes show ACLOCAL_FLAGS + +- These lines were unintentionally removed in previous commit + +- Partially undo change that prevented SED, GREP, EGREP and AR from being changed by libtool or autoconf. + +- Assert that SED and GREP are set + +- Require autoconf 2.57 or newer + +- When calling aclocal, user defined ACLOCAL_FLAGS will now precede ours. + +- move ACLOCAL_AMFLAGS after AUTOMAKE_OPTIONS + +- setup.h handles definition of _REENTRANT based on NEED_REENTRANT + definition which might be defined in config.h or config-*.h files + +- Remove explicit inclusion of our m4 files first. It was interesting as a test, + but it breaks aclocal execution on some systems, with the following error: + + Can't locate object method "rel2abs" via package "File::Spec" at /usr/local/bin/aclocal line 256. + +- Another step towards detecting if _REENTRANT is already defined or actually + needed, and being able to define it if appropriate for further configure tests + as well as for the generated config file. + +- Explicitly include our m4 files first. This might minimize the impact + that other package's underquoted m4 function definitions have on ours. + +- Add a 3 argument check for getprotobyname_r |