• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1   Changelog for the c-ares project. Generated with git2changes.pl
2
3Version 1.18.1 (26 Oct 2021)
4
5bradh352 (26 Oct 2021)
6- missed version
7
8- 1.18.1 release prep
9
10- ares_getaddrinfo() was returning the wrong size for ai_addrlen
11
12  ai_addrlen was erroneously returning 16 bytes instead of the
13  sizeof(struct sockaddr_in6).  This is a regression introduced
14  in 1.18.0.
15
16  Reported by: James Brown <jbrown@easypost.com>
17  Fix By: Brad House (@bradh352)
18
19- Windows: autotools force linking to iphlpapi
20
21GitHub (26 Oct 2021)
22- [Gregor Jasny brought this change]
23
24  Fix typo detected by lintian (#434)
25
26  typo in docs for ares_parse_uri_reply
27
28  Fix By: Gregor Jasny (@gjasny)
29
30Version 1.18.0 (25 Oct 2021)
31
32bradh352 (25 Oct 2021)
33- replace Travis badge with Cirrus-CI badge
34
35- c-ares 1.18.0 release prep
36
37GitHub (21 Oct 2021)
38- [Jérôme Duval brought this change]
39
40  Haiku: port (#431)
41
42  Port for Haiku.  Slight CMake changes, header changes, and resolv.conf/hosts paths specific to Haiku.
43
44  Port By: Jérôme Duval (@korli)
45
46bradh352 (19 Oct 2021)
47- valgrind: fix reported invalid read
48
49- make sure distcheck runs
50
51- detect oddities and skip test if necessary
52
53- fix null ptr deref in strlen
54
55- bend over backwards for testing file access, something is weird on debian
56
57- chmod(fn, 0) is failing on debian
58
59- maybe process needs to be called
60
61- split test output
62
63- clean up a couple of compiler warnings
64
65- use helper function for addrinfo to simplify code
66
67- INSTANTIATE_TEST_CASE_P -> INSTANTIATE_TEST_SUITE_P as new convention in googletest
68
69- gmock: update from 1.8.0 to 1.11.0
70
71- Cirrus-CI: fix debian arm build
72
73- Cirrus-CI: more updates for proper testing
74
75- install proper packages for asan and analyze
76
77- fix  crash in tests
78
79- try to disable container tests
80
81- need g++ for tests on debian
82
83- try cirrus-ci again
84
85- whitespace
86
87- start bringing up cirrus-ci
88
89- prep for adding new ci
90
91- fix cut and paste error
92
93GitHub (18 Oct 2021)
94- [Brad House brought this change]
95
96  RFC6761: special case "localhost" (#430)
97
98  As per RFC6761 Section 6.3, "localhost" lookups need to be special cased to return loopback addresses, and not forward queries to recursive dns servers.
99
100  We first look up via files (/etc/hosts or equivalent), and if that fails, we then attempt a system-specific address enumeration for loopback addresses (currently Windows-only), and finally fallback to ::1 and 127.0.0.1.
101
102  Fix By: Brad House (@bradh352)
103  Fixes Bug: #399
104
105- [Brad House brought this change]
106
107  Reimplement ares_gethostbyname() by wrapping ares_getaddrinfo() (#428)
108
109  ares_gethostbyname() and ares_getaddrinfo() do a lot of similar things, however ares_getaddrinfo() has some desirable behaviors that should be imported into ares_gethostbyname(). For one, it sorts the address lists for the most likely to succeed based on the current system routes. Next, when AF_UNSPEC is specified, it properly handles search lists instead of first searching all of AF_INET6 then AF_INET, since ares_gethostbyname() searches in parallel. Therefore, this PR should also resolve the issues attempted in #94.
110
111  A few things this PR does:
112
113  1. ares_parse_a_reply() and ares_parse_aaaa_reply() had very similar code to translate struct ares_addrinfo into a struct hostent as well as into struct ares_addrttl/ares_addr6ttl this has been split out into helper functions of ares__addrinfo2hostent() and ares__addrinfo2addrttl() to prevent this duplicative code.
114
115  2. ares_getaddrinfo() was apparently never honoring HOSTALIASES, and this was discovered once ares_gethostbyname() was turned into a wrapper, the affected test cases started failing.
116
117  3. A slight API modification to save the query hostname into struct ares_addrinfo as the last element of name. Since this is the last element, and all user-level instances of struct ares_addrinfo are allocated internally by c-ares, this is not an ABI-breaking change nor would it impact any API compatibility. This was needed since struct hostent has an h_name element.
118
119  4. Test Framework: MockServer tests via TCP would fail if more than 1 request was received at a time which is common when ares_getaddrinfo() queries for both A and AAAA records simultaneously. Infact, this was a long standing issue in which the ares_getaddrinfo() test were bypassing TCP alltogether. This has been corrected, the message is now processed in a loop.
120
121  5. Some tests had to be updated for overall correctness as they were invalid but somehow passing prior to this change.
122
123  Change By: Brad House (@bradh352)
124
125bradh352 (9 Oct 2021)
126- ares_getaddrinfo() missing sanity check to fix #426
127
128- ares_getaddrinfo(): continue to next domain in search if query returns ARES_ENODATA
129
130  Some DNS servers may behave badly and return a valid response with no data, in this
131  case, continue on to the next search domain, but cache the result.
132
133  Fixes Bug: #426
134  Fix By: Brad House (@bradh352)
135
136- Allow '/' as a valid character for a returned name
137
138  As of c-ares 1.17.2, a CNAME an in-addr.arpa delegation broke due
139  to not allowing '/'.  This needs to be allowed to not break valid
140  functionality.
141
142  Fixes Bug: #427
143  Reported By: Adrian (@leftshift)
144  Fix By: Brad House (@bradh352)
145
146Daniel Stenberg (5 Oct 2021)
147- libcares.pc.in: update the URL
148
149bradh352 (8 Sep 2021)
150- ares_expand_name should allow underscores (_) as SRV records legitimately use them
151
152  c-ares 1.17.2 introduced response validation to prevent a security issue, however
153  it did not have (_) listed as a valid character for domain name responses which
154  caused issues when a CNAME referenced a SRV record which contained underscores.
155
156  While RFC2181 section 11 does explicitly state not to do validation, that applies
157  to servers not clients.
158
159  Fixes: #424
160  Fix By: Brad House (@bradh352)
161
162Daniel Stenberg (7 Sep 2021)
163- domain: update to use c-ares.org
164
165  Closes #423
166
167- mailing list: moved to lists.haxx.se
168
169GitHub (3 Sep 2021)
170- [Biswapriyo Nath brought this change]
171
172  CMake: Fix build in cygwin (#422)
173
174  As cygwin environment has both socket.h and winsock2.h headers check WIN32 not to include the later one here
175
176  Fix By: Biswapriyo Nath (@Biswa96)
177
178bradh352 (23 Aug 2021)
179- make building more verbose
180
181- add appveyor cmake/mingw static-only build
182
183GitHub (17 Aug 2021)
184- [Sinan Kaya brought this change]
185
186  CMake: lower case advapi32 for cross-building with mingw (#420)
187
188  When cross compiling with yocto's meta-mingw layer, getting a dependency
189  error.
190
191  This is caused by the fact that advapi32 is lower case in mingw builds.
192
193  Fix By: Sinan Kaya <sinan.kaya@microsoft.com>
194
195bradh352 (17 Aug 2021)
196- autotools: add ax_check_gnu_make.m4
197
198- autotools: add ax_require_defined.m4
199
200- autotools: dont use newer AC_CHECK_INCLUDES_DEFAULT, don't quote AC_ERROR_MSG
201
202- import more files needed by newer ax_code_coverage.m4
203
204- import more files needed by newer ax_code_coverage.m4
205
206- work around autoreconf -fiv first call returning 'error: too many loops'
207
208- restore zz40-xc-ovr.m4
209
210- autotools: processed configure.ac through autoupdate
211
212- autotools. update ax_code_coverage.m4 to latest. don't use deprecated AC_HELP_STRING
213
214- pull out some old autotools cruft
215
216GitHub (17 Aug 2021)
217- [Felix Yan brought this change]
218
219  Provide ares_nameser.h as a public interface (#417)
220
221  NodeJS needs ares_nameser.h as a pubic header.
222
223  Fixes: #415
224  Fix By: Felix Yan (@felixonmars)
225
226- [Felix Yan brought this change]
227
228  Fix building when latest ax_code_coverage.m4 is imported (#418)
229
230  ax_code_coverage.m4 dropped the @CODE_COVERAGE_RULES@ macro, so we need to switch to the latest recommendation from the m4 file.  This requires updates to Makefile.am.
231
232  Fix By: Felix Yan (@felixonmars)
233
234bradh352 (12 Aug 2021)
235- bump version to match current release
236
237GitHub (12 Aug 2021)
238- [dhrumilrana brought this change]
239
240  z/OS minor update, add missing semicolon in ares_init.c (#414)
241
242  Build fix for z/OS
243
244  Fix by: Dhrumil Rana (@dhrumilrana)
245
246- [Daniel Bevenius brought this change]
247
248  add build to .gitignore (#410)
249
250  This commit adds the build directory to be ignored by git.
251
252  The motivation for adding this to .gitignore as opposed to
253  .git/info/exclude is that the CMake example in INSTALL.md uses build
254  as the name of the directory to be used by CMake. This will cause
255  git to report build as an untracked file.
256
257  Fix By: Daniel Bevenius (@danbev)
258
259- [Martin Holeš brought this change]
260
261  Add support for URI(Uniform Resource Identifier) records. (#411)
262
263  Add ares_parse_uri_reply() for parsing URI DNS replies.
264
265  Fix By: Martin Holeš (@martin-256)
266
267Daniel Stenberg (10 Aug 2021)
268- ares_getaddrinfo.3: available since 1.16.0
269
270- README.md: use https:// links
271
272Version 1.17.2 (24 Jul 2021)
273
274bradh352 (24 Jul 2021)
275- fix typo
276
277- prep for 1.17.2 release
278
279GitHub (30 Jun 2021)
280- [jeanpierrecartal brought this change]
281
282  Replace strdup() with ares_strdup() (#408)
283
284  strdup() is used in src/lib/ares_parse_a_reply.c and src/lib/ares_parse_aaaa_reply.c whereas allocated memory is freed using ares_free().
285
286  Bug: 407
287  Fix By: Jean-pierre Cartal (@jeanpierrecartal)
288
289- [Brad House brought this change]
290
291  Validate hostnames in DNS responses and discard from malicious servers (#406)
292
293  To prevent possible users having XSS issues due to intentionally malformed DNS replies, validate hostnames returned in responses and return EBADRESP if they are not valid.
294
295  It is not clear what legitimate issues this may cause at this point.
296
297  Bug Reported By: philipp.jeitner@sit.fraunhofer.de
298  Fix By: Brad House (@bradh352)
299
300bradh352 (11 Jun 2021)
301- ares_expand_name(): fix formatting and handling of root name response
302
303  Fixes issue introduced in prior commit with formatting and handling
304  of parsing a root name response which should not be escaped.
305
306  Fix By: Brad House
307
308- ares_expand_name() should escape more characters
309
310  RFC1035 5.1 specifies some reserved characters and escaping sequences
311  that are allowed to be specified.  Expand the list of reserved characters
312  and also escape non-printable characters using the \DDD format as
313  specified in the RFC.
314
315  Bug Reported By: philipp.jeitner@sit.fraunhofer.de
316  Fix By: Brad House (@bradh352)
317
318GitHub (15 Apr 2021)
319- [HALX99 brought this change]
320
321  Fix can't get dns server on macos and ios (#401)
322
323  If DNS configuration didn't include search domains on MacOS (or iOS) it would throw an error instead of ignoring.
324
325  Fix By: @halx99
326
327- [catalinh-bd brought this change]
328
329  Bugfix/crash in ares  sortaddrinfo (#400)
330
331  The bug was generated because there was no check for the number
332  of items in the list and invalid memory was accesed when the list
333  was empty. There is a check for null after calling malloc but on
334  some systems it always returns a valid address for size equals 0.
335  Relates To: #392, 0903dcecabca283d0fa771632892dc7592b7a66d
336
337  Fix By: @catalinh-bd
338
339bradh352 (2 Mar 2021)
340- Null deref if ares_getaddrinfo() is terminated with ares_destroy()
341
342  ares_freeaddrinfo() was not checking for a Null ptr during cleanup of
343  an aborted query.
344
345  Once that was resolved it uncovered another possible issue with
346  multiple simultaneous underlying queries being outstanding and
347  possibly prematurely cleaning up the handle.
348
349  Reported By: Michael Kourlas
350  Fix By: Brad House (@bradh352)
351
352GitHub (18 Feb 2021)
353- [Brad House brought this change]
354
355  CMake: RANDOM_FILE not defined #397
356
357  RANDOM_FILE was never defined by cmake, causing RC4 key generation to use the less secure rand() method.
358
359  Also, due to clashes with chain-building from other projects (e.g. curl) that may define RANDOM_FILE, this was renamed to CARES_RANDOM_FILE.
360
361  This is the proposed change for #396
362
363  Fix By: Brad House (@bradh352)
364
365- [Anton Danielsson brought this change]
366
367  CMake: fix Make install for iOS/MacOS (#395)
368
369  INSTALL TARGETS were missing the BUNDLE DESTINATION
370
371  Fix By: Anton Danielsson (@anton-danielsson)
372
373- [František Dvořák brought this change]
374
375  Fix build with autotools out of source tree (#394)
376
377  Add missing include directory, which fixes the build with autotools in separated build directory.
378
379  Fix By: František Dvořák (@valtri)
380
381bradh352 (15 Jan 2021)
382- fuzzing: HAVE_CONFIG_H may not be defined so cannot include ares_setup.h.  Its not needed even though we include ares_nameser.h
383
384- remove redundant header checks
385
386- properly detect netinet/tcp.h on openbsd
387
388- more portability updates
389
390- renamed nameser.h to ares_nameser.h requires Makefile.inc update for distributed files
391
392- more portability updates
393
394- remove bad files
395
396- portability updates for test cases
397
398- Portability Updates for arpa/nameser.h (#388)
399
400  There is too much inconsistency between platforms for arpa/nameser.h and arpa/nameser_compat.h for the way the current files are structured.  Still load the respective system files but make our private nameser.h more forgiving.
401
402  Fixes: #388
403  Fix By: Brad House (@bradh352)
404
405- ares_parse_ptr_reply() handle NULL for addr/addr_len. Fixes #392
406
407  NodeJS passes NULL for addr and 0 for addrlen parameters to ares_parse_ptr_reply().  On systems where malloc(0) returned NULL, this would cause the function to return ARES_ENOMEM, but the cleanup wasn't handled properly and would crash.
408
409  This patche fixes that bug, and also hardens ares_free_hostent() to not leak memory during cleanup.
410
411  Fixes: #392
412  Fix By: Brad House (@bradh352)
413
414- Define behavior of malloc(0)
415
416  Some systems may return either NULL or a valid pointer on malloc(0).  c-ares should never call malloc(0) so lets return NULL so we're more likely to find an issue if it were to occur.
417
418GitHub (24 Dec 2020)
419- [dhrumilrana brought this change]
420
421  z/OS: port (#390)
422
423  Port c-ares to z/OS.
424
425  Fix By: Dhrumil Rana (@dhrumilrana)
426
427- [vburdo brought this change]
428
429  Use unbuffered stdio for /dev/urandom to read only requested data (#391)
430
431  Buffered fread() reads 4096 bytes which is completely unnecessary and potentially may cause problems.
432  I discovered this on private linux configuration where custom /dev/urandom implementation has poor performance.
433
434  Fix By: @vburdo
435
436- [Jay Freeman (saurik) brought this change]
437
438  This relative header #include needs to use quotes. (#386)
439
440  Fix By: Jay Freeman (@saurik)
441
442bradh352 (23 Nov 2020)
443- Win32: Fix tools build with autotools static library
444  When c-ares is being built as static on Win32, CARES_STATICLIB must
445  be defined, but it wasn't being pulled in for the tools.
446
447  Fixes: #384
448  Fix By: Brad House (@bradh352)
449
450- Loosen requirements for static c-ares library when building tests
451
452  It appears that when building tests, it would hardcode enabling building
453  of the c-ares static library.  This was probably due to Windows limitations
454  in symbol visibility.
455
456  This change will use the static library if it exists for tests, always.
457  Otherwise, it will only forcibly enable static libraries for tests on
458  Windows.
459
460  Fixes: #380
461  Fix By: Brad House (@bradh352)
462
463- Remove legacy comment about ahost/acountry/adig targets
464
465- Distribute fuzzinput/fuzznames for fuzz tests
466
467  The fuzz test files were not being distributed.  This doesn't appear to be
468  a regression, it looks like they have never been distributed.
469
470  Fixes: #379
471  Fix By: Brad House (@bradh352)
472
473Version 1.17.1 (19 Nov 2020)
474
475GitHub (19 Nov 2020)
476- [Brad House brought this change]
477
478  Travis: add iOS target built with CMake (#378)
479
480  Issue #377 suggested that CMake builds for iOS with c-ares were broken. This PR adds an automatic Travis build for iOS CMake.
481
482  Fix By: Brad House (@bradh352)
483
484bradh352 (18 Nov 2020)
485- fix build
486
487GitHub (18 Nov 2020)
488- [Fabrice Fontaine brought this change]
489
490  External projects were using non-public header ares_dns.h, make public again (#376)
491
492  It appears some outside projects were relying on macros in ares_dns.h, even though it doesn't appear that header was ever meant to be public.  That said, we don't want to break external integrators so we should distribute this header again.
493
494  Fix By: Fabrice Fontaine (@ffontaine)
495
496bradh352 (17 Nov 2020)
497- note that so versioning has moved to configure.ac
498
499- note about 1.17.1
500
501- fix sed gone wrong
502
503GitHub (17 Nov 2020)
504- [Daniel Stenberg brought this change]
505
506  autotools cleanup (#372)
507
508  * remove: install-sh mkinstalldirs
509
510  They're generated when needed, no need to store in it.
511
512  * buildconf: remove custom logic with autoreconf
513
514  Fix By: Daniel Stenberg (@bagder)
515
516bradh352 (17 Nov 2020)
517- attempt to fix 1.17.0 release distribution issues
518
519Version 1.17.0 (16 Nov 2020)
520
521bradh352 (16 Nov 2020)
522- 1.17.0 release prep
523
524- ares_getaddrinfo(): duplicate hints ai_socktype and ai_protocol into output
525
526  ai_socktype and ai_protocol were ignored from the hints input.  They are now
527  duplicated into the output as expected.  Currently no sanity checks on
528  proper values are taking place.
529
530  Fixes: #317
531  Fix By: Brad House (@bradh352)
532
533- ares_parse_{a,aaaa}_reply could return larger *naddrttls than passed in
534
535  If there are more ttls returned than the maximum provided by the requestor, then
536  the *naddrttls response would be larger than the actual number of elements in
537  the addrttls array.
538
539  This bug could lead to invalid memory accesses in applications using c-ares.
540
541  This behavior appeared to break with PR #257
542
543  Fixes: #371
544  Reported By: Momtchil Momtchev (@mmomtchev)
545  Fix By: Brad House (@bradh352)
546
547GitHub (5 Nov 2020)
548- [Dustin Lundquist brought this change]
549
550  docs: ares_set_local_ip4() uses host byte order (#368)
551
552  Properly document brain-dead behavior of ares_set_local_ip4() using host byte order instead of expected network byte order.
553
554  Fix By: Dustin Lundquist <d.lundquist@tempered.io>
555
556- [Łukasz Marszał brought this change]
557
558  empty hquery->name could lead to invalid memory access (#367)
559
560  If hquery->name is empty (=="\0"), &hquery->name[strlen(hquery->name)-1] would point to "random" place in memory. This is causing some of my address sanitizer tests to fail.
561
562  Fix By: Łukasz Marszał (@lmarszal)
563
564bradh352 (28 Sep 2020)
565- Fix OSSFuzz reported issue in CAA reply parsing
566
567  OSS-Fuzz is reporting a use-of-uninitialized-value:
568  https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=26012
569
570  Reported By: David Drysdale (@daviddrysdale)
571
572GitHub (26 Sep 2020)
573- [David Hotham brought this change]
574
575  fuzz CAA parsing (#363)
576
577  Add fuzz support for CAA parsing
578
579  Fix By: David Hotham (@dimbleby)
580
581- [Daniela Sonnenschein brought this change]
582
583  Allow parsing of CAA Resource Record (#360)
584
585  CAA (Certification Authority Authorization) was introduced in RFC 6844.
586  This has been obsoleted by RFC 8659. This commit added the possibility
587  to query CAA resource records with adig and adds a parser for CAA
588  records, that can be used in conjunction with ares_query(3).
589
590  Closes Bug: #292
591  Fix By: Daniela Sonnenschein (@lxdicted)
592
593Daniel Stenberg (17 Sep 2020)
594- docs: remove the html and pdf make targets
595
596  They're rarely used in our daily work flow and mostly just add friction,
597
598  Closes #362
599
600bradh352 (14 Sep 2020)
601- ares_process needs to always include nameser.h as it has compat
602
603- Define T_OPT if system doesn't provide it
604
605GitHub (12 Sep 2020)
606- [Gisle Vanem brought this change]
607
608  Change the mailman links (#358)
609
610  Links when wrapping become misleading.  Insert newline to prevent wrapping.
611
612  Fix By: Gisle Vanem (@gvanem)
613
614- [Gisle Vanem brought this change]
615
616  [adig] Update man-page for the '-x' option (#357)
617
618  Fix By: Gisle Vanem (@gvanem)
619
620- [Gisle Vanem brought this change]
621
622  [adig] add '-x' option. (#356)
623
624  Added a 'dig-style' '-x' option. Also support '-xx' for a
625  IPv6 bit-string PTR query.
626
627  Fix By: Gisle Vanem (@gvanem)
628
629bradh352 (12 Sep 2020)
630- fix indentation
631
632- ns_t_opt -> T_OPT
633
634GitHub (12 Sep 2020)
635- [Gisle Vanem brought this change]
636
637  Fixes for Watt-32 on djgpp + Windows (#355)
638
639  No longer any relation to libcurl since '<libcurl-root>/packages/DOS/common.dj' is dropped.
640  This Makefile.dj has been tested on Win-10 only (using the Windows hosted djgpp cross compiler).
641
642  Fix By: Gisle Vanem (@gvanem)
643
644- [Gisle Vanem brought this change]
645
646  Fixes for Watt-32 on Windows and MSDOS (#354)
647
648  Move the prototype to 'ares_private.h'.
649
650  Fix By: Gisle Vanem (@gvanem)
651
652bradh352 (11 Sep 2020)
653- update path for include
654
655- remove stale information
656
657- remove stale information
658
659Brad House (9 Sep 2020)
660- silence compiler warnings
661
662- Remove stale msvc files from makefile
663
664GitHub (9 Sep 2020)
665- [Brad House brought this change]
666
667  Reorganize source tree (#349)
668
669  Originally started by Daniel Stenberg (@bagder) with #123, this patch reorganizes the c-ares source tree to have a more modern layout.  It also fixes out of tree builds for autotools, and automatically builds the tests if tests are enabled.  All tests are passing which tests each of the supported build systems (autotools, cmake, nmake, mingw gmake).  There may be some edge cases that will have to be caught later on for things I'm not aware of.
670
671  Fix By: Brad House (@bradh352)
672
673Brad House (1 Sep 2020)
674- remove CURLDEBUG as per #82
675
676GitHub (1 Sep 2020)
677- [Erik Lax brought this change]
678
679  Detect remote DNS server does not support EDNS as per RFC 6891 (#244)
680
681  EDNS retry should be based on FORMERR returned without an OPT RR record as per https://tools.ietf.org/html/rfc6891#section-7 rather than just treating any unexpected error condition as a reason to disable EDNS on the channel.
682
683  Fix By: Erik Lax (@eriklax)
684
685Brad House (27 Aug 2020)
686- Fix for #345, don't use 'true' use 1
687
688GitHub (27 Aug 2020)
689- [Seraphime Kirkovski brought this change]
690
691  ares_gethostbyname: Fix AF_UNSPEC support when using an ip address (#204)
692
693  fake_hostent() was not supporting AF_UNSPEC, so when an ip address was specified when using AF_UNSPEC it would attempt to do a DNS lookup rather than returning a fake hostent using the ip address.
694
695  Fix By: Seraphime Kirkovski (@Seraphime)
696
697- [apenn-msft brought this change]
698
699  Tests should use dynamic system-assigned ports rather than static port (#346)
700
701  The c-ares test suite was hardcoded to use port 5300 (and possibly 5301, 5302) for the test suite.  Especially in containers, there may be no guarantee these ports are available and cause tests to fail when they could otherwise succeed.  Instead, request the system to assign a port to use dynamically.  This is now the default.  To override, the test suite still takes the "-p <port>" option as it always has and will honor that.
702
703  Fix By: Anthony Penniston (@apenn-msft)
704
705Brad House (25 Aug 2020)
706- Unset members of the addr struct contain garbage values (#343)
707
708  When generating the ares_sockaddr data by getaddrinfo() it was only filling
709  in certain members while leaving others uninitialized.  This left garbage
710  data if a user tried to use the unset values.  memset() the ares_sockaddr
711  to 0 prior to filling in the values to prevent this.
712
713  Reported By: @SmorkalovG
714  Fix By: Brad House (@bradh352)
715
716GitHub (24 Aug 2020)
717- [Jonathan Maye-Hobbs brought this change]
718
719  FQDN with trailing period should be queried first with larger ndot value (#345)
720
721  If a query is performed for dynamodb.us-east-1.amazonaws.com. with ndots=5, it was attempting to search the search domains rather than just attempting the FQDN that was passed it.  This patch now at least attempts the FQDN first.
722
723  We may need to determine if we should abort any further searching, however as is probably intended.
724
725  Fix by: Jonathan Maye-Hobbs (@wheelpharoah)
726
727- [Gisle Vanem brought this change]
728
729  Update acountry.c country code list (#341)
730
731  Updated country_list[]:
732   * 2-letter ISO-3166 country-codes.
733   * Add, rename some names + codes in accordance with latest table at https://en.wikipedia.org/wiki/ISO_3166-1.
734
735  Fix By: Gisle Vanem (@gvanem)
736
737- [Bulat Gaifullin brought this change]
738
739  Test case should honor flag HAVE_WRITEV rather than WIN32 (#344)
740
741  Test cases where not honoring the HAVE_WRITEV flag but instead using WIN32 to determine if WRITEV was available or not.  This patch fixes that.
742
743  Fix By: Bulat Gaifullin (@bgaifullin)
744
745Brad House (18 Jul 2020)
746- Ensure c89 support
747
748  A couple of for loops in Mac-specific code were using integer declarations
749  inside a for loop.  Move the declaration to the top of the preceding
750  code block to retain c89 compliance.
751
752  Reported By: Jeffrey Walton
753
754GitHub (2 Jul 2020)
755- [Fionn Fitzmaurice brought this change]
756
757  Avoid buffer overflow in RC4 loop comparison (#336)
758
759  The rc4 function iterates over a buffer of size buffer_len who's maximum
760  value is INT_MAX with a counter of type short that is not guaranteed to
761  have maximum size INT_MAX.
762
763  In circumstances where short is narrower than int and where buffer_len
764  is larger than the maximum value of a short, it may be possible to loop
765  infinitely as counter will overflow and never be greater than or equal
766  to buffer_len.
767
768  The solution is to make the comparison be between types of equal width.
769  This commit defines counter as an int.
770
771  Fix By: Fionn Fitzmaurice (@fionn)
772
773- [anonymoushelpishere brought this change]
774
775  Updated help information for adig, acountry, and ahost. (#334)
776
777  Provide more descriptive help information for various utilities.
778
779  Fix By: @anonymoushelpishere
780
781- [lutianxiong brought this change]
782
783  avoid read-heap-buffer-overflow (#332)
784
785  Fix invalid read in ares_parse_soa_reply.c found during fuzzing
786
787  Fixes Bug: #333
788  Fix By: lutianxiong (@ltx2018)
789
790- [Ivan Baidakou brought this change]
791
792  Fix: sizeof(sizeof(addr.saX)) -> sizeof(addr.saX) in readaddrinfo (#331)
793
794  Looks like a sed-gone-wrong, a sizeof inside of a sizeof.
795
796  Fix By: Ivan Baidakou (@basiliscos)
797
798Version 1.16.1 (11 May 2020)
799
800Brad House (11 May 2020)
801- c-ares 1.16.1 release prep
802
803- update travis to use xcode11.4
804
805- Prevent possible double-free in ares_getaddrinfo() if ares_destroy() is called
806
807  In the event that ares_destroy() is called prior to ares_getaddrinfo() completing,
808  it would result in an invalid read and double-free due to calling end_hquery() twice.
809
810  Reported By: Jann Horn @ Google Project Zero
811
812GitHub (30 Apr 2020)
813- [shelley vohr brought this change]
814
815  fix: windows UNICODE incompatibilities with ares_getaddrinfo (#328)
816
817  Fixes the following compatibility issues:
818  * Use RegQueryValueExA instead of RegQueryValueEx
819  * Use ExpandEnvironmentStringsA instead of ExpandEnvironmentStrings
820  * Use RegOpenKeyExA instead of RegOpenKeyExA
821  * Use GetWindowsDirectoryA instead of GetWindowsDirectoryA
822
823  Fix By: Shelley Vohr (@codebytere)
824  Closes: #327
825
826Brad House (13 Apr 2020)
827- travis: CloudFlare does not allow T_ANY requests, so live tests that use it fail.  Disable.
828
829- travis: bump macos image to the latest
830
831- cast-align warnings are false for struct sockaddr, silence
832
833  Create a macro to silence false cast-align warnings when casting
834  struct sockaddr * to struct sockaddr_in * and struct sockaddr_in6 *.
835
836  Fix By: Brad House (@bradh352)
837
838- MacOS: Enable libresolv support for retrieving DNS servers like iOS does.
839
840GitHub (10 Apr 2020)
841- [Dmitry Igrishin brought this change]
842
843  CMake: Populate the INCLUDE_DIRECTORIES property of installed targets (#323)
844
845  Populate the INCLUDE_DIRECTORIES property of installed targets
846
847  Fix By: Dmitry Igrishin (@dmitigr)
848
849Brad House (10 Apr 2020)
850- travis: make valgrind use cmake for tests
851
852- dont try to use libtool to run valgrind
853
854- valgrind requires libtool installed to wrap tests
855
856- scan build 7
857
858- fix travis live test
859
860- add debug for travis
861
862- try without sudo
863
864- attempt to modernize travis build environment
865
866GitHub (6 Apr 2020)
867- [Teemu R brought this change]
868
869  Allow TXT records on CHAOS qclass (#321)
870
871  Some DNS servers intentionally "misuse" the obsoleted CHAOS (CH) qclass to provide things like `version.bind`, `version.server`, `authors.bind`, `hostname.bind` and `id.server`.
872
873  C-ares was not allowing such use cases.
874
875  Fix By: Teemu R. (@rytilahti)
876
877Brad House (5 Apr 2020)
878- Remove warnings from ares_getaddrinfo.3 man page
879
880  As reported in #319, non-standard macros of .IN were used.
881  Replace with .RS/.RE.
882
883  Fixes: #319
884  Fix By: Brad House (@bradh352)
885
886- ares_getaddrinfo man page render better for man2html
887
888- update man pages to render better for man2html
889
890Version 1.16.0 (12 Mar 2020)
891
892Brad House (12 Mar 2020)
893- 1.16.0 release notes draft
894
895- attempt to fix double-free introduced in e0517f9
896
897GitHub (12 Mar 2020)
898- [David Drysdale brought this change]
899
900  test: fuzzer input triggering double free (#315)
901
902  OSS-Fuzz has reported a double-free with the fuzzer input file
903  included here; run with:
904    ./test/aresfuzz test/fuzzinput/clusterfuzz-5637790584012800
905
906  Bisecting the failure points to commit e0517f97d988 ("Parse SOA records
907  from ns_t_any response (#103)")
908
909- [Brad House brought this change]
910
911  CMake: Install Manpages (#314)
912
913  CMake wasn't installing manpages.
914
915  Fixes #297
916  Fix By: Brad House (@bradh352)
917
918- [Brad House brought this change]
919
920  Enable cmake tests for AppVeyor (#313)
921
922  Tests require linking against the static library on Windows otherwise the symbols are not exported for internals being tested.
923
924  Fix By: Brad House (@bradh352)
925
926Brad House (11 Mar 2020)
927- Add AppVeyor badge
928
929- bump c-ares version to 1.16.0. test AppVeyor integration.
930
931GitHub (11 Mar 2020)
932- [Brad House brought this change]
933
934  replace all usages of inet_addr() with ares_inet_pton() which is more proper (#312)
935
936  Replace usage of inet_addr() with ares_inet_pton() which is more appropriate and fixes issues with legitimate addresses like 255.255.255.0. IPv6 already used this.
937
938  Fixes #309
939  Fix By: Brad House (@bradh352)
940
941- [Brad House brought this change]
942
943  CMake: Generate WinPDB files during build (#311)
944
945  Build and Install PDB (Windows Debug Symbol) files if supported by underlying system.
946
947  Also update AppVeyor to test cmake builds.
948
949  Fixes #245
950  Fix By: Piotr Pietraszkiewicz (@ppietrasa) and Brad House (@bradh352)
951
952- [Brad House brought this change]
953
954  CMake: Rework library function checking (#310)
955
956  CHECK_LIBRARY_EXISTS(), while it takes a function name, does not actually verify the function exists in the library being evaluated. Instead, if the function is found in any dependent library, and the referenced library also exists, it returns true. This is not desirable.
957
958  Wrap with a Macro to change the behavior.
959
960  Fixes: #307
961  Fix By: Brad House (@bradh352)
962
963- [Dron Rathore brought this change]
964
965  Parse SOA records from ns_t_any response (#103)
966
967  Added the capability of parsing SOA record from a response buffer of ns_t_any type query, this implementation doesn't interfere with existing T_SOA query's response as that too is treated as a list of records. The function returns ARES_EBADRESP if no SOA record is found(as per RFC).
968
969  The basic idea of sticking to RFC that a ns_t_any too should return an SOA record is something open for discussion but I have kept the functionality intact as it was previously i.e the function returns ARES_EBADRESP if it doesn't find a SOA record regardless of which response it is parsing i.e. T_SOA or T_ANY.
970
971  Note that asking for T_ANY is generally a bad idea:
972  - https://blog.cloudflare.com/what-happened-next-the-deprecation-of-any/
973  - https://tools.ietf.org/html/draft-ietf-dnsop-refuse-any
974
975  Bug: #102
976  Fix By: Dron Rathore (@DronRathore)
977
978- [Stephen Bryant brought this change]
979
980  Added CPack functionality for generating RPM or DEB packages (#283)
981
982  Added CPack functionality for generating RPM or DEB packages
983
984  ie: run `cpack -G RPM` (or "DEB") after building with CMake.
985
986  The current configuration creates 3 separate packages for the shared library,
987  the development files and the tools.
988
989  Fix By: Stephen Bryant (@bf-bryants)
990
991- [tjwalton brought this change]
992
993  ares_gethostbyname: Return ENODATA if no valid A or AAAA record found (#304)
994
995  ares_gethostbyname() was returning ESUCCESS when no A or AAAA record was found but a CNAME pointing nowhere was present.  ENODATA should be returned instead, however the hosts pointer will still be present to provide the alias list.
996
997  * Return ENODATA if no valid A or AAAA record found
998  * Fix and update test ParseAReplyNoData.
999  * Add test for new ENODATA behaviour in ares_gethostbyname.
1000
1001  Fixes Bug #303
1002  Fix By: @tjwalton
1003
1004- [Michal Rostecki brought this change]
1005
1006  test: Separate live tests from SetServers* tests (#299)
1007
1008  Before this change, SetServers, SetServersPorts and SetServersCSV
1009  contained test cases trying to make DNS queries with the google.com
1010  hostname, which requires Internet connectivity. Tests with that
1011  requirement should be defined in the ares-test-live.cc file and contain
1012  "Live" prefix to filter them out with `--gtest_filter=-*.Live*` on
1013  machines without Internet connectivity.
1014
1015  Fix By: Michal Rostecki (@mrostecki)
1016
1017- [Adam Majer brought this change]
1018
1019  Only count valid addresses when response parsing (#302)
1020
1021  When ares_parse_a_reply or ares_parse_aaaa_reply is called in case
1022  where another AAAA and A responses exist, the resulting ares_addrttl
1023  count is invalid and the structure points to gibberish.
1024
1025  This is a regression since 1.15.
1026
1027  Issue: https://github.com/c-ares/c-ares/issues/300
1028  Fix By: Adam Majer (@AdamMajer)
1029
1030Brad House (24 Dec 2019)
1031- [Kyle Edwards brought this change]
1032
1033  CMake: Provide c-ares version in package export file (#296)
1034
1035  The CMake package export file should provide version information.
1036
1037  Fix By: Kyle Edwards (@KyleFromKitware)
1038
1039- [Ben Noordhuis brought this change]
1040
1041  Accept invalid /etc/resolv.conf lookup values, ability to build container tests (#274)
1042
1043  * Add CARES_BUILD_CONTAINER_TESTS CMake option to add ability to build the Linux-only containerized tests.
1044  * Accept invalid /etc/resolv.conf lookup values
1045
1046  Before this commit invalid `lookup` values resulted in c-ares not using
1047  any lookups without any clear indication why. After this commit it uses
1048  the default "fb".
1049
1050  Fix By: Ben Noordhuis (@bnoordhuis)
1051
1052- [Christian Ammer brought this change]
1053
1054  Parallel A and AAAA lookups in `ares_getaddrinfo` (#290)
1055
1056  A and AAAA lookups for ares_getaddrinfo() are now performed in parallel.
1057
1058  For this change `ares_search` was removed from `ares_getaddrinfo`.
1059  Instead `ares_query` in combination with `next_dns_lookup` are
1060  doing the suffix search.
1061
1062  Adding support for `.onion` addresses which are tested by
1063  `TEST_F(DefaultChannelTest, GetAddrinfoOnionDomain)`
1064
1065  Fix By: Christian Ammer (@ChristianAmmer)
1066
1067- [Vy Nguyen brought this change]
1068
1069  Move variables into the block where it is used to avoid unused-vars (#281)
1070
1071  Warning uncovered with [-Werror, -Wunused-variables]
1072
1073  Fix By: Vy Nguyen (@oontvoo)
1074
1075- [Vy Nguyen brought this change]
1076
1077  Rename local macros to avoid conflicting with system ones and remove unsed variables. (Otherwise code will break once compiled with [-Werror,-Wmacro-redefined,-Wunused-variable] ) (#280)
1078
1079  Fix new getaddrinfo code to not redefine macros on some systems.
1080
1081  Fix By: Vy Nguyen (@oontvoo)
1082
1083- [Egor Pugin brought this change]
1084
1085  [ares_getenv] Return NULL in all cases. (#279)
1086
1087  if ares_getenv is defined, it must return a value on all platforms.
1088
1089  Fix By: Egor Pugin (@egorpugin)
1090
1091- [Abhishek Arya brought this change]
1092
1093  Add OSS-Fuzz fuzzing badge (#278)
1094
1095  Adds based on instructions at
1096  https://google.github.io/oss-fuzz/getting-started/new-project-guide/#status-badge
1097
1098  Patch By: Abhishek Arya (@inferno-chromium)
1099
1100- [Peter Eisentraut brought this change]
1101
1102  ares_init_options.3: Fix layout (#275)
1103
1104  7e6af8e inserted the documentation of resolvconf_path in the middle of
1105  the item for ednspsz, leading to broken layout.  Fix that.
1106
1107  Fix By: Peter Eisentraut (@petere)
1108
1109- [Gregor Jasny brought this change]
1110
1111  manpages: Fix typos detected by lintian (#269)
1112
1113
1114  Fix By: Gregor Jasny (@gjasny)
1115
1116- [lifenjoiner brought this change]
1117
1118  keep command line usage up to date (#256)
1119
1120  adig and ahost built-in help did not match args taken.
1121
1122  Fix-By: @lifenjoiner
1123
1124- [Dan Noé brought this change]
1125
1126  ares-test.cc: Handle nullptr in AddrInfo ostream. (#268)
1127
1128  The const AddrInfo& argument to operator<< overload for AddrInfo can be
1129  a nullptr unique_ptr. Handle this explicitly by printing {nullptr} if
1130  the rest of the function cannot be safely executed.
1131
1132  Fix-by: Dan Noé <dpn@google.com>
1133
1134- [Dan Noé brought this change]
1135
1136  Add missing limits.h include from ares_getaddrinfo.c (#267)
1137
1138  This files references INT_MAX, but does not include limits.h. This can
1139  cause a build failure on some platforms. Include limits.h if we have it.
1140
1141  Fix-by: Dan Noé <dpn@google.com>
1142
1143- [Andrew Selivanov brought this change]
1144
1145  fix fuzzer docs and add missing getaddrinfo docs (#265)
1146
1147  There is a fix for a bit outdated clang fuzzer docs and ares_getaddrinfo docs.
1148
1149  Fix By: Andrew Selivanov (@ki11roy)
1150
1151- [Andrew Selivanov brought this change]
1152
1153  Fix leak and crash in ares_parse_a/aaaa_reply (#264)
1154
1155  * fix leak if naddress of particular type found
1156  * fix segfault when wanted ttls count lesser than count of result records
1157  * add fuzzer input files that trigger problems (from #263)
1158
1159  Reported-By: David Drysdale (@daviddrysdale)
1160  Fix-By: Andrew Selivanov (@ki11roy)
1161
1162- [Andrew Selivanov brought this change]
1163
1164  fix segfault when parsing wrong type of record (#262)
1165
1166  Fixes segfault when trying to ares_parse_aaaa with AF_INET and vise versa.
1167
1168  Fix By: Andrew Selivanov (@ki11roy)
1169
1170- work around mingw compile failure
1171
1172- c++ requires explicit casts
1173
1174- support EnvValue on Windows by implementing setenv/unsetenv
1175
1176- [Andrew Selivanov brought this change]
1177
1178  getaddrinfo enhancements (#257)
1179
1180  * Service support has been added to getaddrinfo.
1181  * ares_parse_a/aaaa_record now share code with the addrinfo parser.
1182  * Private ares_addrinfo structure with useful extensions such as ttls (including cname ttls),
1183    as well as the ability to list multiple cnames in chain of lookups
1184
1185  Work By: Andrew Selivanov @ki11roy
1186
1187- [Andrew Selivanov brought this change]
1188
1189  fix ares__sortaddrinfo, use wrappers for sock_funcs (#258)
1190
1191  Some socket functions weren't exposed for use by other areas of the library.  Expose
1192  those and make use of them in ares__sortaddrinfo().
1193
1194  Fix By: Andrew Selivanov (@ki11roy)
1195
1196- Fix c89 compilation support broken by .onion rejection changes
1197
1198  Move .onion check lower after all variables have been declared.
1199
1200  Bug: #246
1201
1202- [kedixa brought this change]
1203
1204  getaddrinfo: callback must be called on bad domain (#249)
1205
1206  Due to an order of incrementing the remaining queries and calling ares_query, on a bad domain
1207  the registered callback wouldn't be called.
1208
1209  Bug: #248
1210  Fixed-By: @kedixa
1211
1212- [Darrin W. Cullop brought this change]
1213
1214  Windows ARM/ARM64 requires AdvApi32 (#252)
1215
1216  Fix link issues caused by missing library that appears to only be required on ARM (though
1217  docs don't list this restriction). Doesn't hurt to require it everywhere.
1218
1219  Bug: #251
1220  Fixed-By: Darrin Cullop (@dwcullop)
1221
1222- [kedixa brought this change]
1223
1224  getaddrinfo: avoid infinite loop in case of NXDOMAIN(#240) (#242)
1225
1226  There are two possible causes for infinite loops fo NXDOMAIN, based on how many dots are in the domain name (one for < ARES_OPT_NDOTS and one for >= ARES_OPT_NDOTS), where it will repeat the same query over and over as the hquery->next_domain doesn't increment.
1227
1228  Fix By: @kedixa
1229
1230- Portability fix for ares__sortaddrinfo()
1231
1232  replace uint32_t with unsigned int and socklen_t with ares_socklen_t
1233
1234  By: Brad House
1235
1236- [Khaidi Chu brought this change]
1237
1238  fix: init bufp before reject .onion to make it can be free correctly (#241)
1239
1240  When querying a .onion domain, it returns directly without setting bufp to NULL. A subsequent free() that occurs can cause a segmentation fault.
1241
1242  Fix By: Khaidi Chu (@XadillaX)
1243
1244- [Andrew Selivanov brought this change]
1245
1246  Add ares__sortaddrinfo() to support getaddrinfo() sorted results (#239)
1247
1248  This is a port of RFC 6724 compliant sorting function from Android Bionic project:
1249  https://android.googlesource.com/platform/bionic/+/e919b116d35aa7deb24ddece69c491e24c3b0d6f/libc/netbsd/net/getaddrinfo.c
1250
1251  The latest version is essentially the same, except two additional parameters to test connection with (mark/uid):
1252  https://android.googlesource.com/platform/bionic/+/master/libc/dns/net/getaddrinfo.c
1253
1254  Please note that even that version has some restrictions. It doesn't support some rules from RFC 6724:
1255
1256  Rule 3 (Avoid deprecated addresses)
1257  Rule 4 (Prefer home addresses)
1258  Rule 7 (Prefer native transport)
1259
1260  Submitted By: Andrew Selivanov (@ki11roy)
1261
1262- [Christian Ammer brought this change]
1263
1264  Increase portability of `ares-test-mock-ai.cc` (#235)
1265
1266  * using portable ares_inet_pton and updated includes in ares-test-mock-ai
1267  * forgot to remove deleted ares-test-ai.cc in Makefile.inc
1268
1269  Fix By: Christian Ammer (@ChristianAmmer)
1270
1271- [Fabrice Fontaine brought this change]
1272
1273  m4/xc-cc-check.m4: use XC_CHECK_BUILD_FLAGS (#236)
1274
1275  Use XC_CHECK_BUILD_FLAGS instead of XC_CHECK_USER_FLAGS.
1276  Otherwise it complains of CPPFLAGS in CFLAGS.
1277  [Retrieved from:
1278  https://git.buildroot.net/buildroot/tree/package/c-ares/0001-use_check_build_instead_of_check_user.patch]
1279
1280  Signed-off-by: Gustavo Zacarias <gustavo@zacarias.com.ar>
1281  Signed-off-by: Fabrice Fontaine <fontaine.fabrice@gmail.com>
1282  Submitted by: Fabrice Fontaine
1283
1284- [Christian Ammer brought this change]
1285
1286  Bugfix for `ares_getaddrinfo` and additional unit tests (#234)
1287
1288  This PullRequest fixes a bug in the function add_to_addrinfo which task is to add new addrinfo items to the ai_next linked list. Also additional unit tests for testing ares_getaddrinfo will be added:
1289
1290  Additional mock server test classes (ares-test-mock-ai.cc):
1291  MockTCPChannelTestAI
1292  MockExtraOptsTestAI
1293  MockNoCheckRespChannelTestAI
1294  MockEDNSChannelTestAI
1295  RotateMultiMockTestAI
1296  NoRotateMultiMockTestAI
1297
1298  Additional live tests (ares-test-live-ai.cc):
1299  LiveGetHostByNameV4
1300  LiveGetHostByNameV6
1301  LiveGetHostByNameV4AndV6
1302
1303  Fix By: Christian Ammer (@ChristianAmmer)
1304
1305- [Christian Ammer brought this change]
1306
1307  Remaining queries counter fix, additional unit tests for `ares_getaddrinfo` (#233)
1308
1309  Remaining queries counter fix, added tests (ParallelLookups,
1310  SearchDomains, SearchDomainsServFailOnAAAA).  Removed unnecessary
1311  if and commented code in test.
1312
1313  Fix By: Christian Ammer (@ChristianAmmer)
1314
1315- [Christian Ammer brought this change]
1316
1317  Add initial implementation for ares_getaddrinfo (#112)
1318
1319  Initial implementation for ares_getaddrinfo().  It is NOT compliant with RFC6724, though
1320  it is expected to come closer to conformance prior to the next release.
1321
1322  Features not supported include sorted addresses and honoring of service and hints
1323  parameters.
1324
1325  Implementation by: Christian Ammer (@ChristianAmmer)
1326
1327- [Ben Noordhuis brought this change]
1328
1329  test: fix bad expectation in ipv6 localhost test (#227)
1330
1331  The LiveGetLocalhostByAddrV6 test expected to see "localhost" in the
1332  result when doing an address-to-name lookup for ::1 but on my system
1333  that resolves to "ip6-loopback" because of this stanza in /etc/hosts:
1334
1335      $ grep ^::1 /etc/hosts
1336      ::1     ip6-localhost ip6-loopback
1337
1338  Fix By: Ben Noordhuis (@bnoordhuis)
1339  Bug: #85
1340
1341- [Ben Noordhuis brought this change]
1342
1343  ares_version.h: bump version (#230)
1344
1345  Version change not committed from maketgz.sh
1346
1347  Bug: #229
1348
1349Daniel Stenberg (24 Oct 2018)
1350- ares_library_init_android.3: minor syntax edits, fixed AVAILABILITY
1351
1352Version 1.15.0 (23 Oct 2018)
1353
1354Brad House (23 Oct 2018)
1355- last minute 1.15.0 addition
1356
1357- [Ben Noordhuis brought this change]
1358
1359  Report ARES_ENOTFOUND for .onion domain names as per RFC7686. (#228)
1360
1361  Quoting RFC 7686:
1362
1363      Name Resolution APIs and Libraries (...) MUST either respond
1364      to requests for .onion names by resolving them according to
1365      [tor-rendezvous] or by responding with NXDOMAIN.
1366
1367      A legacy client may inadvertently attempt to resolve a .onion
1368      name through the DNS. This causes a disclosure that the client
1369      is attempting to use Tor to reach a specific service. Malicious
1370      resolvers could be engineered to capture and record such leaks,
1371      which might have very adverse consequences for the well-being
1372      of the user.
1373
1374  Bug: #196
1375  Fix By: Ben Noordhuis @bnoordhuis
1376
1377- prepare for c-ares 1.15.0 release
1378
1379- AIX Build Fix
1380
1381  AIX attempts to include both nameser_compat.h and onameser_compat.h.  It appears
1382  the proper fix is to define _USE_IRS so that only nameser_compat.h is used.
1383
1384  Bug: #224
1385  Fix By: Brad House (@bradh352)
1386
1387- Fix crash in ares_dup() due to new ARES_OPT_RESOLVCONF
1388
1389  ares_dup() calls ares_init_options() by making its own fake option
1390  mask since the original mask isn't stored but ARES_OPT_RESOLVCONF
1391  was always set, instead of conditionally set.  This caused a crash
1392  because ares_strdup() isn't NULL-safe if no custom path was set.
1393
1394  Made ares_dup() set ARES_OPT_RESOLVCONF conditionally.
1395
1396  Fix By: Brad House (@bradh352)
1397
1398- [Sarat Addepalli brought this change]
1399
1400  Add ares_init_options() configurability for path to resolv.conf file
1401
1402  Add resolvconf_path to end of struct ares_options with ARES_OPT_RESOLVCONF option
1403  so on Unix-like systems a custom path can be specified.  If no path is specified,
1404  /etc/resolv.conf is used like normal.
1405
1406  Fix By: Sarat Addepalli @SirR4T
1407  Fixes Bug: #220
1408  Review By: Brad House @bradh352
1409
1410- remove stale variables
1411
1412- fix prototype name for ares_strsplit_free()
1413
1414- add missing prototype
1415
1416- simplify ares_strsplit() and create ares_strsplit_free() helper function
1417
1418- missing ares_strsplit.h from HHEADERS for inclusion in distribution
1419
1420- [Ruslan Baratov brought this change]
1421
1422  Add CARES_BUILD_TOOLS CMake option (#214)
1423
1424  Add ability to exclude building of tools (adig, ahost, acountry) in CMake.  This should also close #200.
1425
1426  Fix By: Ruslan Baratov (@ruslo)
1427  Bug: #200
1428
1429- [flyingdutchman23 brought this change]
1430
1431  Style. Whitespace cleanup. (#213)
1432
1433  Small whitespace cleanups.
1434
1435  Fix By: @flyingdutchman23
1436
1437- [John Schember brought this change]
1438
1439  Android: Support for domain search suffix (#211)
1440
1441  Fixes issue #207. Uses LinkProperties.getDomains() to get a list of search domains and adds them to the suffix list.  This also adds a new helper function to split strings into an array based on multiple delimiters replacing multiple other functions for dealing with string splitting.
1442
1443  Submitter: John Schember (@user-none)
1444  Fixes: #207
1445  Approved-by: Brad House (@bradh352)
1446
1447- [afalin brought this change]
1448
1449  Improve DNS suffixes extracting from WinNT registry (#202)
1450
1451  Join all global and connection specific suffix lists. Use 'HKLM\Software\Policies\Microsoft\Windows NT\DNSClient\SearchList', 'HKLM\System\CurrentControlSet\Services\Tcpip\Parameters\Domain' as global suffix lists.
1452
1453  Fix By: @afalin
1454
1455- Be consistent with indention in CMakeLists.txt
1456
1457  The imported TRANSFORM_MAKEFILE_INC function from curl used space indention
1458  but the rest of the file used tabs.  Go ahead and make it tabs for
1459  consistency as well.
1460
1461  Committed By: Brad House
1462
1463- [flyingdutchman23 brought this change]
1464
1465  Fix modern gcc warning: argument to 'sizeof' in 'strncpy' call is the same expression as the source
1466
1467  Silence warning about using src to determine number of bytes to copy.
1468  In this case it doesn't matter whether it is `src` or `dest`. So there
1469  is no functionality change.
1470
1471  Bug: #210
1472  Fix By: @flyingdutchman23
1473
1474- [Andi Schnebinger brought this change]
1475
1476  fix stringop-overflow warning of GCC (#201)
1477
1478  When using a modern GCC to compile c-ares, there is a stringop-overflow warning.
1479  This patch simply silences the false-positive warning, there is no actual code flaw.
1480
1481  Bug: https://github.com/c-ares/c-ares/pull/201
1482  Fixed By: Andi Schnebinger @Iniesta8
1483
1484GitHub (18 May 2018)
1485- [David Drysdale brought this change]
1486
1487  travis: do coverage in "coverage" build (#195)
1488
1489  Fixes #194, a mistake from commit a255081f2c3c ("travis: Only do
1490  coverage/distcheck on normal build")
1491
1492Brad House (17 May 2018)
1493- [Brad Spencer brought this change]
1494
1495  Apply the IPv6 server blacklist to all nameserver sources, not just Windows (#193)
1496
1497  For #164, I mentioned that it seemed like the IPv6 nameserver blacklist should apply to all OSes. In a mailing list post, @bradh352 agreed and suggested that I file a PR to make it so.
1498
1499  This moves the blacklist check from being Windows-specific to being a general feature of config_nameservers(), no matter the nameserver source. It also simplifies the ares_ipv6_server_blacklisted() implementation to not parse and re-parse the blacklisted IPv6 addresses from strings on every check. I think they're almost as easy to read as a sequence of hex bytes in an array initializer, and it's definitely less work on each trip through the code.
1500
1501  Fix By: Brad Spencer @b-spencer
1502  PR: https://github.com/c-ares/c-ares/pull/193
1503
1504- [Brad Spencer brought this change]
1505
1506  Fix warnings emitted by MSVC when using -W4 (#192)
1507
1508  These changes fix a few warnings emitted by recent versions of MSVC when compiling with -W4. Half of the changes are in Windows-specific code, and the other half should be safe no matter the compiler or OS.
1509
1510  The allocation function change is probably the only one that needs explanation. MSVC gives warnings about the function pointers not being stable across DLL boundaries or something to that effect, so for Windows, I've made them be called indirectly, which at least made the compiler happy. I can't say I've tested every linking combination on Windows with them before or after the change, but it seems harmless.
1511
1512  Fix By: Brad Spencer @b-spencer
1513  PR: https://github.com/c-ares/c-ares/pull/192
1514
1515- [David Hotham brought this change]
1516
1517  Prevent changing name servers while queries are outstanding (#191)
1518
1519  Changing name servers doesn't work, per #41.  Better to return an error code than to crash.
1520
1521  Fix-by: David Hotham @dimbleby
1522
1523David Drysdale (15 May 2018)
1524- [Tobias Nießen brought this change]
1525
1526  Fix comment in ares_rules.h (#189)
1527
1528Brad House (6 May 2018)
1529- [Brad Spencer brought this change]
1530
1531  Harden and rationalize c-ares timeout computation (#187)
1532
1533  * Harden and rationalize c-ares timeout computation
1534  * Remove the rand() part of the timeout calculation completely.
1535
1536  When c-ares sends a DNS query, it computes the timeout for that request as follows:
1537
1538  timeplus = channel->timeout << (query->try_count / channel->nservers);
1539  timeplus = (timeplus * (9 + (rand () & 7))) / 16;
1540  I see two issues with this code. Firstly, when either try_count or channel->timeout are large enough, this can end up as an illegal shift.
1541
1542  Secondly, the algorithm for adding the random timeout (added in 2009) is surprising. The original commit that introduced this algorithm says it was done to avoid a "packet storm". But, the algorithm appears to only reduce the timeout by an amount proportional to the scaled timeout's magnitude. It isn't clear to me that, for example, cutting a 30 second timeout almost in half to roughly 17 seconds is appropriate. Even with the default timeout of 5000 ms, this algorithm computes values between 2812 ms and 5000 ms, which is enough to cause a slightly latent DNS response to get spuriously dropped.
1543
1544  If preventing the timers from all expiring at the same time really is desirable, then it seems better to extend the timeout by a small factor so that the application gets at least the timeout it asked for, and maybe a little more. In my experience, this is common practice for timeouts: applications expect that a timeout will happen at or after the designated time (but not before), allowing for delay in detecting and reporting the timeout. Furthermore, it seems like the timeout shouldn't be extended by very much (we don't want a 30 second timeout changing into a 45 second timeout, either).
1545
1546  Consider also the documentation of channel->timeout in ares_init_options():
1547
1548  The number of milliseconds each name server is given to respond to a query on the first try. (After the first try, the timeout algorithm becomes more complicated, but scales linearly with the value of timeout.) The default is five seconds.
1549
1550  In the current implementation, even the first try does not use the value that the user supplies; it will use anywhere between 56% and 100% of that value.
1551
1552  The attached patch attempts to address all of these concerns without trying to make the algorithm much more sophisticated. After performing a safe shift, this patch simply adds a small random timeout to the computed value of between 0 ms and 511 ms. I could see limiting the random amount to be no greater than a proportion of the configured magnitude, but I can't see scaling the random with the overall computed timeout. As far as I understand, the goal is just to schedule retries "not at the same exact time", so a small difference seems sufficient.
1553
1554  UPDATE: randomization removed.
1555
1556  Closes PR #187
1557  Fix by: Brad Spencer
1558
1559- distribute ares_android.h
1560
1561  Distribute ares_android.h when a release distribution package is
1562  created.
1563
1564  Reported By: Andrey Khranovsky
1565  Bug: https://c-ares.haxx.se/mail/c-ares-archive-2018-04/0000.shtml
1566
1567- ares_set_servers_csv() on failure should not leave channel in a bad state
1568
1569  If bad data is passed to ares_set_servers_csv() or
1570  ares_set_servers_ports_csv() it will clear the existing channel
1571  configured DNS servers, then a call to ares_send() will fail due
1572  to a bad malloc which may have undefined behavior.
1573
1574  The fix now only clears existing servers on success.  An additional
1575  sanity check was added in ares_send() to ensure nservers >= 1 or
1576  will result in ARES_ESERVFAIL.
1577
1578  Bug: https://c-ares.haxx.se/mail/c-ares-archive-2018-03/0000.shtml
1579  Reported-by: Francisco Sedano Crippa
1580
1581- docs: Not all manpages are listed
1582
1583  Some docs aren't installed or not showing up on
1584  https://c-ares.haxx.se/docs.html
1585  due to not being listed in Makefile.inc.  Add missing docs and
1586  ensure docs are alphabetized.
1587
1588Version 1.14.0 (16 Feb 2018)
1589
1590Daniel Stenberg (16 Feb 2018)
1591- ares_android.c: fix warning: ISO C forbids an empty translation unit
1592
1593- RELEASE-NOTES: some more work we did and people who helped
1594
1595Brad House (16 Feb 2018)
1596- travis: skip Autotools style testing for cmake
1597
1598  Fix cmake test build by skipping autotools portion of test script.
1599
1600- travis: standardize CMake test off of Autotools tests
1601
1602  Instead of running 'make test', run the tests directly like autotools
1603  does.  It provides more verbose output.
1604
1605- travis: Enable building tests for CMake
1606
1607  Travis should auto-build and run tests for cmake builds now that
1608  PR #168 is merged.
1609
1610- fix version in pkgconfig
1611
1612- Add version update to CMakeLists in maketgz
1613
1614- Release prep.  Add support for pkgconfig in cmake, set versions appropriately
1615
1616Gregor Jasny (15 Feb 2018)
1617- CMake: Add tests
1618
1619Brad House (14 Feb 2018)
1620- [Gregor Jasny brought this change]
1621
1622  Use cmake3 package provided by Ubuntu (#182)
1623
1624- Cmake 3.1 instead of 3.2.1 should be the minimum
1625
1626- Update RELEASE-NOTES and RELEASE-PROCEDURE.md to prepare for next release
1627
1628- get rid of c++ style comments
1629
1630- Use trusty for all builds, precise is EOL.  Update clang and cmake versions.
1631
1632- Current CMakeLists.txt doesn't support 2.8.12 anymore, we need to bump the version to 3.2.1 minimum
1633
1634- Re-organize sections in INSTALL.md and add CMake section
1635
1636- [Sergey Kolomenkin brought this change]
1637
1638  remove compilation warnings in MSVC (#47)
1639
1640- document handling of timeouts for ares_process and ares_process_fd to close PR #57
1641
1642- As per Issue #155, since we do not require gethostname() during init, if it fails, there's no reason for init to fail as it is only used to populate the domain
1643
1644GitHub (7 Feb 2018)
1645- [David Drysdale brought this change]
1646
1647  Document WSAStartup requirement (#180)
1648
1649David Drysdale (6 Feb 2018)
1650- [Antonio Tajuelo brought this change]
1651
1652  Added coderelease.io badge to readme.md for letting people subscribe to new versions (#174)
1653
1654- [Sheel Bedi brought this change]
1655
1656  Update year in LICENSE.md to 2018 (#170)
1657
1658GitHub (4 Feb 2018)
1659- [David Drysdale brought this change]
1660
1661  travis: use VM not container for {L,A}SAN builds (#177)
1662
1663  As per https://github.com/travis-ci/travis-ci/issues/9033, container
1664  based builds do not currently allow ptrace, which is used by LSAN and
1665  ASAN.
1666
1667Brad House (3 Feb 2018)
1668- [acthompson-google-com brought this change]
1669
1670  Android JNI code leaks local references in some cases (#175)
1671
1672  * Add Google LLC to AUTHORS.
1673
1674  * android: Explicitly delete all JNI local references, and cache JNI method IDs at initialization.
1675
1676  * android: Only return ARES_ENOTINITIALIZED on failures in initialization code.
1677
1678Gregor Jasny (2 Jan 2018)
1679- Embed fused Google Test 1.8.0
1680
1681Brad House (21 Dec 2017)
1682- [John Schember brought this change]
1683
1684  android: Check returns for obj and classes are not NULL. Document API levels for various Android functions and objects used. (#166)
1685
1686- CARES_CHECK_TYPE should reference variable so a warning is not produced for -Werror compatibility
1687
1688- [Brad Spencer brought this change]
1689
1690  Fix computation of IPv6 blacklist mask for values of netmask > 8. (#164)
1691
1692David Drysdale (14 Dec 2017)
1693- travis: Only do coverage/distcheck on normal build
1694
1695- travis: only do pip install on Linux
1696
1697- travis: only test in IPv4 mode
1698
1699  Travis' Trusty environment does not support IPv6.
1700
1701- test: allow restriction to one IP address family
1702
1703- [Roman Teterin brought this change]
1704
1705  Fix a typo in init_by_resolv_conf (#160)
1706
1707Brad House (11 Dec 2017)
1708- @gvanem says MSVC -RTCc option fails, looks erroneous to me, but the additional mask is harmless
1709
1710- Fix some other mingw warnings
1711
1712- Issue #143, get rid of windows build warning due to passing 'char **' to argument expecting 'const char **'
1713
1714- [Gregor Jasny brought this change]
1715
1716  Distribute CMake files (#130)
1717
1718- Android variants may not have __system_property_get
1719
1720  Some android systems like ARM64 may not have the __system_property_get
1721  symbol in libc (but still have it in the public headers).  Detect this
1722  condition at build time.  The __system_property_get method of retrieving
1723  name servers is deprecated as of Oreo so should strictly be a fallback
1724  mechanism anyhow.
1725
1726David Drysdale (9 Nov 2017)
1727- [David Hotham brought this change]
1728
1729  Wrong function name throughout man page (#154)
1730
1731- ares_data.c: iterate through substructs when freeing
1732
1733  Previous code recursed into substructures, which makes it more likely
1734  that large/heavily-nested responses could use up lots of stack.
1735
1736- test: test ares_free_data on long chain of structs
1737
1738- [Felix Yan brought this change]
1739
1740  Fix a typo in inet_ntop.c (#151)
1741
1742Daniel Stenberg (29 Sep 2017)
1743- ares_gethostbyname.3: fix callback status values
1744
1745  - ARES_ENOTFOUND means the _name_ wasn't found
1746
1747  - ARES_ENODATA can be returned when a resolve fails
1748
1749  Reported-by: Jakub Hrozek
1750  Bug: https://c-ares.haxx.se/mail/c-ares-archive-2011-06/0012.shtml
1751
1752Brad House (28 Sep 2017)
1753- [John Schember brought this change]
1754
1755  Fix DNS server lookup breaking with Android O due to Android removing access to net.dns# system properties. (#148)
1756
1757  As of Android 8 (Oreo) access to net.dns# has been removed (https://developer.android.com/about/versions/oreo/android-8.0-changes.html). The reasoning given is that it, "improves privacy on the platform". Currently c-ares uses this to get the list of DNS servers.
1758
1759  Now the only way to access the DNS server list is by using the Connectivity Manager though Java. This adds the necessary JNI code to use the Connectivity Manager and pull the DNS server list. The old way using __system_property_get with net.dns# remains for compatibilty.
1760
1761  Using the Connectivity Manager requires the ACCESS_NETWORK_STATE permission to be set on the app. Existing applications most likely are not setting this and keeping the previous method as a fallback will at the very least ensure those apps don't break on older versions of Android. They will need to add this permission for Android 8 compatibility.
1762
1763  Included in the patch are two initalization functions which are required. The JVM must be registered as well as the Connectivity Manager itself. There is no way to get the Connectivity Manager except though Java. Either being passed down to C directly or by passing in an Android Context which can be used to get the Connectivity Manager. Examples are provided in the documentation.
1764
1765- [Konstantinos Sofokleous brought this change]
1766
1767  allow linking against the static msvc runtime library (#133)
1768
1769  allow linking against the static msvc runtime library
1770
1771- [Gergely Nagy brought this change]
1772
1773  Force using the ANSI versions of WinAPI functions (#142)
1774
1775  When compiling c-ares with a build system that defines UNICODE,
1776  bad versions of WinAPI functions are used causing failures or even
1777  crashes. When windows.h is included in MBCS mode (like in the default
1778  build system), the ..A versions are the same as using the one without
1779  any suffix.
1780
1781- [cmake] build fix on Solaris
1782
1783GitHub (11 Sep 2017)
1784- [Brad House brought this change]
1785
1786  Win32 exclude legacy ipv6 subnets (#144)
1787
1788  win32 ipv6: add infrastructure to exclude ipv6 subnets that are known to cause issues
1789
1790- [David Drysdale brought this change]
1791
1792  windows: only look for ancient compilers (#146)
1793
1794  Also drop the use of a versioned output directory; just use
1795  .\msvc
1796
1797- [David Drysdale brought this change]
1798
1799  ares_init_options.3: match up sock_state_cb args (#141)
1800
1801  Fixes #140
1802
1803Daniel Stenberg (25 Aug 2017)
1804- [Anna Henningsen brought this change]
1805
1806  gethostbyaddr: fail with `ECANCELLED` for `ares_cancel()`
1807
1808  When `ares_cancel()` was invoked, `ares_gethostbyaddr()`
1809  queries would fail with `ENOTFOUND` instead of `ECANCELLED`.
1810
1811  It seems appropriate to treat `ares_cancel()` like `ares_destroy()`,
1812  but I would appreciate review of the correctness of this change.
1813
1814  Ref: https://github.com/nodejs/node/issues/14814
1815
1816  Closes #138
1817
1818David Drysdale (18 Aug 2017)
1819- [David Hotham brought this change]
1820
1821  support most recent Visual Studio 2017
1822
1823Brad House (26 Jul 2017)
1824- Preserve original DNS server order on Windows for equal metrics.
1825
1826  qsort is not stable, in order to make it stable we need to record
1827  the original index and add it as a secondary sort value when the
1828  metrics are equal to prevent using DNS servers that may not work
1829  at all as reported by some users.
1830
1831David Drysdale (15 Jul 2017)
1832- [Anna Henningsen brought this change]
1833
1834  ares_parse_naptr_reply: make buffer length check more accurate
1835
1836  9478908a490a6bf009ba58d81de8c1d06d50a117 introduced a length check
1837  for records parsed by `ares_parse_naptr_reply()`. However, that
1838  function is designed to parse replies which also contain non-NAPTR
1839  records; for A records, the `rr_len > 7` check will fail as there
1840  are only 4 bytes of payload.
1841  In particular, parsing ANY replies for NAPTR records was broken
1842  by that patch.
1843
1844  Fix that by moving the check into the case in which it is already
1845  known that the record is a NAPTR record.
1846
1847- appveyor: run dnsdump as a sanity check
1848
1849- travis: run dnsdump as a sanity check
1850
1851- test: use ares_free_string() throughout
1852
1853  As pointed out by Gisle Vanem in #125.
1854
1855Daniel Stenberg (3 Jul 2017)
1856- RELEASE-PROCEDURE.md: how to release
1857
1858  Fixes #115
1859  Closes #116
1860
1861David Drysdale (2 Jul 2017)
1862- test: Build dnsdump on Windows too
1863
1864  Thanks to Gisle Vanem for showing the way:
1865  https://github.com/c-ares/c-ares/commit/b701af8a24cf9d173b1dbe5faedcea34642e92da#commitcomment-22830845
1866
1867Brad House (26 Jun 2017)
1868- [Christian Ammer brought this change]
1869
1870  fix statement like #define - ares ssize_t define had a trailing semicolon (#120)
1871
1872David Drysdale (21 Jun 2017)
1873- test: distribute the fuzzcheck.sh script
1874
1875  The TESTS target runs fuzzcheck.sh so make sure it is included
1876  in the distributed tarball.
1877
1878  (The test itself will be pointless when run on a distribution, because
1879  the fuzzing corpus directories are not shipped, but at least this
1880  means that `make -C test test` should work.)
1881
1882- test: run the name-parsing corpus check too
1883
1884Daniel Stenberg (21 Jun 2017)
1885- dist: don't build/ship PDF versions in release archives
1886
1887  ... experience says very few read them and they can still get build by
1888  those who want them.a
1889
1890- ares_version.h: bump version
1891
1892Version 1.13.0 (20 Jun 2017)
1893
1894Daniel Stenberg (20 Jun 2017)
1895- RELEASE-NOTES: 1.13.0
1896
1897- ares_set_socket_functions.3: added in 1.13.0
1898
1899David Drysdale (18 Jun 2017)
1900- ares_parse_naptr_reply: check sufficient data
1901
1902  Check that there is enough data for the required elements
1903  of an NAPTR record (2 int16, 3 bytes for string lengths)
1904  before processing a record.
1905
1906- test: Feed in short NAPTR
1907
1908- test: Add fuzz input with short NAPTR
1909
1910- test: add ares_parse_naptr_reply to fuzzer
1911
1912- [noiz brought this change]
1913
1914  Update ares.h to support compiling with QNX
1915
1916- [Dionna Glaze brought this change]
1917
1918  Simple changes to appease stricter compilers.
1919
1920  ares_process.c uses htonl, which needs <arpa/inet.h> included.
1921  ares_getnameinfo.c uses a dynamically selected format string for
1922  sprintf, which -Wformat-literal doesn't like. Usually one would use
1923  inttypes.h and a format string "%" PRIu32, but C99 is too new for some
1924  supported platforms.
1925
1926GitHub (16 Jun 2017)
1927- [Gregor Jasny brought this change]
1928
1929  CMake: Emulate interface library on import (#108)
1930
1931  Closes: #104
1932  Signed-off-by: Gregor Jasny <gjasny@googlemail.com>
1933
1934Brad House (6 Jun 2017)
1935- [ChristianAmmer brought this change]
1936
1937  Added support for Windows DNS Suffix Search List (#93)
1938
1939  This change solves issue #53.
1940
1941  Support for suffix search lists was already built in for Linux. The search list could be set via set_search. With this change the suffix search list from Windows is read from the registry and then set into the ares configuration via set_search. There are two sources for the search list:
1942
1943  The global DNS suffix search list.
1944  The primary and connection specific DNS suffixes if the global is not available.
1945
1946  Contributed by @ChristianAmmer
1947
1948Daniel Stenberg (25 May 2017)
1949- [Thomas Köckerbauer brought this change]
1950
1951  configure: do not heck for ar if specified manually
1952
1953  Closes #62
1954
1955David Drysdale (23 May 2017)
1956- ares_expand_name: limit number of indirections
1957
1958- test: fuzz input file that takes a while to process
1959
1960- test: copy data in fuzz regression driver
1961
1962  Oops.
1963
1964GitHub (23 May 2017)
1965- [David Drysdale brought this change]
1966
1967  Convert char from ISO-8859-1 to UTF-8 (#99)
1968
1969  Fixes #97
1970
1971- [Gregor Jasny brought this change]
1972
1973  travis: Use trusty for cmake builds (#109)
1974
1975  kubuntu-backports dropped the CMake package for Precise
1976
1977David Drysdale (2 May 2017)
1978- [David Hotham brought this change]
1979
1980  msvc_ver.inc support most recent Visual Studio 2017 (#101)
1981
1982- test: use io.h not unistd.h for Windows
1983
1984- test: try building fuzz binaries on Windows
1985
1986- test: stick to int in ares-fuzz.c
1987
1988  Using int rather than ares_ssize_t means this file
1989  needs no c-ares dependency - it's a general driver for
1990  any libFuzzer-style entrypoint.
1991
1992- test: force ARES_OPT_NOROTATE for no-rotate tests
1993
1994- test: check expected NOROTATE value
1995
1996- ares_create_query: use ares_free not naked free
1997
1998  Accidentally added in commit 65c71be1cbe5
1999  ("ares_create_query: avoid single-byte buffer overwrite")
2000
2001Brad House (17 Mar 2017)
2002- Need ares.h for ares_ssize_t
2003
2004- tests should not use ssize_t, use ares_ssize_t
2005
2006GitHub (16 Mar 2017)
2007- [Brad House brought this change]
2008
2009  Portability updates for legacy systems. (#92)
2010
2011  Socklen_t should not be used in code, instead ares_socklen_t should be used.
2012  Convert ssize_t to ares_ssize_t for portability since the public API now exposes this.
2013
2014David Drysdale (14 Mar 2017)
2015- [Michael Osei brought this change]
2016
2017  Update msvc_ver.inc (#91)
2018
2019  For Visual Studio 2017 builds
2020
2021Daniel Stenberg (13 Mar 2017)
2022- [Brad House brought this change]
2023
2024  Windows DNS server sorting (#81)
2025
2026  Original Patch From Brad Spencer:
2027  https://c-ares.haxx.se/mail/c-ares-archive-2016-04/0000.shtml
2028
2029  My modifications include:
2030   * Dynamically find GetBestRoute2 since it is a Windows Vista+ symbol, and will fall back to prior behavior when not available.
2031   * Prefer get_DNS_AdaptersAddresses as the modifications should alleviate the concerns which caused us to prefer get_DNS_NetworkParams
2032   * Update AppVeyor to use MinGW-w64 instead of the legacy MinGW
2033   * Fix compile error in test suite for Windows.
2034
2035  Original message from patch below:
2036
2037  From: Brad Spencer <bspencer@blackberry.com>
2038  Date: Fri, 29 Apr 2016 14:26:23 -0300
2039
2040  On Windows, the c-ares DNS resolver tries first to get a full list of
2041  DNS server addresses by enumerating the system's IPv4/v6 interfaces and
2042  then getting the per-interface DNS server lists from those interfaces
2043  and joining them together. The OS, at least in the way the c-ares
2044  prefers to query them (which also may be the only or best way in some
2045  environments), does not provide a unified list of DNS servers ordered
2046  according to "current network conditions". Currently, c-ares will then
2047  try to use them in whatever order the nested enumeration produces, which
2048  may result in DNS requests being sent to servers on one interface
2049  (hosting the current default route, for example) that are only intended
2050  to be used via another interface (intended to be used when the first
2051  interface is not available, for example). This, in turn, can lead to
2052  spurious failures and timeouts simply because of the server address
2053  order that resulted because of the enumeration process.
2054
2055  This patch makes the (safe?) assumption that there is no other better
2056  rule to chose which interface's DNS server list should be prioritized.
2057  After all, a DNS lookup isn't something "per network"; applications
2058  don't look up "these DNS names on this interface and those DNS names on
2059  that interface". There is a single resource pool of DNS servers and the
2060  application should presume that any server will give it the "right"
2061  answer. However, even if all DNS servers are assumed to give equally
2062  useful responses, it is reasonable to expect that some DNS servers will
2063  not accept requests on all interfaces. This patch avoids the problem by
2064  sorting the DNS server addresses using the Windows IPv4/v6 routing tables.
2065
2066  For example, a request to DNS server C on interface 2 that is actually
2067  sent over interface 1 (which may happen to have the default route) may
2068  be rejected by or not delivered to DNS server C. So, better to use DNS
2069  servers A and B associated with interface 1, at least as a first try.
2070
2071  By using the metric of the route to the DNS server itself as a proxy for
2072  priority of the DNS server in the list, this patch is able to adapt
2073  dynamically to changes in the interface list, the DNS server lists per
2074  interface, which interfaces are active, the routing table, and so on,
2075  while always picking a good "best" DNS server first.
2076
2077  In cases where any DNS server on any interface will do, this patch still
2078  seems useful because it will prioritize a lower-metric route's (and thus
2079  interface's) servers.
2080
2081David Drysdale (22 Feb 2017)
2082- [Sergii Pylypenko brought this change]
2083
2084  docs: fixed references to ares_set_local_ip4 and ares_set_local_ip6
2085
2086- [Calle Wilund brought this change]
2087
2088  ares test: fix win32 build errors with virtual socket function tests
2089
2090  The added api requires both some typedefs not previously imported
2091  into the test build + the test code did not fully deal with
2092  socket differences on windows.
2093
2094- [Calle Wilund brought this change]
2095
2096  ares_process: fix return type of socket_create function (win32 warning)
2097
2098Daniel Stenberg (31 Jan 2017)
2099- [Calle Wilund brought this change]
2100
2101  ares_set_socket_functions: Add man page
2102
2103  Providing some rudimentary documentation for the added functionality
2104
2105  Closes #72
2106
2107- [Calle Wilund brought this change]
2108
2109  ares-test: Add test helpers and cases for virtual socket IO
2110
2111  * Added test case macro to automatically run tests twice, once "normal",
2112    once with virtual IO.
2113  * Changed most "live" query tests to run in dual mode to verify
2114    at least simple socket IO via virtual functions
2115  * Added test case for settings/duping socket functions & callback data
2116
2117- [elcallio brought this change]
2118
2119  Implement using virtual socket IO functions when set
2120
2121  Uses virtual socket IO functions when set on a channel.
2122  Note that no socket options are set, nor is any binding
2123  done by the library in this case, since the client defining
2124  these is probably more suited to deal with this.
2125
2126- [elcallio brought this change]
2127
2128  Add virtual function set for socket IO
2129
2130  Defines a structure of basic create, close, read/write
2131  functions as virtual function calls, settable for individual
2132  c-ares channels.
2133
2134David Drysdale (30 Jan 2017)
2135- test: ignore aresfuzzname binary
2136
2137Gregor Jasny (14 Jan 2017)
2138- [Stephen Sorley brought this change]
2139
2140  Always use check_symbol_exists instead of check_function_exists.
2141
2142- Also add includes to TARGETS_INST_DEST
2143
2144- [Stephen Sorley brought this change]
2145
2146  Windows build fixes
2147
2148- CMake: Export targets
2149
2150- CMake: Use GNUInstallDirs for install location defaults
2151
2152David Drysdale (11 Jan 2017)
2153- Update Makefile.am for renamed INSTALL.md
2154
2155GitHub (11 Jan 2017)
2156- [David Drysdale brought this change]
2157
2158  docs: convert INSTALL to MarkDown & tweak (#83)
2159
2160- [Gregor Jasny brought this change]
2161
2162  Merge pull request #77 from stephen-sorley/cmake_modernize
2163
2164  Updated CMake minimum version to 2.8.12.
2165
2166Stephen Sorley (4 Jan 2017)
2167- Changed executables to depend directly on internal libcares target, instead of against
2168  the external-facing alias targets.
2169
2170- Updated Travis to pull CMake 2.8.12 from kubuntu-backports ppa.
2171
2172- Updated CMake minimum version to 2.8.12.
2173
2174  Changed the way usage requirements (include dirs, compile defs, dependent libraries) are specified, to match the recommended standard practice for modern CMake. This involves using target-specific functions (target_include_directories, target_compile_definitions, etc.), along with the PUBLIC, PRIVATE or INTERFACE modifiers.
2175
2176  Updated chain-building support to imitate new-style Find modules (import libs), instead of old-style Find modules (cache variables).
2177
2178David Drysdale (26 Dec 2016)
2179- [Chris Araman brought this change]
2180
2181  configure: clock_gettime workaround (#75)
2182
2183  Commits 7518c26, c41726b, and bc14ee7 brought this workaround to the CMake build system. This expands it to the autoconf build system.
2184
2185  Fixes #71
2186
2187- test: add fuzz entrypoint for ares_create_query()
2188
2189- test: Add gTest/gMock files to SOURCES
2190
2191  Built tarballs are not including all of the files needed
2192  to build the test suite because they are missing from the
2193  <target>_SOURCES variable in Makefile.am.
2194
2195- travis: Move build scripts under travis/
2196
2197  Travis doesn't always propagate errors in inline multi-line
2198  scripts, so move them all to be explicit shell scripts, each
2199  with set -e.
2200
2201- travis: check distributed tarball builds
2202
2203Daniel Stenberg (25 Oct 2016)
2204- dist: ship msvc_ver.inc too
2205
2206  Reported-by: Bruce Stephens
2207
2208  Fixes #69
2209
2210- [Aaron Bieber brought this change]
2211
2212  fix build on OpenBSD
2213
2214- ares_version.h: bump, working on 1.12.1 now
2215
2216GitHub (18 Oct 2016)
2217- [Gregor Jasny brought this change]
2218
2219  Merge pull request #64 from bradh352/master
2220
2221  Add CMake build system support to C-Ares.
2222
2223Brad House (5 Oct 2016)
2224- suggested PROJECT_NAME change broke chain building as it needs the magic PROJECT_NAME set in the ADD_LIBRARY for matching. Fix to make both goals work
2225
2226- update MacOSX 10.12 detection
2227
2228- Expand XCode clock_gettime fix to include MacOS 10.12, not just iOS10
2229
2230David Drysdale (4 Oct 2016)
2231- Revert "travis: work around bug in PyCParser"
2232
2233  This reverts commit a24a10a348fc00b8cfd684d91894a1df14880ea9.
2234
2235- travis: work around bug in PyCParser
2236
2237  See https://github.com/pyca/cryptography/issues/3187
2238
2239Brad House (3 Oct 2016)
2240- PROJECT_SOURCE_DIR instead of CMAKE_CURRENT_SOURCE_DIR as per @gjasny
2241
2242- use a project name of c-ares as per @gjasny
2243
2244- Import curl conversion of Makefile.inc to cmake form dynamically as per bdoetsch@ameritech.net to make maintaining multiple build systems easier
2245
2246Daniel Stenberg (30 Sep 2016)
2247- dist: add ares_library_initialized.* to the tarball
2248
2249David Drysdale (30 Sep 2016)
2250- test: check ares_create_query with too-long name
2251
2252Daniel Stenberg (30 Sep 2016)
2253- man pages: minor formatting edits
2254
2255Brad House (29 Sep 2016)
2256- merge fc7917e from @daviddrysdale ... travis build updates for cmake
2257
2258- cleanups as per @gjasny ... Use naked IF statements and use NOT DEFINED
2259
2260Version 1.12.0 (29 Sep 2016)
2261
2262Daniel Stenberg (29 Sep 2016)
2263- RELEASE-NOTES: 1.12.0
2264
2265- [David Drysdale brought this change]
2266
2267  ares-test-misc: test ares_create_query with escaped trailing dot
2268
2269- ares_create_query: avoid single-byte buffer overwrite
2270
2271  ... when the name ends with an escaped dot.
2272
2273  CVE-2016-5180
2274
2275  Bug: https://c-ares.haxx.se/adv_20160929.html
2276
2277Brad House (29 Sep 2016)
2278- CMake: Unify library versioning with the libtool methodology to make keeping library versions in sync easier with the autotools build system
2279
2280Daniel Stenberg (29 Sep 2016)
2281- ares_library_initialized.3: added
2282
2283- make: bump CARES_VERSION_INFO for release
2284
2285David Drysdale (29 Sep 2016)
2286- man: update ares_init_options.3
2287
2288Daniel Stenberg (29 Sep 2016)
2289- ares_library_init.3: corrected the ares_library_init_mem proto
2290
2291Brad House (28 Sep 2016)
2292- XCode v8 introduced clock_gettime() for iOS v10.  However, it is a weak symbol, which means when earlier iOS versions try to use clock_gettime() it results in a crash due to the missing symbol.  Detect this condition and do not set HAVE_CLOCK_GETTIME_MONOTONIC.
2293
2294- Adds cmake build system support to C-Ares.
2295
2296  The patch does not modify any source files, it only adds 3 new files
2297  (CMakelists.txt, ares_build.h.cmake, ares_config.h.cmake) which form the
2298  build system.  I've tried to go through as much of the autotools tests and
2299  extracted what I thought was appropriate, though many of the tests aren't
2300  as in-depth in CMake as they are for autotools ... it is unclear why some
2301  of them exist at all, I'm guessing for legacy systems that CMake probably
2302  doesn't support anyhow.
2303
2304  Building the library, and examples (adig, ahost, acountry) plus installation
2305  should work across a large number of tested platforms.  The tests have not
2306  yet been integrated.
2307
2308Daniel Stenberg (27 Sep 2016)
2309- README.md: remove space from link
2310
2311- README: link to the correct c-ares badge!
2312
2313  Reported-by: David Hotham
2314
2315  Fixes #63
2316
2317- docs: minor formatting edits
2318
2319- ares_destroy.3: formatting polish
2320
2321- ares_init.3: split the init docs into two separate man pages
2322
2323- SECURITY: point to the vulnerabilities page now
2324
2325- RELEASE-NOTES: synced with daa7235b1a5
2326
2327- ares_create_query.3: edit language
2328
2329  Tried to make the man page more readable.
2330
2331David Drysdale (26 Sep 2016)
2332- test: fix gMock to work with gcc >= 6.x
2333
2334  Taken from:
2335  https://github.com/google/googletest/issues/705#issuecomment-235067917
2336
2337Daniel Stenberg (26 Sep 2016)
2338- [Brad House brought this change]
2339
2340  headers: remove checks for and defines of variable sizes
2341
2342  ... they're not really used and by avoiding them in the ares_build.h
2343  output we make the public header less dependent on data sizes.
2344
2345David Drysdale (24 Sep 2016)
2346- api: add ARES_OPT_NOROTATE optmask value
2347
2348  Fix up a couple of problems with configuring whether c-ares rotates
2349  between different name servers between requests.
2350
2351  Firstly, ares_save_options() returns (in *optmask) the value of
2352  (channel->optmask & ARES_OPT_ROTATE), which doesn't necessarily
2353  indicate whether the channel is or is not actually doing rotation.
2354  This can be confusing/incorrect if:
2355   - the channel was originally configured without ARES_OPT_ROTATE
2356     (so it appears that the channel is not rotating)
2357   - the /etc/resolv.conf file includes the 'rotate' option
2358     (so the channel is actually performing rotation).
2359
2360  Secondly, it is not possible to reliably configure a channel
2361  to not-rotate; leaving off ARES_OPT_ROTATE is not enough, since
2362  a 'rotate' option in /etc/resolv.conf will turn it on again.
2363
2364  Therefore:
2365   - add an ARES_OPT_NOROTATE optmask value to allow explicit
2366     configuration of no-rotate behaviour
2367   - in ares_save_options(), report the value of channel->rotate
2368     as exactly one of (optmask & ARES_OPT_ROTATE) or
2369     (optmask & ARES_OPT_NOROTATE).
2370
2371  In terms of back-compatibility:
2372   - existing apps that set ARES_OPT_ROTATE will continue to rotate,
2373     and to have ARES_OPT_ROTATE reported back from ares_save_options()
2374   - existing apps that don't set ARES_OPT_ROTATE will continue to
2375     use local config/defaults to decide whether to rotate, and will
2376     now get ARES_OPT_ROTATE or ARES_OPT_NOROTATE reported back from
2377     ares_save_options() rather than 0.
2378
2379- ares_init_options: only propagate init failures from options
2380
2381  Commit 46bb820be3a8 ("ares_init_options: don't lose init failure")
2382  changed init behaviour so that earlier errors in initialization
2383  weren't lost.  In particular, if the user passes in specific
2384  options but they are not applied (e.g. because of an allocation
2385  failure), that failure needs to be reported back to the user; this
2386  also applies when duplicating a channel with ares_dup().
2387
2388  However, other initialization failures can be ignored and
2389  overridden -- in particular, if init_by_resolv_conf() or
2390  init_by_environment() fail, then falling back to default values
2391  is OK.
2392
2393  So only preserve failures from the init_by_options() stage, not
2394  from all initialization stages.
2395
2396  Fixes issue 60.
2397
2398- test: Force reinstall of libtool on OSX
2399
2400  Travis build environment appears to have changed.
2401
2402- test: Add valgrind build variant
2403
2404- test: Add null pointer to gtest args
2405
2406  GoogleTest assumes that there is a null pointer in argv[argc],
2407  so make it look like that. Without this change, tests run with
2408  command-line arguments get memory errors under valgrind/ASAN.
2409
2410Daniel Stenberg (21 Aug 2016)
2411- AUTHOR: maybe gitgub isn't really an author =)
2412
2413- AUTHORS: added contributors from the git log
2414
2415- LICENSE.md: add a stand-alone license file
2416
2417  Just the MIT license used in the top the source files moved out to a
2418  stand-alone file for easier reference and discovery.
2419
2420- README: added "CII best practices" badge
2421
2422- SECURITY.md: suggested "security process" for the project
2423
2424David Drysdale (17 Aug 2016)
2425- test: Add Clang static analysis build to Travis
2426
2427  Run scan-build over the library source code, but skip the
2428  tests.  Needs a later Clang install in Travis
2429
2430- test: more info on how to run fuzz testing
2431
2432- test: make fuzzer driver code C not C++
2433
2434- test: fuzzer mode for AFL's persistent mode
2435
2436  When fuzzing with AFL, if the LLVM-based instrumentation is
2437  used (via the afl-clang-fast wrapper), then it is possible to
2438  have a single execution of the fuzzer program iterate multiple
2439  times over the fuzzing entrypoint (similar to libFuzzer's normal
2440  mode of execution) with different data.  This is much (e.g. 10x)
2441  faster.
2442
2443  Add code to support this, by checking whether __AFL_LOOP is
2444  defined at compile-time.
2445
2446  Also, shift the code to effectively be C rather than C++.
2447
2448- test: simplify deps for fuzzer entrypoint
2449
2450  No need to depend on the rest of the test code (ares-test.h) for
2451  the fuzzer entrypoint; this makes the entrypoint slightly simpler
2452  to build with LLVM's libFuzzer.
2453
2454  Also shift the code to effectively be C rather than C++
2455
2456- test: disable MinGW tests
2457
2458  The test binary built in the MinGW build is failing for some
2459  reason.  It works for me when I build locally, so I'm guessing
2460  it's down to some sort of AppVeyor environment issue.
2461
2462  Disable for now.
2463
2464Daniel Stenberg (16 Aug 2016)
2465- read_tcp_data: remove superfluous NULL check
2466
2467  CID 56884 by Coverity. The pointer is already derefenced before this
2468  point so it can't be NULL here anyway.
2469
2470- web: http => https
2471
2472GitHub (20 Jul 2016)
2473- [David Drysdale brought this change]
2474
2475  Merge pull request #59 from fuze/master
2476
2477  Update msvc_ver.inc for VS2015 Update 3
2478
2479- [Chris Araman brought this change]
2480
2481  Update msvc_ver.inc
2482
2483  support Visual Studio 2015 Update 3
2484
2485David Drysdale (2 May 2016)
2486- Fix trailing comment for #endif
2487
2488Daniel Stenberg (30 Apr 2016)
2489- email: use Gisle's "new" address
2490
2491David Drysdale (18 Apr 2016)
2492- test: drop superfluous fuzz inputs
2493
2494  Where there are multiple fuzz input files that only differ in
2495  the first two bytes (the query ID), just keep the first such
2496  file.
2497
2498svante karlsson (15 Apr 2016)
2499- Update msvc_ver.inc
2500
2501  support Visual Studio 2015 Update 2
2502
2503David Drysdale (31 Mar 2016)
2504- test: Run fuzzcheck.sh in Travis build
2505
2506- test: add fuzzing check script to tests
2507
2508  Add a test script that runs the fuzzing command over the
2509  corpus of DNS packets.  This doesn't actually do any fuzzing
2510  (it just runs them as inputs without generating any variations)
2511  but it does ensure that the fuzzing entrypoint is still working.
2512
2513- test: allow multiple files in aresfuzz command line
2514
2515  If no arguments are specified, use stdin as input.
2516  Otherwise treat each argument as a filename and feed
2517  its contents to the fuzz entrypoint.
2518
2519- test: Add corpus of DNS packets
2520
2521  For fuzz testing it is useful to start from a corpus of valid
2522  packets, so fill out the test/fuzzinput/ directory with a bunch
2523  of inputs.
2524
2525  These packets were generated by temporarily modifying the c-ares
2526  process_answer() function to save off any incoming response messages.
2527
2528- test: Add utility to show DNS packet from file
2529
2530- [nordsturm brought this change]
2531
2532  Fix nsort initialization
2533
2534  Author: Alexander Drachevskiy
2535  http://c-ares.haxx.se/mail/c-ares-archive-2014-07/0004.shtml
2536  http://c-ares.haxx.se/mail/c-ares-archive-2014-07/0014.shtml
2537
2538- test: Check setting nsort=0 option is respected
2539
2540- test: Update fuzzing function prototype
2541
2542  libFuzzer changed expected return type from void to int
2543  in LLVM 3.8.
2544
2545- Explicitly clear struct servent before use
2546
2547  On a build where MSAN has been manually set up (which involves
2548  using an MSAN-instrumented version of the standard C++ library, see
2549  https://github.com/google/sanitizers/wiki/MemorySanitizerLibcxxHowTo)
2550  there's a warning about use of uninitialized memory here.  It
2551  might be a false positive, but the fix is trivial so include it.
2552
2553- test: for AF_UNSPEC, return CNAME only for AAAA, but valid A record
2554
2555  Also shuffle expected responses rsp6/rsp4 into the order they will occur.
2556
2557- [Chris Araman brought this change]
2558
2559  msvc_ver.inc: support Visual Studio 2015 Update 1
2560
2561- build: commonize MSVC version detection
2562
2563  Remove the need to copy/paste version number mapping between
2564  Makefile.msvc and test/Makefile.msvc.
2565
2566- test: Use different name in live test
2567
2568- test: Only pass unused args to GoogleTest
2569
2570- ahost.c: add cast to fix C++ compile
2571
2572  If ahost.c is force-compiled as C++ the missing cast from
2573  (void *) to (char **) is problematic.
2574
2575- ares_library_cleanup: reset ares_realloc too
2576
2577  Otherwise a subsequent use of the library might use a previous
2578  incarnation's realloc() implementation.
2579
2580Daniel Stenberg (9 Mar 2016)
2581- [Brad House brought this change]
2582
2583  configure: check if tests can get built before enabled
2584
2585  The current approach for disabling tests is not a good solution because
2586  it forces you to pass --disable-tests, rather than auto-detect if your
2587  system can support the tests in the first place.  Many (most?) systems
2588  do not have C++11.  This also causes issues when chain-building c-ares,
2589  the hosting system needs to be updated to support passing this
2590  additional flag if necessary, it doesn't seem reasonable to add this
2591  requirement which breaks compatibility.
2592
2593  This change auto-detects if the system can build the tests and
2594  automatically disable them if it cannot.  If you pass --enable-tests to
2595  configure and the system cannot build them either due to lack of system
2596  support, or because cross-compilation is being used, it will throw an
2597  appropriate error since the user indicated they really did want the
2598  tests.
2599
2600David Drysdale (3 Mar 2016)
2601- [Viktor Szakats brought this change]
2602
2603  Makefile.m32: add support for CROSSPREFIX
2604
2605- [Viktor Szakats brought this change]
2606
2607  Makefile.m32: add support for extra flags
2608
2609  Allow specification of CARES_{LD,C}FLAG_EXTRAS envvars
2610  for mingw
2611
2612- test: Build with MinGW on AppVeyor
2613
2614- test: avoid in6addr_* constants
2615
2616  These aren't available on MinGW, so use explicit addresses instead.
2617
2618- test: add missing #includes for dns-proto.cc
2619
2620- [Gregor Jasny brought this change]
2621
2622  Fix man page typos detected by Lintian
2623
2624Daniel Stenberg (19 Feb 2016)
2625- configure: acknowledge --disable-tests
2626
2627  Fixes #44
2628
2629- AUTHORS: added contributors from the 1.11.0 release
2630
2631- bump: start working on the next version
2632
2633Version 1.11.0 (19 Feb 2016)
2634
2635Daniel Stenberg (19 Feb 2016)
2636- RELEASE-NOTES: final edits for 1.11.0
2637
2638David Drysdale (15 Feb 2016)
2639- ares_dup.3: remove mention of nonexistent function
2640
2641  ares_dup_options() doesn't exist, so don't document it.
2642
2643- test: skip repeated build steps
2644
2645  Top-level buildconf/configure now triggers for the
2646  test/ subdir too, so don't need to do explicitly.
2647
2648- test: namespaces unavailable when cross-compiling
2649
2650Daniel Stenberg (13 Feb 2016)
2651- configure: only run configure in test when NOT cross-compiling
2652
2653  ... as the tests won't run cross-compiled anyway
2654
2655David Drysdale (13 Feb 2016)
2656- test: prefer ON_CALL to EXPECT_CALL to reduce flakes
2657
2658  For UDP tests, there's a chance of a retry.  EXPECT_CALL only
2659  expects a single request to arrive at the server; ON_CALL allows
2660  for a UDP retry and repeats the same answer.
2661
2662  Note that ON_CALL and EXPECT_CALL can't be mixed in the same
2663  test, and that tests that have a varied sequence of responses
2664  for the same repeated request still have to use EXPECT_CALL.
2665
2666Daniel Stenberg (13 Feb 2016)
2667- configure: run configure in 'test' too
2668
2669  Having the test dir completely stand-alone causes too many issues for
2670  users and devs. It still needs to be built specifically.
2671
2672- configure: build silently by default
2673
2674- buildconf: run test/buildconf too if present
2675
2676- test/configure: build silently by default
2677
2678- [Gregor Jasny brought this change]
2679
2680  dist: Distribute README.md
2681
2682  Closes #42
2683
2684Version 1.11.0 (11 Feb 2016)
2685
2686Daniel Stenberg (11 Feb 2016)
2687- Makefile.am: distribute the test dir too
2688
2689- RELEASE-NOTES: synced with 385582bd14b68a
2690
2691- [Nicolas \"Pixel\" Noble brought this change]
2692
2693  ares_win32_init: make LoadLibrary work when using UNICODE too
2694
2695  Closes #17
2696
2697David Drysdale (11 Feb 2016)
2698- Use "resolve" as synonym of "dns" in nsswitch.conf
2699
2700  Modern Linux systems may have libnss_resolve from systemd as the
2701  resolver, which is then configured in /etc/nsswitch.conf with
2702  the "resolve" keyword rather than "dns".
2703
2704  Fixes #33
2705
2706- ares_set_socket_callback: make manpage match code
2707
2708  The code in ares_process.c that invokes the socket creation/connection
2709  callback only checks for rc < 0, not for standard ares error codes.
2710
2711- Merge pull request #36 from AGWA-forks/master
2712
2713  Add ares_set_socket_configure_callback()
2714
2715- test: Update init tests to match behaviour
2716
2717  Unreadable config files are now treated the same way
2718  as absent config files.
2719
2720- [Fedor Indutny brought this change]
2721
2722  Ignore `fopen` errors to use default values
2723
2724  After 46bb820be3a83520e70e6c5f0c5133253fcd69cd `init_by_resolv_conf`
2725  errors are no longer swallowed in `ares_init_options`. This has exposed
2726  a previously unknown bug in `lookups` initialization code.
2727
2728  If there is no lookup configuration in `resolv.conf`,
2729  `init_by_resolv_conf` will attempt to read it from other files available
2730  on the system. However, some of these files may have restricted
2731  permissions (like `600`), which will lead to `EACCESS` errno, which in
2732  turn is handled like a fatal error by `init_by_resolv_conf`.
2733
2734  However, it sounds illogical that this error should be handled as a
2735  fatal. There is a `init_by_defaults` call that overrides `lookups` with
2736  default value, and certainly possible absence of lookup information is
2737  the reason why this function exists in a first place!
2738
2739  I suggest handling any `fopen` errors as non-fatal ones, allowing to
2740  pick up the `lookups` value from different config files, or to pick up
2741  default value.
2742
2743Andrew Ayer (9 Feb 2016)
2744- Document callback type in man page for ares_set_socket_callback
2745
2746- Add ares_set_socket_configure_callback()
2747
2748  This function sets a callback that is invoked after the socket is
2749  created, but before the connection is established.  This is an ideal
2750  time to customize various socket options.
2751
2752David Drysdale (9 Feb 2016)
2753- test: ares_set_socket_callback failure behaviour
2754
2755- test: Check ares_parse_txt_reply_ext() entrypoint
2756
2757- [Fedor Indutny brought this change]
2758
2759  txt: introduce `ares_parse_txt_reply_ext`
2760
2761  Introduce `ares_txt_ext` structure with an extra `record_start`
2762  field, which indicates a start of a new TXT record, thus allowing to
2763  differentiate the chunks in the same record, from a chunks in a
2764  different record.
2765
2766  Introduce a new API method: `ares_parse_txt_reply_ext` that works with
2767  this kind of struct.
2768
2769- doc: Update missed repo references
2770
2771- doc: Update docs on contributing
2772
2773- test: Run command line tools in Travis
2774
2775  Do a quick execution of each of the command line tools
2776  in the continuous integration build, so that any (say)
2777  sanitizer failures show up.
2778
2779- acountry: drop inert test
2780
2781  If ver_1 is true, then z0 and z1 must both be 'z', and so
2782  (z0 != 'z' && z1 != 'z') can never be true.
2783
2784  CID 56879, pointed out by Coverity.
2785
2786- doc: update badge locations to master repo
2787
2788- test: Enable maintainer mode + debug in Travis
2789
2790- test: Add an iOS build target
2791
2792- test: Ignore SIGPIPE in tests
2793
2794- test: More initialization tests
2795
2796- test: Improve containerized test mechanism
2797
2798  Aim is to ensure that code coverage information can escape the
2799  container.  To do this:
2800   - Enter a new mount namespace too, so that we can...
2801   - Bind mount the expected source directory into the container
2802   - Share memory with the sub-process so coverage information is
2803     shared too.
2804
2805- test: Make contained tests easier to write
2806
2807- test: Add framework for containerized testing
2808
2809  On Linux we can potentially use user and UTS namespaces to run  a test
2810  in a pseudo-container with:
2811   - arbitrary filesystem (e.g. /etc/resolv.conf, /etc/nsswitch.conf, /etc/hosts)
2812   - arbitrary hostname/domainname.
2813
2814  Include a first pass at the framework code to allow this, along with a
2815  first test case that uses the container.
2816
2817- test: Use a longer timeout for less flakiness
2818
2819  Having occasional test failures from timeout before multiple
2820  queries can complete, so up the default timeout for the test
2821  from 100ms to 1500ms.
2822
2823- test: Make failure tests more robust
2824
2825  Different platforms will do different numbers of allocations
2826  in the processing of a given API call; just check that the
2827  return code is either success or ENOMEM, and free off any
2828  returned state in the former case.
2829
2830  Also cope with ECONNREFUSED as well as ENOTFOUND.
2831
2832- test: Get test code building under Windows
2833
2834   - Initial nmake file based off library nmake file
2835   - Cast socket call arguments to (char *)
2836   - Use wrapper sclose() that maps to closesocket() or close()
2837   - Build a config.h indicating presence of headers
2838   - Conditionally include netdb.h
2839   - Remove unnecessary include of sys/socket.h
2840   - Force longer bitmask for allocation failure tracking
2841   - Call WSAStartup() / WSACleanup() in main()
2842   - Set TCP_NODELAY for mock server
2843   - Turn on tests in AppVeyor build
2844
2845- test: Disable tests that manipulate env on Windows
2846
2847- test: Move file lists into Makefile.inc
2848
2849  In preparation for a Win32 build of the test suite.
2850
2851- test: Add a simple multi-server test
2852
2853  Check rotate option does something
2854
2855- test: Allow for multiple mock servers
2856
2857   - Update the MockServer to allow separate specification of
2858     UDP and TCP ports
2859   - Have an array of mock servers listening on consecutive
2860     sets of ports.
2861   - Rename Process(fd) to ProcessFD(fd) to avoid confusion.
2862   - Initialize channel by using the new ares_set_servers_ports()
2863     entrypoint, so multiple ports on the same loopback address
2864     can be used.
2865
2866- test: Update test for set/get_servers variants
2867
2868  Ports are significant in the _ports_ variant functions, so update test to cope.
2869
2870- test: Make GetNameServers() utility function port-aware
2871
2872  Also make it generally available.
2873
2874- test: more testing, including of internal static functions
2875
2876- test: more tests, especially fallback processing
2877
2878   - Make mock server listen on UDP + TCP in parallel.
2879   - Test UDP->TCP fallback on truncation
2880   - Test EDNS->no-EDNS fallback
2881   - Test some environment init options
2882   - Test nonsense reply
2883
2884  test: short response
2885
2886- test: more tests, particularly of initialization
2887
2888- test: Run mock tests over both TCP and UDP
2889
2890  With the exception of a few tests that make use of the timed
2891  retry aspect of UDP.
2892
2893- test: Run mock tests over both IPv4 and IPv6
2894
2895- test: Add more tests for edge cases
2896
2897- test: more nooks and crannies of pton functions
2898
2899- test: More tests for PTR parsing
2900
2901- test: Use of HOSTALIAS environment variable
2902
2903- test: Add RAII utility classes for testing
2904
2905   - TempFile holds specific contents
2906   - EnvValue sets an environment variable
2907
2908- test: More search domain scenarios
2909
2910- test: Remove duplicate flags from Makefile.am
2911
2912- test: Make test code leak-free
2913
2914- test: More tests
2915
2916   - test use of sortlist
2917   - test gethostbyname(AF_UNSPEC)
2918
2919- test: Test ares_gethostbyname_file()
2920
2921- test: Add more tests of ares_getnameinfo()
2922
2923- test: Tweak tests, add alloc failure test
2924
2925- test: Test init with options
2926
2927- test: More tests
2928
2929   - ares_inet_net_pton() variants
2930   - ares_getsock() variants
2931
2932- test: Expose ProcessWork() function
2933
2934- test: More parsing tests
2935
2936  Including:
2937   - Split each parse function test set out into separate files.
2938   - Add an allocation failure test for each parsing function.
2939   - Add error check test for each parsing function.
2940
2941- test: Add various additional tests
2942
2943- test: More tests
2944
2945  Include tests of internal functions, based on the value of the
2946  CARES_SYMBOL_HIDING macro; need to configure the library with
2947  --disable-symbol-hiding to enable these tests.
2948
2949- test: Allow command line override of mock server port
2950
2951- test: Add README.md documentation
2952
2953- test: Temporarily avoid latest Python requests package
2954
2955  Currently get error from Travis on this install step, and downgrading one
2956  version appears to fix the problem.
2957
2958  "Could not find any downloads that satisfy the requirement pyOpenSSL>=0.13
2959  (from requests[security])"
2960
2961- test: Add AppVeyor config file for Windows build
2962
2963- test: Add configuration for a Travis build
2964
2965  Cover Linux & OSX on the container infrastructure, but install
2966  a later G++ to satisfy the tests' need for C++11.
2967
2968  Use a build matrix to include a variety of build variants:
2969   - ASAN
2970   - UBSAN
2971   - LSAN
2972   - Coverage via coveralls.io
2973
2974  test: invoke ASAN and coverage in Travis build
2975
2976  Also shift to use explicit build matrix
2977
2978  test: Use coveralls.io for coverage tracking
2979
2980  test: Add a build with UBSAN
2981
2982  Also expand and re-order the setting of environment variables
2983  for easier modification.
2984
2985  test: Add LSAN build to Travis config
2986
2987- test: Add initial unit tests for c-ares library
2988
2989  The tests are written in C++11, using the GoogleTest and GoogleMock
2990  frameworks.  They have their own independent autoconf setup, so that
2991  users of the library need not have a C++ compiler just to get c-ares
2992  working (however, the test/configure.ac file does assume the use of
2993  a shared top-level m4/ directory).  However, this autoconf setup has
2994  only been tested on Linux and OSX so far.
2995
2996  Run with "./arestest", or "./arestest -v" to see extra debug info.
2997  The GoogleTest options for running specific tests are also
2998  available (e.g. "./arestest --gtest_filter=*Live*").
2999
3000  The tests are nowhere near complete yet (currently hitting around
3001  60% coverage as reported by gcov), but they do include examples
3002  of a few different styles of testing:
3003
3004   - There are live tests (ares-test-live.cc), which assume that the
3005     current machine has a valid DNS setup and connection to the
3006     internet; these tests issue queries for real domains but don't
3007     particularly check what gets returned.  The tests will fail on
3008     an offline machine.
3009
3010   - There a few mock tests (ares-test-mock.cc) that set up a fake DNS
3011     server and inject its port into the c-ares library configuration.
3012     These tests allow specific response messages to be crafted and
3013     injected, and so are likely to be used for many more tests in
3014     future.
3015
3016      - To make this generation/injection easier, the dns-proto.h file
3017        includes C++ helper classes for building DNS packets.
3018
3019   - Other library entrypoints that don't require network activity
3020     (e.g. ares_parse_*_reply) are tested directly.
3021
3022   - There are few tests of library-internal functions that are not
3023     normally visible to API users (in ares-test-internal.cc).
3024
3025   - A couple of the tests use a helper method of the test fixture to
3026     inject memory allocation failures, using the earlier change to the
3027     library to allow override of malloc/realloc/free.
3028
3029   - There is also an entrypoint to allow Clang's libfuzzer to drive
3030     the packet parsing code in ares_parse_*_reply, together with a
3031     standalone wrapper for it (./aresfuzz) to allow use of afl-fuzz
3032     for further fuzz testing.
3033
3034- test: Add local copy of GoogleMock/GoogleTest 1.7.0
3035
3036  Don't check in gtest/m4 files, as they are unused and interfere
3037  with the top-level configure process.
3038
3039- doc: Show build badges in README.md
3040
3041  Note that these URLs will need to be updated if/when the test branch
3042  gets pulled into the master repo/branch.
3043
3044- doc: Convert README to README.md
3045
3046  Gives better display on GitHub
3047
3048- doc: Update in preparation for next release
3049
3050  Assume 1.11.0 is next (as there are various API additions).
3051  Also add myself to AUTHORS.
3052
3053- build: Allow header compilation by Windows C++ compiler
3054
3055- build: Expose whether symbol hiding is on
3056
3057  Adding the CARES_SYMBOL_HIDING definition allows the test suite to
3058  detect whether internal symbols are available or not.
3059
3060- build: Add autoconf macros for C++11 code using pthreads
3061
3062  Pull in testing macros from the GNU autoconf archive to allow
3063  configure scripts to test for and setup use of a C++11 compiler
3064  (AX_CXX_COMPILE_STDCXX_11) and the pthreads library (AX_PTHREAD).
3065
3066  Note that these macros are not used by the main library autoconf,
3067  just by the tests (which share the same m4/ directory).
3068
3069- build: Add a code coverage option
3070
3071  Configure with:
3072    ./configure --enable-code-coverage
3073  Show coverage output with:
3074    make code-coverage-capture
3075
3076  Built on m4/ax_code_coverage.m4 from the GNU autoconf archive
3077  to provide the macros to check for presence of gcov + lcov;
3078  upstream macro modified to:
3079   - Remove use of $(AM_DEFAULT_VERBOSITY) , as earlier versions of
3080     autoconf (such as the one used by default on Travis) do not have this.
3081   - Rather than automatically defining CODE_COVERAGE_RULES to be a set
3082     of makefile rules that use ifeq/endif (which is GNU make-specific),
3083     instead only define CODE_COVERAGE_RULES if coverages is turned on,
3084     and in that case don't use conditionals in the makefile.
3085
3086- api: Add entrypoints to allow use of per-server ports
3087
3088  Add user-visible entrypoints ares_{get,set}_servers_ports(3), which
3089  take struct ares_addr_port_node rather than struct ares_addr_node.
3090  This structure includes a UDP and TCP port number; if this is set
3091  to zero, the channel-wide port values are used as before.
3092
3093  Similarly, add a new ares_set_servers_ports_csv(3) entrypoint, which
3094  is analogous to ares_set_servers(3) except it doesn't ignore any
3095  specified port information; instead, any per-server specified port
3096  is used as both the UDP and TCP port for that server.
3097
3098  The internal struct ares_addr is extended to hold the UDP/TCP ports,
3099  stored in network order, with the convention that a value of zero
3100  indicates that the channel-wide UDP/TCP port should be used.
3101
3102  For the internal implementation of ares_dup(3), shift to use the
3103  _ports() version of the get/set functions, so port information is
3104  transferred correctly to the new channel.
3105
3106  Update manpages, and add missing ares_set_servers_csv to the lists
3107  while we're at it
3108
3109- api: Add ares_set_sortlist(3) entrypoint
3110
3111  Allow explicit configuration of the channel's sortlist, by
3112  specifying a string in the same format as the equivalent
3113  /etc/resolv.conf option.
3114
3115  This allows library users to perform the same configuration
3116  that is available via /etc/resolv.conf, but without needing
3117  to change that file.
3118
3119- api: Allow injection of user-specified malloc/free functions
3120
3121  Add a new ares_library_init_mem() initialization function for the
3122  library which allows the library user to specify their own malloc,
3123  realloc & free equivalents for use library-wide.
3124
3125  Store these function pointers in library-wide global variables,
3126  defaulting to libc's malloc(), realloc() and free().
3127
3128  Change all calls to malloc, realloc and free to use the function pointer
3129  instead.  Also ensure that ares_strdup() is always available
3130  (even if the local environment includes strdup(3)), and change the
3131  library code to always use it.
3132
3133  Convert calls to calloc() to use ares_malloc() + memset
3134
3135- api: Add option to expose some internal functions
3136
3137  Purely for testing, add --enable-expose-statics option to configure
3138  which converts some static internal functions to be externally visible.
3139
3140- api: Expose the ares_library_initialized() function
3141
3142- ahost: Allow repeated -s <domain> options
3143
3144  This also removes a potential leak where later -s options would
3145  replace earlier ones without freeing the relevant string.
3146
3147- Mark unhittable lines
3148
3149  Add comments for the benefit of the lcov tool, marking
3150  lines that cannot be hit.  Typically these are fall-back
3151  protection arms that are already covered by earlier checks,
3152  and so it's not worth taking out the unhittable code (in case
3153  someone changes the code between the two places in future).
3154
3155- ares_set_servers_csv.3: make return type match code
3156
3157- bitncmp: update comment to match code behaviour
3158
3159- ares_striendstr: fix so non-NULL return can happen
3160
3161  This looks to have been broken since it was first introduced in 2005 in
3162  commit aba0b775ea30 ("Added ares_getnameinfo which mimics the
3163  getnameinfo API")
3164
3165- config_sortlist: free any existing sortlist on (re)alloc failure
3166
3167  If we get an allocation failure on 2nd or later entry in the sortlist, the
3168  code would return ENOMEM but still leave the initial entries allocated.
3169  Ensure that *sortlist is set to NULL whenever ENOMEM is returned.
3170
3171- ares_dup: clear new channel on failure
3172
3173  If the attempt to transfer IPv6 servers from the old to the new channel
3174  fails, the previous code would still return a channel to the user even though
3175  an error return code was generated.  This makes it likely that users would
3176  leak the channel, so explicitly clear the channel in this case.
3177
3178- ares_init_options: don't lose init failure
3179
3180  If (say) init_by_options() fails, the subsequent call to
3181  init_by_defaults() was overwriting the return code with
3182  success.  Still call init_by_defaults() regardless, but track
3183  its return value separately
3184
3185- ares_gethostbyname: don't leak valid-but-empty hostent
3186
3187  If an AF_UNSPEC query gets a valid response to its AAAA query,
3188  but which has no IPv6 addresses in it, then the code chains on to
3189  a A record query.  However, the hostent from the AAAA response
3190  was being leaked along the way (because it gets replaced before
3191  the follow-on end_hquery() invocation).
3192
3193- ares_parse_txt_reply: propagate errors from per-substring loop
3194
3195  If we get an allocation failure when processing a particular substring in a
3196  TXT record, that failure is silently lost; fix that by propagating errors from
3197  the inner loop to the outer loop.
3198
3199- process_answer: fix things up correctly when removing EDNS option
3200
3201  When a server rejects an EDNS-equipped request, we retry without
3202  the EDNS option.  However, in TCP mode, the 2-byte length prefix was
3203  being calculated wrong -- it was built from the answer length rather than
3204  the length of the original request.
3205
3206  Also, it is theoretically possible that the call to realloc() might change
3207  the data pointed to; to allow for this, qbuf also needs updating.
3208
3209  (Both these fixes were actually included in a patchset sent on the mailing
3210  list in Oct 2012, but were included with other functional changes that
3211  didn't get merged:
3212  http://c-ares.haxx.se/mail/c-ares-archive-2012-10/0004.shtml)
3213
3214- ares__read_line: clear buf pointer on realloc failure
3215
3216- ares_expand_name: check for valid bits in label length
3217
3218  The top two bits of the label length indicate whether this is a
3219  label length (00) or an index to a name elsewhere in the message
3220  (11).  RFC1035 4.1.4 says that the other possible values for the
3221  top two bits (01, 10) are reserved for future use.
3222
3223Daniel Stenberg (23 Jan 2016)
3224- [Gregor Jasny brought this change]
3225
3226  Fix typos detected by lintian
3227
3228  Closes #32
3229
3230- [Gregor Jasny brought this change]
3231
3232  Distribute all man pages
3233
3234- README.cares: s/I/Daniel
3235
3236  ... and add a pointer to an existing version of the original area 1.1.1
3237  package.a
3238
3239- read_tcp_data: don't try to use NULL pointer after malloc failure
3240
3241  CID 56884, pointed out by Coverity. We really should make this function
3242  return an error code so that a malloc() failure can return back a major
3243  failure.
3244
3245- configure_socket: explicitly ignore return code
3246
3247  CID 56889 in Coverity pointed out the return code from setsocknonblock()
3248  is ignored, and this added typecast to (void) makes it explicit.
3249
3250- ahost: check the select() return code
3251
3252  Fixes CID 137189, pointed out by Coverity
3253
3254David Drysdale (18 Jan 2016)
3255- Fix buildconf on platforms using glibtoolize
3256
3257  Commit c49a87eea538 changed buildconf to only check for
3258  libtoolize, but missed a line
3259
3260- Don't exit loop early leaving uninitialized entries
3261
3262  Update for commit affc63cba875d.
3263
3264  The original patch from Gregor Jasny did not have the break
3265  statement; I incorrectly added it to prevent continuing the loop.
3266  However, the later entries in the array would then be left
3267  uninitialized, causing problems for later cleanup.
3268
3269  So fix to match Gregor's original patch, with apologies.
3270
3271Daniel Stenberg (18 Jan 2016)
3272- buildconf: remove check for libtool, it only requires libtoolize
3273
3274David Drysdale (17 Jan 2016)
3275- [Gregor Jasny brought this change]
3276
3277  Use libresolv to initialize cares on iPhone targets
3278
3279  On iPhone targets like iOS, watchOS or tvOS the file
3280  /etc/resolv.conf cannot be used to configure cares.
3281
3282  Instead the resolver library is queried for configuration
3283  values.
3284
3285  CC: Yury Kirpichev <ykirpichev@yandex-team.ru>
3286
3287Daniel Stenberg (17 Jan 2016)
3288- README: updated to new repo URL
3289
3290David Drysdale (14 Jan 2016)
3291- [Lei Shi brought this change]
3292
3293  Fixing slow DNS lookup issue
3294
3295  This patch is fixing the dns lookup issue due to dummy dns information
3296  of a disconnected adapter(in my case is a bluetooth adapter). I changed
3297  the dns lookup policy to try GetNetworkParams first because the
3298  GetNetworkParams provides the most reliable dns information (lots of
3299  checks were done by system). I also filter out inoperable adapter in
3300  DNS_AdaptersAddresses in case GetNetworkParams fail.
3301
3302- Merge pull request #30 from p-push/vs-2015
3303
3304  Support Visual Studio 2015
3305
3306Oleg Pudeyev (3 Jan 2016)
3307- [Gisle Vanem brought this change]
3308
3309  Support Visual Studio 2015
3310
3311David Drysdale (11 Nov 2015)
3312- [Andrew Andkjar brought this change]
3313
3314  added another version case to Makefile.msvc
3315
3316  nmake version 11.00.61030.0 resolves to CC_VERS_NUM = 110
3317
3318- Merge pull request #26 from bitbouncer/vs-2013
3319
3320  added define for visual studio 2013
3321
3322svante karlsson (25 Jun 2015)
3323- added define for visual studio 2013
3324
3325Jakub Hrozek (6 Nov 2014)
3326- ares__read_line: free buf on realloc failure
3327
3328- Destroy options if ares_save_options fails
3329
3330  It's possible that, if ares_save_options failed, the opts structure
3331  would contain some allocated memory. Calling ares_destroy_options in
3332  this case is safe, because ares_save_options zeroes out the memory
3333  initially.
3334
3335- [David Drysdale brought this change]
3336
3337  Continue loop if space for hostname not large enough
3338
3339  When attempting to build a search domain from the local hostname
3340  (used as a fallback when no other methods have given a search
3341  domain), the code doubles the buffer size on each loop iteration.
3342
3343  However, the loop previously had a WHILE_FALSE terminator so the continue
3344  statement exited the loop rather than going round again.
3345
3346Daniel Stenberg (30 Oct 2014)
3347- ares_getnameinfo.3: there is no ares_getaddrinfo
3348
3349David Drysdale (30 Sep 2014)
3350- [Gregor Jasny brought this change]
3351
3352  Prevent tmpbuf from overrunning
3353
3354  Fix Coverity error CID 56886.
3355
3356  Signed-off-by: Gregor Jasny <gjasny@googlemail.com>
3357
3358- [Gregor Jasny brought this change]
3359
3360  Re-start loop if select fails
3361
3362  Fix Coverity error CID 56882
3363
3364  Signed-off-by: Gregor Jasny <gjasny@googlemail.com>
3365
3366- [Gregor Jasny brought this change]
3367
3368  Free temporary variable in error path
3369
3370  Fix Coverity CID 56890
3371
3372  Signed-off-by: Gregor Jasny <gjasny@googlemail.com>
3373
3374- [Gregor Jasny brought this change]
3375
3376  Fix integer shift overflow if both tcp_socket and udp_socket are set
3377
3378  The problem occurs if at the start of the loop the sockindex is at the
3379  last valid ARES_GETSOCK_MAXNUM position. If then both udp_socket and
3380  tcp_socket are valid, sockindex gets incremented for UDP first and
3381  points one entry behind the array for the tcp block.
3382  So the fix is to check after every increment of sockindex if it is still
3383  valid.
3384
3385  Fix Coverity error CID 56878
3386
3387  Signed-off-by: Gregor Jasny <gjasny@googlemail.com>
3388
3389- [Gregor Jasny brought this change]
3390
3391  Null check before dereference
3392
3393  Fix Coverity error CID 56880
3394
3395  Signed-off-by: Gregor Jasny <gjasny@googlemail.com>
3396
3397Jakub Hrozek (28 Jul 2014)
3398- [Gisle Vanem brought this change]
3399
3400  Comment in ares_ipv6.h
3401
3402David Drysdale (25 Jul 2014)
3403- CONTRIBUTING: add file to indicate mailing list is preferred
3404
3405- Add -t u option to ahost
3406
3407  Add an option to allow specification of the AF_UNSPEC
3408  address family.
3409
3410Jakub Hrozek (24 Jul 2014)
3411- host_callback: Fall back to AF_INET on searching with AF_UNSPEC
3412
3413  Previously, when an ares_gethostbyname() searched with AF_UNSPEC and the
3414  first AF_INET6 call only returned CNAMEs, the host_callback never
3415  retried AF_INET.
3416
3417  This patch makes sure than on ARES_SUCCESS, the result of AF_INET6 is
3418  taken as authoritative only if the result contains some addresses.
3419
3420- [David Drysdale brought this change]
3421
3422  Move memset call below platform-specific declarations
3423
3424  A GitHub commenter [1] says that my recent change to ahost.c has
3425  problems compiling on Windows + C89 platforms.
3426
3427  [1]  https://github.com/bagder/c-ares/commit/ee22246507c9#commitcomment-6587616
3428
3429- [David Drysdale brought this change]
3430
3431  Update ahost man page to describe -s option.
3432
3433  Commit ee22246507c9 added the -s <domain> option to the
3434  ahost command, but neglected to update the man page to
3435  describe it.
3436
3437  Also fix typo in description of -t option.
3438
3439- ares_parse_soa_reply: Do not leak rr_name on allocation failure
3440
3441  If ares_malloc_data failed, already allocated rr_name would go out of
3442  scope.
3443
3444- [David Drysdale brought this change]
3445
3446  Don't override explicitly specified search domains
3447
3448  Only set search domains from /etc/resolv.conf if there isn't a value
3449  already present in the channel.
3450
3451- [David Drysdale brought this change]
3452
3453  Allow specification of search domain in ahost
3454
3455  Add the "-s domain" command line option to override the search
3456  domains.
3457
3458Daniel Stenberg (12 May 2014)
3459- Revert "ares_parse_aaaa_reply: fix leak when reply contains 1 alias and no address"
3460
3461  This reverts commit 440110b303fdbfadb3ad53d30eeb98cc45d70451.
3462
3463- [Frederic Germain brought this change]
3464
3465  ares_parse_aaaa_reply: fix leak when reply contains 1 alias and no address
3466
3467- [Doug Kwan brought this change]
3468
3469  ares_build.h: fix building on 64-bit powerpc
3470
3471  There are two issues.
3472
3473  1. gcc actually does not use __ppc__ and __ppc64__ but __PPC__ and
3474  __PPC64__.  The tests of __ILP32__ and __LP64__ are sufficient for gcc.
3475
3476  2. clang defines __GNU__ and defines both __ppc64__ and __ppc__ when
3477  targeting ppc64.  This makes CARES_SIZEOF_LONG to be 4 on a ppc64 system
3478  when building with clang.
3479
3480  My patch is two change the order of the checks so that we check the
3481  64-bit case first.
3482
3483- refresh: updated now with automake 1.14
3484
3485- [David Drysdale brought this change]
3486
3487  single_domain: Invalid memory access for empty string input
3488
3489  We noticed a small buglet in ares_search() when it gets an empty string
3490  as input -- the single_domain() utility function in ares_search.c
3491  accesses invalid memory (before the start of the string).
3492
3493Guenter Knauf (31 Aug 2013)
3494- Fixed warning 'type specifier missing'.
3495
3496Daniel Stenberg (30 Aug 2013)
3497- [Tor Arntsen brought this change]
3498
3499  ares_rules.h: CARES_SIZEOF_LONG doesn't exist anymore, don't test for it
3500
3501  It was removed in f19387dd72432
3502
3503- nowarn: use <limits.h> instead of configure for size of long
3504
3505  This makes the header file much more multi-arch friendly and can be used
3506  as-is with both 32 bit and 64 bit builds.
3507
3508- timeoffset: made static and private
3509
3510  ares__timeoffset() was only used once within this single source file
3511
3512- timeadd: make static
3513
3514  ares__timeadd() was only ever used from within the same source
3515
3516Yang Tse (18 Jul 2013)
3517- xc-am-iface.m4: comments refinement
3518
3519- configure: fix 'subdir-objects' distclean related issue
3520
3521  See XC_AMEND_DISTCLEAN comments for details.
3522
3523- configure: automake 1.14 compatibility tweak (use XC_AUTOMAKE)
3524
3525- xc-am-iface.m4: provide XC_AUTOMAKE macro
3526
3527Daniel Stenberg (12 May 2013)
3528- gitignore: ignore all ares_*pdf but also CHANGES.dist
3529
3530- bump: start working towards 1.10.1
3531
3532Version 1.10.0 (12 May 2013)
3533
3534Daniel Stenberg (12 May 2013)
3535- RELEASE-NOTES: two more bug fixes
3536
3537- [Keith Shaw brought this change]
3538
3539  ares_set_servers_csv: fixed IPv6 address parsing
3540
3541  Fixed bug that caused the last part of an IPv6 address to be parsed as
3542  the port number when the last part is all numeric.
3543
3544- nroff: fix two syntax mistakes
3545
3546  ares_parse_a_reply and ares_parse_aaaa_reply both had two \fB instead of
3547  \fP
3548
3549  Reported-by: Alexander Klauer
3550  Bug: http://c-ares.haxx.se/mail/c-ares-archive-2013-03/0010.shtml
3551
3552- [Alex Loukissas brought this change]
3553
3554  build: fix build on msvc11
3555
3556- Makefile.am: increment -version-info for 1.10.0 release
3557
3558- README: remove unnecessary comment
3559
3560- ares_version.h: copyright end range year is now 2013
3561
3562- RELEASE-NOTES: synced with fb0737f3a0a1c37
3563
3564- [Paul Saab brought this change]
3565
3566  ares_parse_aaaa_reply: Plug memory leak
3567
3568  This change is similar to ares_parse_a_reply.c in commit
3569  bffd67f16a8f42fe6dbf79ab2e39d92eea05c8a6
3570
3571- [Patrick Valsecchi brought this change]
3572
3573  ares_parse_txt_reply: return a ares_txt_reply node for each sub-string
3574
3575  Previously, the function would wrongly return all substrings merged into
3576  one.
3577
3578- [Alexander Klauer brought this change]
3579
3580  library init: documentation update
3581
3582  This commit updates the documentation of ares_library_init() and
3583  ares_library_cleanup() with regard to the newly introduced reference
3584  counting of initializations and deinitializations.
3585
3586- [Alexander Klauer brought this change]
3587
3588  library init: be recursive
3589
3590  Previously, a single call to ares_library_cleanup() would deinitialise
3591  the c-ares library, regardless of how many times ares_library_init() was
3592  called. This behaviour may cause problems in programs linking two or
3593  more libraries which, in turn, use c-ares. The present commit fixes this
3594  problem, deinitializing the library only after a number of calls to
3595  ares_library_cleanup() matching the number of calls to
3596  ares_library_init().
3597
3598- [Patrick Valsecchi brought this change]
3599
3600  protocol parsing: check input data stricter
3601
3602  ... so that bad length fields aren't blindly accepted
3603
3604  Bug: http://c-ares.haxx.se/mail/c-ares-archive-2013-04/0016.shtml
3605
3606Guenter Knauf (11 Apr 2013)
3607- Create ares_build.h when buidling from Git.
3608
3609- Added -DCARES_STATICLIB to CFLAGS.
3610
3611  Currently this static makefile does only support building the
3612  static library libcares.a.
3613
3614Daniel Stenberg (8 Apr 2013)
3615- [Alexander Klauer brought this change]
3616
3617  .gitignore: ignore patch files
3618
3619  This commit adds a line to .gitignore to the effect that patch files
3620  generated by 'git format-patch' are excluded from the repository.
3621
3622- [Alexander Klauer brought this change]
3623
3624  ares_destroy() documentation: no new requests
3625
3626  Clarify that no new requests may be added to a resolver channel that is
3627  currently being destroyed.
3628
3629- [Alexander Klauer brought this change]
3630
3631  Documentation: properly document ARES_ECANCELLED
3632
3633  This commit clarifies the behaviour of ares_cancel() with respect to
3634  callbacks and adds missing documentation of ARES_ECANCELLED to the man
3635  pages of the affected functions.
3636
3637- [Alexander Klauer brought this change]
3638
3639  ares_cancel(): cancel requests safely
3640
3641  An invocation of ares_cancel() walks through the request list, calling
3642  the callbacks of all pending requests on a channel. Previously, if such
3643  a callback added a new request to the channel, the request list might
3644  not end up empty, causing an abort by assertion failure. The present
3645  commit ensures that precisely all requests present upon entry of
3646  ares_cancel() are cancelled, and that adding new requests through
3647  callbacks is safe.
3648
3649Yang Tse (10 Mar 2013)
3650- ares.h: stricter CARES_EXTERN linkage decorations logic
3651
3652  No API change involved.
3653
3654- ares_build.h.dist: enhance non-configure GCC ABI detection logic
3655
3656  GCC specific adjustments:
3657
3658  - check __ILP32__ before 32 and 64bit processor architectures in
3659    order to detect ILP32 programming model on 64 bit processors
3660    which, of course, also support LP64 programming model, when using
3661    gcc 4.7 or newer.
3662
3663  - keep 32bit processor architecture checks in order to support gcc
3664    versions older than 4.7 which don't define __ILP32__
3665
3666  - check __LP64__ for gcc 3.3 and newer, while keeping 64bit processor
3667    architecture checks for older versions which don't define __LP64__
3668
3669Daniel Stenberg (9 Mar 2013)
3670- ares.h: there is no ares_free_soa function
3671
3672Yang Tse (9 Mar 2013)
3673- Makefile.am: empty AM_LDFLAGS definition for automake 1.7 compatibility
3674
3675- ares_inet_ntop.3: s/socklen_t/ares_socklen_t
3676
3677- configure: use XC_LIBTOOL for portability across libtool versions
3678
3679- xc-lt-iface.m4: provide XC_LIBTOOL macro
3680
3681- Makefile.am: use AM_CPPFLAGS instead of INCLUDES
3682
3683- inet_ntop.c: s/socklen_t/ares_socklen_t
3684
3685- inet_ntop.c: s/socklen_t/ares_socklen_t for portability
3686
3687Daniel Stenberg (19 Feb 2013)
3688- ares.h: s/socklen_t/ares_socklen_t for portability
3689
3690- ares_inet_ntop.3: 4th argument is socklen_t!
3691
3692- spell inet correctly!
3693
3694- ares_inet_pton/ntop: cleanup
3695
3696  Make sure that the symbols are always exported and present in c-ares.
3697
3698  Make the headers prefixed with 'ares'.
3699
3700  Removed the inet_ntop.h version as it no longer features any content.
3701
3702- ares_inet_ntop/ares_inet_pton: added man pages
3703
3704Yang Tse (15 Feb 2013)
3705- [Gisle Vanem brought this change]
3706
3707  curl_setup_once.h: definition of HAVE_CLOSE_S defines sclose() to close_s()
3708
3709- [Gisle Vanem brought this change]
3710
3711  config-dos.h: define HAVE_CLOSE_S for MSDOS/Watt-32
3712
3713- [Gisle Vanem brought this change]
3714
3715  config-dos.h: define strerror() to strerror_s_() for High-C
3716
3717Daniel Stenberg (13 Feb 2013)
3718- ares_get_datatype: removed unused function
3719
3720  it was also wrongly named as internal functions require two underscores
3721
3722- ares__bitncmp: use two underscores for private functions
3723
3724  It used a single one previously making it look like a public one
3725
3726- ares__generate_new_id: moved to ares_query.c
3727
3728  ... and ares__rc4 is turned into a local static function.
3729
3730- ares__swap_lists: make private and static
3731
3732  ... since there's only one user, make it static within ares_process.c
3733
3734Yang Tse (13 Feb 2013)
3735- Makefile.msvc: add four VS version strings
3736
3737Daniel Stenberg (13 Feb 2013)
3738- ares_expand_name.3: clarify how to free the data
3739
3740Yang Tse (30 Jan 2013)
3741- zz40-xc-ovr.m4: fix 'wc' detection - follow-up 2
3742
3743  - Fix a pair of single quotes to double quotes.
3744
3745  URL: http://curl.haxx.se/mail/lib-2013-01/0355.html
3746  Reported by: Tor Arntsen
3747
3748- zz40-xc-ovr.m4: fix 'wc' detection - follow-up
3749
3750  - Take into account that 'wc' may return leading spaces and/or tabs.
3751
3752  - Set initial IFS to space, tab and newline.
3753
3754- zz40-xc-ovr.m4: fix 'wc' detection
3755
3756  - Take into account that 'wc' may return leading spaces.
3757
3758  - Set internationalization behavior variables.
3759
3760  Tor Arntsen analyzed and reported the issue.
3761
3762  URL: http://curl.haxx.se/mail/lib-2013-01/0351.html
3763
3764- zz40-xc-ovr.m4: check another three basic utilities
3765
3766- zz40-xc-ovr.m4: 1.0 interface stabilization
3767
3768  - Stabilization results in 4 public interface m4 macros:
3769    XC_CONFIGURE_PREAMBLE
3770    XC_CONFIGURE_PREAMBLE_VER_MAJOR
3771    XC_CONFIGURE_PREAMBLE_VER_MINOR
3772    XC_CHECK_PATH_SEPARATOR
3773  - Avoid one level of internal indirection
3774  - Update comments
3775  - Drop XC_OVR_ZZ40 macro
3776
3777- zz40-xc-ovr.m4: emit witness message in configure BODY
3778
3779  This avoids witness message in output when running configure --help,
3780  while sending the message to config.log for other configure runs.
3781
3782- zz40-xc-ovr.m4: truly do version conditional overriding
3783
3784  - version conditional overriding
3785  - catch unexpanded XC macros
3786  - fix double words in comments
3787
3788- zz40-xc-ovr.m4: fix variable assignment of subshell output bashism
3789
3790  Tor Arntsen analyzed and reported the issue.
3791
3792  URL: http://curl.haxx.se/mail/lib-2013-01/0306.html
3793
3794- zz40-xc-ovr.m4: reinstate strict AC_REQUIRE macro dependencies
3795
3796- zz40-xc-ovr.m4: avoid double single-quote usage
3797
3798- zz40-xc-ovr.m4: parentheses balancing of 'case' statements
3799
3800  m4 quadrigraph shell comment technique allows proper autoconf
3801  parentheses balancing in shell 'case' statements. The presence
3802  of unbalanced parentheses may otherwise trigger expansion bugs.
3803
3804- zz40-xc-ovr.m4: internals overhauling
3805
3806  - Update comments
3807  - Execute commands in subshells
3808  - Faster path separator check
3809  - Fix missing 'test' command
3810  - Rename private macros
3811  - Minimize AC_REQUIRE usage
3812
3813- zz40-xc-ovr.m4: redirect errors and warnings to stderr
3814
3815- configure: use XC_CONFIGURE_PREAMBLE early checks
3816
3817  Some basic checks we make were placed early enough in generated
3818  configure script when using autoconf 2.5X versions. Newer autoconf
3819  versions expand these checks much further into the configure script,
3820  rendering them useless. Using XC_CONFIGURE_PREAMBLE fixes placement
3821  of early intended checks across all our autoconf supported versions.
3822
3823- zz40-xc-ovr.m4: provide XC_CONFIGURE_PREAMBLE macro
3824
3825- configure: autotools compatibility fixes - step I
3826
3827  Fix proper macro expansion order across autotools versions for
3828  C compiler and preprocessor program checks.
3829
3830- configure: fix automake 1.13 compatibility
3831
3832  Tested with:
3833
3834  buildconf: autoconf version 2.69
3835  buildconf: autom4te version 2.69
3836  buildconf: autoheader version 2.69
3837  buildconf: automake version 1.13.1
3838  buildconf: aclocal version 1.13.1
3839  buildconf: libtool version 2.4
3840  buildconf: GNU m4 version 1.4.16
3841
3842- ares_private.h: use again memdebug.h instead of curl_memdebug.h
3843
3844- configure.ac: replace AM_CONFIG_HEADER with AC_CONFIG_HEADERS
3845
3846  automake 1.13 errors if AM_CONFIG_HEADER is used in configure script.
3847
3848- cares-override.m4: provide AC_CONFIG_MACRO_DIR definition conditionally
3849
3850  Provide a 'traceable' AC_CONFIG_MACRO_DIR definition only when using
3851  an autoconf version that does not provide it, instead of what we were
3852  doing up to now of providing and overriding AC_CONFIG_MACRO_DIR for
3853  all autoconf versions.
3854
3855- ares_private.h: use curl_memdebug.h instead of memdebug.h
3856
3857- vc6cares.dsp: add ares_create_query.c and ares_parse_soa_reply.c
3858
3859- cares-functions.m4: improve gethostname arg 2 data type check
3860
3861- setup_once.h: HP-UX specific 'bool', 'false' and 'true' definitions.
3862
3863  Also reverts commit bceb40095a
3864
3865- configure: check if compiler halts on function prototype mismatch
3866
3867- cares-functions.m4: add gethostname arg 2 data type check and definition
3868
3869- cares-functions.m4: update thread-safeness detection of getaddrinfo()
3870
3871  Take in account that POSIX standard Issue 7 drops h_errno support. Now, we also
3872  consider getaddrinfo() to be thread-safe when (_POSIX_C_SOURCE >= 200809L) or
3873  (_XOPEN_SOURCE >= 700) independently of whether h_errno exists or not.
3874
3875  Take in account that h_errno might be a modifiable lvalue not defined as
3876  a C preprocessor macro.
3877
3878- setup_once.h: HP-UX <sys/socket.h> issue workaround
3879
3880  Issue: When building a 32bit target with large file support HP-UX
3881  <sys/socket.h> header file may simultaneously provide two different
3882  sets of declarations for sendfile and sendpath functions, one with
3883  static and another with external linkage. Given that we do not use
3884  mentioned functions we really don't care which linkage is the
3885  appropriate one, but on the other hand, the double declaration emmits
3886  warnings when using the HP-UX compiler and errors when using modern
3887  gcc versions resulting in fatal compilation errors.
3888
3889  Mentioned issue is now fixed as long as we don't use sendfile nor
3890  sendpath functions.
3891
3892- setup_once.h: refactor inclusion of <unistd.h> and <sys/socket.h>
3893
3894  Inclusion of these two header files now done in setup_once.h
3895
3896- Header inclusion clean-up
3897
3898  Remove header inclusions already done in setup_once.h
3899
3900- setup_once.h: HP-UX specific TRUE and FALSE definitions
3901
3902  Some HP-UX system headers require TRUE defined to 1 and FALSE to 0.
3903
3904- ares_timeout.c: fix compiler warning
3905
3906- ares_create_query.c: IRIX compilation fix
3907
3908- c-ares/nameser.h: add some T_* defines for ns_t_* values
3909
3910Daniel Stenberg (7 Nov 2012)
3911- Revert "ares_parse_aaaa_reply: fix memory leak"
3912
3913  This reverts commit 50f25d8a4b2d16f4c5e0ef620238688b7a315c7a.
3914
3915- ares_parse_aaaa_reply: fix memory leak
3916
3917  an allocated buffer was not freed in the successful case.
3918
3919- [Gisle Vanem brought this change]
3920
3921  adig: perror() doesn't work for socket errors on windows
3922
3923  ... so print the SOCKERRNO instead
3924
3925- get_DNS_AdaptersAddresses: fix IPv6 parsing
3926
3927  Use of the wrong define made the function not parse IPv6 addresses
3928  properly.
3929
3930  Bug: http://c-ares.haxx.se/mail/c-ares-archive-2012-06/0028.shtml
3931  Reported by: Saúl Ibarra Corretgé
3932
3933- version: bumped to 1.10.0
3934
3935  Due to the newly added function: ares_create_query()
3936
3937- AUTHORS: synced with 83093ac450
3938
3939  Added 21 authors since this document was last updated
3940
3941- ares_create_query.3: mention when this is added
3942
3943- [hpopescu@ixiacom.com brought this change]
3944
3945  Added new feature (rfc2671)
3946
3947- code police: fix indents, < 80 columns, reflowed comments
3948
3949Guenter Knauf (11 Jul 2012)
3950- Cleaned up version awk script.
3951
3952Daniel Stenberg (30 Jun 2012)
3953- [Gisle Vanem brought this change]
3954
3955  read_udp_packets: bail out loop on bad sockets
3956
3957  I can see that recvfrom() in ares_process.c many times is called with
3958  'udp_socket' == ARES_SOCKET_BAD. The code takes care not to call
3959  recv/recvfrom with ARES_SOCKET_BAD in the outer-loop. So should the
3960  inner-loop.
3961
3962Yang Tse (29 Jun 2012)
3963- cares-compilers.m4: remove -Wstrict-aliasing=3 from clang
3964
3965  Currently it is unknown if there is any version of clang that
3966  actually supports -Wstrict-aliasing. What is known is that there
3967  are several that don't support it.
3968
3969- cares-compilers.m4: -Wstrict-aliasing=3 for warning enabled gcc and clang builds
3970
3971Daniel Stenberg (18 Jun 2012)
3972- version: work towards 1.9.2 (at least)
3973
3974Version 1.9.1 (18 Jun 2012)
3975
3976Daniel Stenberg (18 Jun 2012)
3977- RELEASE-NOTES: 1.9.1 coming up
3978
3979Version 1.9.0 (16 Jun 2012)
3980
3981Daniel Stenberg (16 Jun 2012)
3982- ares_version.h: next version is 1.9.0
3983
3984- [Marko Kreen brought this change]
3985
3986  ares_data.h: ARES_DATATYPE_SOA_REPLY is added in 1.9.0
3987
3988- RELEASE-NOTES: synced with 979bf951d
3989
3990  Next release deemed to become 1.9.0 due to the new function
3991
3992- [Marko Kreen brought this change]
3993
3994  SOA parser added
3995
3996  I need to do SOA queries, so here is a parser for them.
3997
3998  - ares_soa_reply: new struct
3999  - ares_malloc_data/ares_free_soa: ARES_DATATYPE_SOA_REPLY
4000  - ares_parse_soa_reply: actual function
4001
4002Yang Tse (14 Jun 2012)
4003- Kill compiler warning
4004
4005- Fix libcares.pc generation for static MingW* cross builds
4006
4007Daniel Stenberg (21 May 2012)
4008- [Nick Alcock brought this change]
4009
4010  Fix UDP and TCP port byte order in saved options.
4011
4012  The UDP and TCP port are stored in network byte order in the
4013  ares_channeldata, but are passed in to ares_init_options() in host byte
4014  order.  Thus we must return them from ares_save_options() in host byte
4015  order too, or a duplicated channel will convert them again, leading to a
4016  nonfunctional channel and a mysterious connection refused error from
4017  ares_gethostbyname().  This breaks ares_dup(), thus the curl easy API
4018  when c-ares is used by curl, and thus all the curl easy API's users.
4019
4020Yang Tse (28 Apr 2012)
4021- version: start working on 1.8.1-DEV
4022
4023Version 1.8.0 (27 Apr 2012)
4024
4025Daniel Stenberg (27 Apr 2012)
4026- RELEASE-NOTES: call next 1.8 instead
4027
4028  Since we added a function, let's use a stricter bumping scheme
4029
4030Yang Tse (25 Apr 2012)
4031- INSTALL: some adjustments
4032
4033Daniel Stenberg (25 Apr 2012)
4034- GIT-INFO: mention buildconf
4035
4036Yang Tse (25 Apr 2012)
4037- INSTALL: remove more sections that don't apply to c-ares
4038
4039- ares_timeout.c: fix compiler warning
4040
4041Daniel Stenberg (25 Apr 2012)
4042- [Ben Noordhuis brought this change]
4043
4044  Makefile.m32: fix mingw32 build
4045
4046  * add . to include path so ares_build.h is picked up
4047  * make ar configurable to ease cross-compiling
4048
4049- RELEASE-NOTES: added what's happened since 1.7.5
4050
4051Guenter Knauf (22 Apr 2012)
4052- Updated copyright year.
4053
4054Yang Tse (21 Apr 2012)
4055- ares_init.c: Further refactoring of Windows system's DNS fetching code
4056
4057Guenter Knauf (20 Apr 2012)
4058- Android: small changes to dns property part.
4059
4060  Prefix prop vars; kill var; use DNS_PROP_NAME_PREFIX macro.
4061
4062- Handle CNAME-only in ares_parse_aaaa_reply().
4063
4064  posted to the c-ares list by Peter Griess <pg@std.in>.
4065
4066- Add support for multiple DNS servers on Android.
4067
4068  Before, c-ares always used the first DNS server on Android, causing
4069  network problems if this DNS server was not available.
4070
4071  Signed-off-by: Geert Uytterhoeven <Geert.Uytterhoeven@sonycom.com>
4072
4073- Added INSTALL so it gets into tarballs.
4074
4075- Added some more ifdefs to silent compiler warnings.
4076
4077Yang Tse (17 Apr 2012)
4078- INSTALL: remove a non c-ares section
4079
4080- cares-compilers.m4: -Wno-pedantic-ms-format for Windows gcc 4.5 builds
4081
4082  When building a Windows target with gcc 4.5 or newer and strict compiler
4083  warnings enabled use -Wno-pedantic-ms-format in addition to other flags.
4084
4085- setup_once.h: tighten requirements for stdbool.h header inclusion
4086
4087  Include stdbool.h only when it is available and configure is capable of
4088  detecting a proper 'bool' data type when the header is included.
4089
4090- configure: NATIVE_WINDOWS no longer defined in config file
4091
4092- cares-compilers.m4: double underscore decoration for visibility attribute
4093
4094- build adjustments: CARES_SYMBOL_HIDING no longer defined in config files
4095
4096  configure script now provides conditional definitions for Makefile.am
4097  that result in CARES_SYMBOL_HIDING being defined by resulting makefiles
4098  when appropriate.
4099
4100- configure: Windows cross-compilation fixes
4101
4102  CARES_BUILDING_LIBRARY and CARES_STATICLIB no longer defined in ares_config.h,
4103  configure will generate appropriate conditionals so that mentioned symbols
4104  get defined and used in Makefile derived from Makefile.am at compilation time.
4105
4106Guenter Knauf (17 Apr 2012)
4107- Added INSTALL file adapted from libcurl.
4108
4109  Not yet ready, and needs further edits.
4110
4111Yang Tse (16 Apr 2012)
4112- ares_init.c: get_iphlpapi_dns_info() refactoring
4113
4114Guenter Knauf (16 Apr 2012)
4115- Kill some more compiler warnings.
4116
4117- Kill compiler warning about unused var.
4118
4119- Fixed my last commit: wrong preprocessor directive.
4120
4121- Check for __ANDROID__ in addition to ANDROID macro.
4122
4123- Check for __ANDROID__ in addition to ANDROID macro.
4124
4125  Posted to c-ares list by Wayne.
4126
4127- Fix for Android to disable useless arpa/nameser.h.
4128
4129- Fix for Android to include sys/select.h for fd_set.
4130
4131Yang Tse (17 Mar 2012)
4132- ares_data.c: some NAPTR related fixes
4133
4134Daniel Stenberg (16 Mar 2012)
4135- port numbers: convert them to network order!
4136
4137  When the config options ARES_OPT_UDP_PORT or ARES_OPT_TCP_PORT are used,
4138  make sure to convert them to network byte order!
4139
4140  Bug: http://c-ares.haxx.se/mail/c-ares-archive-2012-02/0004.shtml
4141
4142- white space cleanup
4143
4144  - Keep code within 80 columns
4145
4146  - Removed funny spaces after open paren and before closing paren
4147
4148- [Poul Thomas Lomholt brought this change]
4149
4150  get_iphlpapi_dns_info: fix buffer overrun
4151
4152  I experienced a buffer overrun exception in c-ares on Windows and
4153  tracked it down to be an error in the calculation of the 'left' variable
4154  in get_iphlpapi_dns_info().
4155
4156  I changed the variable type of 'left' to a _signed_ type because of the
4157  subtraction arithmetic; not sure if a long is the best choice
4158
4159- Merge pull request #7 from saghul/naptr
4160
4161  Added support for parsing NAPTR records
4162
4163saghul (23 Feb 2012)
4164- Added support for parsing NAPTR records
4165
4166Yang Tse (19 Jan 2012)
4167- ares_init.c: fix compiler warning on winsock builds
4168
4169- configure: libtool 1.5 tweaks
4170
4171Daniel Stenberg (19 Dec 2011)
4172- ares_timeout.3: fix the NAME section
4173
4174  It was clearly a copy n' paste error
4175
4176Yang Tse (27 Sep 2011)
4177- [Albert Chin brought this change]
4178
4179  configure - m4: make CURL_CHECK_DEF ignore leading whitespace on symbol def
4180
4181  When using Sun C compiler the preprocessor somehow inserts an extra space
4182  in front of replaced symbol, breaking CURL_CHECK_DEF macro. To workaround
4183  this, macro CURL_CHECK_DEF now ignores all leading whitespace in front of
4184  symbol substitution result.
4185
4186- ares_init.c: fix segfault triggered in ares_init_options() upon previous
4187               failure of init_by_defaults() and incomplete cleanup there.
4188
4189- ares_process.c: fix compiler warning
4190
4191- fix MSVC compiler warning 'conditional expression is constant'
4192
4193- setup_once.h cleanup and sync
4194
4195- [Denis Bilenko brought this change]
4196
4197  ares_getnameinfo: fix random results with c-ares 1.7.5
4198
4199  In ares_getnameinfo memcpy did not copy enough bytes, causing
4200  it to return arbitrary memory contents as a result.
4201
4202- warnings: fix another 'conversion may lose significant bits' compiler warning
4203
4204- ares_dns.h: adjust DNS__16BIT and DNS__32BIT macro definitions
4205
4206  Fixing compiler warnings existing definitions triggered on these.
4207
4208- ares_destroy.c: fix segfault in ares_destroy_options()
4209
4210Daniel Stenberg (21 Aug 2011)
4211- ares_parse_srv_reply: silence compiler warnings
4212
4213  ... by adding ugly typecasts.
4214
4215- CHANGES: generate from script
4216
4217  The CHANGES file is now generated automatically with 'git2changes.pl',
4218  invoked by the maketgz script which is used to build release archives.
4219
4220  The former human edited CHANGES file was renamed to CHANGES.0 in git.
4221
4222Yang Tse (21 Aug 2011)
4223- Makefile.netware: SIZEOF_SHORT definition
4224
4225- warnings: fix some 'conversion may lose significant bits' compiler warnings
4226
4227- configure: fix symbol hiding usability check
4228
4229  A more thorough test is done now in order to determine visibility attribute
4230  usability, given that some compilers don't support visibility attribute on
4231  all configurations.
4232
4233Daniel Stenberg (16 Aug 2011)
4234- 1.7.6: start working...
4235
4236Version 1.7.5 (16 Aug 2011)
4237
4238Daniel Stenberg (16 Aug 2011)
4239- CHANGES: synced for 1.7.5 release
4240
4241- RELEASE-NOTES: synced with bb4096effef7f000
4242
4243Jakub Hrozek (15 Aug 2011)
4244- Only fall back to AF_INET searches when looking for AF_UNSPEC addresses
4245
4246Yang Tse (10 Aug 2011)
4247- [Gisle Vanem brought this change]
4248
4249  ares_iphlpapi.h: Watcom C fix
4250
4251    Added "!defined(_WS2DEF_)" since Watcom doesn't have
4252    a per type guard for the typedefs 'CSADDR_INFO' (that MingW has) or
4253    'SOCKET_ADDRESS' (that MSVC has). But we can use the header-guard for
4254    <ws2def.h> instead.
4255
4256- [Gisle Vanem brought this change]
4257
4258  Makefile.Watcom:
4259    * The 'NTDDI_VERSION' needs to be raised to 0x05010000
4260      in order for SOCKADDR_STORAGE etc. to be typedefed.
4261    * Replaced '-dUSE_WATT32' with '-dWATT32'.
4262    * Added $(DEMOS) to the 'all' target and removed the 'demos'
4263      target to be consistent with e.g. Makefile.msvc etc.
4264    * 'ENABLE_IPV6' is no longer used. Hence removed the '%use_ipv6' construct.
4265    * object-file order seems to be important (Watcom v.19). Hence
4266      'ares_getopt.obj' must be put after the .obj that references getopt().
4267
4268- cares-compilers.m4: CARES_CONVERT_INCLUDE_TO_ISYSTEM adjustments
4269
4270  Add CARES_CHECK_COMPILER as a requirement.
4271
4272  Ensure macro does nothing unless GNU_C or CLANG compiler is used.
4273
4274  This should allow usage of this macro in unforeseen placements.
4275
4276- config-win32.h: comments adjustments - followup
4277
4278- config-win32.h: comments adjustments
4279
4280Daniel Stenberg (5 Aug 2011)
4281- [Tom Hughes brought this change]
4282
4283  ares_parse_a_reply: fix memleak
4284
4285Yang Tse (29 Jul 2011)
4286- cares-functions.m4 serial # bump
4287
4288- Revert "configure: additional flag checks for fcntl() and socket()"
4289
4290  This reverts commit 5f2a3b0e48f26d24cb1fefea0dccb92d417dcbf7.
4291
4292- configure: additional flag checks for fcntl() and socket()
4293
4294- xc-translit.m4 fix quoting
4295
4296- configure: avoid direct usage of AS_TR_* macros
4297
4298- xc-translit.m4 provides transliteration macros with well defined behavior.
4299
4300Jakub Hrozek (15 Jun 2011)
4301- Revert "Only fall back to AF_INET searches when looking for AF_UNSPEC addresses"
4302
4303  This reverts commit b5823d65706af687c0e5110af8f0cfdcd068997d.
4304
4305  This patch was not reviewed properly before pushing
4306
4307- Revert "Do not use sized constants in public headers"
4308
4309  This reverts commit 22c01e96f7b2ae9923e1baa50bfe3c0d22297a7d.
4310
4311  This is a Red Hat specific patch that does not belong into upstream
4312
4313- Use correct sizeof in ares_getnameinfo()
4314
4315- Do not leak rr_name on failures inside ares_parse_ptr_reply
4316
4317- Do not leak rr_name on failures inside ares_parse_a_reply
4318
4319- Do not leak rr_name on failures inside ares_parse_aaaa_reply
4320
4321- Do not leak rr_name on failures inside ares_parse_ns_reply
4322
4323- Fix incorrect sizeof() in ares_save_options
4324
4325- Fix incorrect allocation in ares_parse_ptr_reply()
4326
4327- Only fall back to AF_INET searches when looking for AF_UNSPEC addresses
4328
4329- Do not use sized constants in public headers
4330
4331Daniel Stenberg (13 Jun 2011)
4332- [Jakub Hrozek brought this change]
4333
4334  ares_free_hostent(NULL) should be a noop
4335
4336Yang Tse (8 Jun 2011)
4337- configure: fix recvfrom 5th arg type qualifier detection (followup)
4338
4339- configure: fix recvfrom 5th arg type qualifier detection
4340
4341  Additionally remove whitespace from EOL
4342
4343Daniel Stenberg (4 Jun 2011)
4344- strlen: use size_t to receive the return
4345
4346Yang Tse (4 Jun 2011)
4347- xlc: avoid preprocessor definition usage when linking
4348
4349- ares_nowarn: icc 9.1 workaround
4350
4351- ares_nowarn: header inclusion fix
4352
4353- ares_init: make ares_private.h last included header again
4354
4355- compiler warning: fix
4356
4357  Fix compiler warning: conversion may lose significant bits
4358
4359- compiler warning: fix
4360
4361  Fix compiler warning: variable was set but never used
4362
4363  Fix compiler warning: clobber ignored
4364
4365- ares_iphlpapi: fix compiler warnings
4366
4367- winsock: compilation fixes
4368
4369  Provide winsock iphlpapi alternative definitions to prevent compilation
4370  failures when using a variety of winsock header implementations.
4371
4372Daniel Stenberg (17 May 2011)
4373- [David Stuart brought this change]
4374
4375  IPv6-on-windows: find DNS servers correctly
4376
4377- man pages: docs for the c-ares utility programs
4378
4379- ares_parse_ns_reply.c: remove CVSism
4380
4381Yang Tse (27 Mar 2011)
4382- build: fix header inclusion
4383
4384- getservbyport replacement for Win CE
4385
4386- renamed getplatform() to ares__getplatform() to avoid namespace pollution
4387
4388- configure: fix libtool warning
4389
4390  Recent versions of libtool are now tracing usage of AC_CONFIG_MACRO_DIR
4391  macro and warn heavily when not used in configure script along with
4392  ACLOCAL_AMFLAGS in Makefile.am.  So in order to make libtool happy
4393  while keeping backwards compatibility this is added.
4394
4395- adig: RFC4034 resource record type detection
4396
4397  Can be tested with: adig -s 8.8.8.8 -t ANY example.com
4398
4399- nameser.h: RFC4034 resource record type definitions
4400
4401- build: move platform stuff to ares_platform.c and ares_platform.h
4402
4403- build: find out windows platform using GetVersionEx()
4404
4405- build: use getenv() replacement function for systems which lack it
4406
4407- setup_once: system error codes for Windows CE
4408
4409- ares_search: use ERRNO macro for portability sake
4410
4411- System's errno.h inclusion cleanup follow-up.
4412
4413  System's errno.h is conditionally included from setup_once.h
4414
4415- Windows CE specific adjustment
4416
4417  All versions of Windows CE support Winsock 1.1
4418
4419- System's errno.h inclusion cleanup.
4420
4421  System's errno.h is conditionally included from setup_once.h
4422
4423- ares_init: fix gethostname error detection on winsock platforms
4424
4425- configure: r-enable temporarily disabled detection of system's inet_ntop()
4426
4427  Detection was temporarily disabled in commit 674e044ccb21f2f63537da53565fce868f
4428
4429Daniel Stenberg (15 Mar 2011)
4430- configure: stop using the deprecated AM_INIT_AUTOMAKE syntax
4431
4432- [Gisle Vanem brought this change]
4433
4434  Watt-32: use errno
4435
4436  Make sure Watt-32 programs use 'errno' even on Win32 targets
4437
4438Guenter Knauf (18 Feb 2011)
4439- Removed commented CLFAGS no longer needed.
4440
4441- Fixed CFLAGS for NetWare.
4442
4443  Added -m32 to enable compilation with x86_64 compilers;
4444  added conditional to set -fpcc-struct-return only for gcc compiler.
4445
4446Daniel Stenberg (18 Feb 2011)
4447- [Gisle Vanem brought this change]
4448
4449  Watt32: fix server init
4450
4451  Somewhere in the process, programs using the Watt-32 tcp/ip stack
4452  stopped working.
4453
4454- [Dima Tisnek brought this change]
4455
4456  config_sortlist: (win32) missing else
4457
4458  Without an else there, contents of "pat" that could have been
4459  successfully set just above, may be clobbered by successive unsuccessful
4460  calls to "xxx_pton" or "ip_addr".
4461
4462Yang Tse (17 Jan 2011)
4463- Makefile.msvc: add a couple of VS version strings
4464
4465- Makefile.msvc: add a couple of VS version strings
4466
4467- build: add install target to Makefile.msvc
4468
4469Daniel Stenberg (27 Dec 2010)
4470- ares_set_servers_csv: remove unused variables
4471
4472- init_by_resolv_conf: fix compiler warnings
4473
4474  The code received the return codes in the 'status' variable without
4475  using it. Instead we just ignore those particular errors.
4476
4477- getv4: Value stored to 'dst' is never read
4478
4479- advance_tcp_send_queue: avoid NULL ptr dereference
4480
4481  If given a too large 'num_bytes' value, it would cause a NULL ptr
4482  dereference. Instead the code will now break out of the loop at the end
4483  of the list.
4484
4485- [Peter Pentchev brought this change]
4486
4487  configure: fix a bashism
4488
4489- cleanup: avoid unsafe typecasts
4490
4491  Avoid the risk of reading 16bit data from an unaligned address by using
4492  a macro that is adapted for this.
4493
4494- [Stefan Bühler brought this change]
4495
4496  ares_expand_name: Fix encoded length for indirect root
4497
4498Yang Tse (18 Dec 2010)
4499- build: add some explicit file references to VS project files
4500
4501- config-win32: provide HAVE_ASSERT_H definition
4502
4503- build: include ares_nowarn in sample program VS project files
4504
4505- build: include ares_nowarn among SAMPLESOURCES and SAMPLEHEADERS
4506
4507- configure: temporarily disable detection of system's inet_ntop()
4508
4509  This is done to allow compilation of ares_inet_ntop() by some daily
4510  builds picky compilers that otherwise do not need this function.
4511
4512- changes: mention last fix
4513
4514- ares_inet_ntop: remove definition and usage of macro SPRINTF
4515
4516  Existing definition of SPRINTF always resulted in sprintf() being used,
4517  and sprintf() returning 'int' is already used throughout the library.
4518
4519- ares_inet_ntop: reapply changes from previous c-ares version (III)
4520
4521  - Replace 'u_char' with 'unsigned char'.
4522  - Replace 'u_int' with 'unsigned int'.
4523  - use macros ERRNO and SET_ERRNO() for errno handling.
4524
4525- ares_inet_ntop: reapply changes from previous c-ares version (II)
4526
4527  - Remove rcsid.
4528  - Adjust header file inclusions.
4529  - ares_inet_ntop used only on systems without a proper inet_ntop function.
4530
4531- ares_inet_ntop: reapply changes from previous c-ares version (I)
4532
4533  - Replace tabs with spaces.
4534  - Use ANSI C style for function declarations and definitions.
4535  - Use sizeof with parentheses.
4536
4537- ares_inet_ntop: fix off by one error triggering out of bounds write
4538
4539  ares_inet_ntop would trigger an out of bounds write when the representation
4540  of the address required 15 characters, due to not taking in account null
4541  termination character.
4542
4543  Full import of inet_ntop.c from bind-9.5.3rc1 to pull additional fixes.
4544
4545- ares_nowarn: add conditional inclusion of assert.h header
4546
4547- fix compiler warning: conversion may lose significant bits
4548
4549- ares_inet_net_pton: fix non-rejection of some malformed literals
4550
4551  ares_inet_net_pton would return wrong values when excessively large,
4552  and invalid, netmasks are used. Fixes are from bind-9.5.3rc1,
4553  issue also described in the WLB-2008080064 advisory.
4554
4555- setup_once: provide ISASCII macro
4556
4557- configure: inet_net_pton function check adjustments
4558
4559  Define HAVE_INET_NET_PTON only when system's inet_net_pton function is IPv6
4560  capable and is not affected by the WLB-2008080064 advisory.
4561
4562  HAVE_INET_NET_PTON_IPV6 is no longer defined nor used.
4563
4564- ares_init: fix detection of semicolon comments in resolv.conf
4565
4566  File resolv.conf may either use a hash '#' or a semicolon ';' character as an
4567  indication that the rest of the line is a comment.  This fixes not recognizing
4568  the semicolon as a valid comment indicator in resolv.conf.
4569
4570- version: start working on 1.7.5
4571
4572Version 1.7.4 (8 Dec 2010)
4573
4574Daniel Stenberg (8 Dec 2010)
4575- release-preps: CHANGES and RELEASE-NOTES synced
4576
4577- ares_set_local_*: added in 1.7.4, not before
4578
4579Yang Tse (3 Dec 2010)
4580- build: provide SIZEOF_SIZE_T definition for non-configure builds
4581
4582- build: config.dos renamed to config-dos.h
4583
4584- build: provide SIZEOF_SIZE_T netware definition
4585
4586- ares_gethostbyaddr: fix compiler warning: conversion may lose significant bits
4587
4588- configure: undo using autobuilds to temporarily verify strict aliasing warnings.
4589
4590- fix compiler warning: rounding, sign extension, or loss of accuracy may result
4591
4592Daniel Stenberg (2 Dec 2010)
4593- [Ben Noordhuis brought this change]
4594
4595  ares_parse_a_reply: fix CNAME response parsing
4596
4597  Reply to a CNAME query doesn't contain addresses, causing
4598  ares_parse_a_reply() to bail out with ARES_ENODATA
4599
4600  Bug: http://groups.google.com/group/nodejs/browse_thread/thread/a1268c9ea5e9ad9b
4601
4602Yang Tse (1 Dec 2010)
4603- fix compiler warning: conversion may lose significant bits
4604
4605- atoi: remove atoi usage
4606
4607- ares_init: fix compiler warning: conversion may lose significant bits
4608
4609- configure: fix autoconf warning
4610
4611- inet_pton: fix compiler warning
4612
4613- configure: use autobuilds to temporarily verify strict aliasing warnings.
4614
4615  Temporarily, When cross-compiling with gcc 3.0 or later, enable strict aliasing
4616  rules and warnings. Given that cross-compiled targets autobuilds do not run the
4617  test-suite, there is no risk of running code that violates strict aliasing rules
4618
4619- ares_getnameinfo: Partially revert commit 85520d66e0ac7ac73411bc25e98769a88b2f
4620
4621  Upon socket address family and length validation failure return ARES_ENOTIMP
4622  in callback again, this is the error code documented in man page and used
4623  mostly all over the library.
4624
4625- ares_getnameinfo: Validate socket address family and length.
4626
4627  Validate socket address family and that the socket address length is appropriate
4628  for the specified family. Failure is reported with ARES_EBADFAMILY in callback.
4629
4630- ares_getnameinfo: fix two compiler warnings
4631
4632- Added another VS10 version string
4633
4634- Fix GCC 4 compiler warning 'dereferencing type-punned pointer might break strict-aliasing rules'.
4635
4636- Revert commit 494274e653936335c255a47599970de3df21e7c4
4637
4638- configure: fix autoconf 2.68 warning: no AC_LANG_SOURCE call detected in body
4639
4640- Fix compiler warning: array subscript has type 'char'
4641
4642- Fix GCC 4 compiler warning 'dereferencing type-punned pointer might break strict-aliasing rules'.
4643
4644- Revert following commits:
4645    07bc7ea79509bcc9ef6e09151e81766ed00d3392
4646    3392a50ea3f8573ea4b7a9d82b9833dab60cb0e9
4647    9912637d32c9987719a1ea12db591aee2941891c
4648
4649  The purpose of the whole patch was to silence a compiler warning triggered
4650  with GCC 4 on file ares_process.c  The specific compiler warning was
4651  'dereferencing type-punned pointer might break strict-aliasing rules'.
4652
4653  A simpler patch will follow to equally silence the warning.
4654
4655- ares_options: reorder header inclusions to make inclusion of
4656  ares_private.h the last included one again.
4657
4658Daniel Stenberg (12 Nov 2010)
4659- [Patrik Thunstrom brought this change]
4660
4661  adig: fix NAPTR parsing
4662
4663  I ran across a small "issue" in your adig example.
4664
4665  It is simply the last part of the NAPTR record, the replacement element,
4666  which is not a string, as currently handled in adig, but a domain name.
4667
4668- ares_save_options: assignments instead of memcpy
4669
4670- init_by_options: don't copy an empty sortlist
4671
4672  If there aren't any sort items to copy, don't bother. Without this
4673  little precaution it would do a malloc(0) which causes undefined
4674  behaviors and is frowned upon by curl's memdebug-system.
4675
4676Guenter Knauf (3 Oct 2010)
4677- Minor Watcom makefile tweaks.
4678
4679Daniel Stenberg (30 Sep 2010)
4680- [Mike Crowe brought this change]
4681
4682  Fix lookup with HOSTALIASES set.
4683
4684  ares__read_line returns ARES_EOF when it reaches the end of the
4685  file. This will happen every time when reading to the end of the
4686  HOSTALIASES file. Unfortunately single_domain treats this error as
4687  being fatal.
4688
4689  Signed-off-by: Mike Crowe <mac@mcrowe.com>
4690
4691Ben Greear (24 Aug 2010)
4692- Add missing break that caused get_ares_servers to fail.
4693
4694  Reported-by: Ning Dong <flintning@163.com>
4695  Signed-off-by: Ben Greear <greearb@candelatech.com>
4696
4697Yang Tse (11 Aug 2010)
4698- configure: werror related adjustments
4699
4700Guenter Knauf (8 Aug 2010)
4701- Added copyright string to ares_version.h and make use of it in other files.
4702
4703- Block created ares_build.h for NetWare to avoid usage from other platforms.
4704
4705- Fix to overwrite default libname.
4706
4707- Some more Watcom makefile massage ...
4708
4709- Some more Watcom makefile massage ...
4710
4711Ben Greear (4 Aug 2010)
4712- sock-addr-storage:  Detect and deal with lack of .ss_family member.
4713
4714  AIX, at least, does not have sockaddr_storage.ss_family member.
4715  Detect this in the configure logic and use proper #ifdefs in the
4716  ares_process logic.
4717
4718  Signed-off-by: Ben Greear <greearb@candelatech.com>
4719  Tested-by: Tor Arntsen <tor@spacetec.no>
4720
4721Guenter Knauf (3 Aug 2010)
4722- Added Watcom makefile based on libcurl's Makefile.Watcom.
4723
4724Ben Greear (31 Jul 2010)
4725- typo:  Fix compile bug for platforms that don't have sockaddr_storage.
4726
4727  Bug was introduced by me in previous commit.
4728
4729  Signed-off-by: Ben Greear <greearb@candelatech.com>
4730
4731- Fix aliasing warning in gcc 4.4.4 (at least).
4732
4733  Should be no functional change, though the code gets a bit
4734  ugglier.
4735
4736  Signed-off-by: Ben Greear <greearb@candelatech.com>
4737
4738Daniel Stenberg (31 Jul 2010)
4739- ares_set_servers_csv: use ISDIGIT
4740
4741  The IS*() set of macros are preferred to the regular is*() functions as
4742  they help us avoid the most common pitfalls.
4743
4744Ben Greear (30 Jul 2010)
4745- cast arg to isdigit to int
4746
4747  Looks like it might silence a warning on Netware build.
4748
4749  Signed-off-by: Ben Greear <greearb@candelatech.com>
4750
4751- remove all uses of uint32_t
4752
4753  Previous fix forgot a few.
4754
4755  Signed-off-by: Ben Greear <greearb@candelatech.com>
4756
4757- fix signed v/s unsigned casts warning in ares_gethostbyaddr.c
4758
4759  Signed-off-by: Ben Greear <greearb@candelatech.com>
4760
4761- local-bind-fixup:  Fix inet_pton warning.
4762
4763  Conditionally include <arpa/inet.h> for inet_pton
4764  headers.
4765
4766  Signed-off-by: Ben Greear <greearb@candelatech.com>
4767
4768- build:  Enable compiling with -Werror.
4769
4770  This helps find compile warnings because they simply break
4771  the build.
4772
4773  To use:
4774  ./configure --enable-warnings --enable-werror
4775
4776  Signed-off-by: Ben Greear <greearb@candelatech.com>
4777
4778- ipv6: Fix some build issues related to the local-bind feature.
4779
4780  Signed-off-by: Ben Greear <greearb@candelatech.com>
4781
4782Guenter Knauf (29 Jul 2010)
4783- Replaced uint32_t with unsigned int to fix broken builds on a couple of platforms.
4784
4785Daniel Stenberg (18 Jul 2010)
4786- [Ben Greear brought this change]
4787
4788  local-bind:  Support binding to local interface/IPs
4789
4790  Add 3 new functions to set the local binding for the out-going
4791  socket connection, and add ares_set_servers_csv() to set a
4792  list of servers at once as a comma-separated string.
4793
4794  Signed-off-by: Ben Greear <greearb@candelatech.com>
4795
4796- version: now start on 1.7.4
4797
4798- [Andrew C. Morrow brought this change]
4799
4800  fix memory leak in ares_getnameinfo
4801
4802Version 1.7.3 (11 Jun 2010)
4803
4804Daniel Stenberg (11 Jun 2010)
4805- changelogs: updated for 1.7.3
4806
4807- [BogDan Vatra brought this change]
4808
4809  init: allow c-ares to work on Android OS
4810
4811- changelog: fill in the 1.7.2 changes
4812
4813- added another pdf to ignore
4814
4815Yang Tse (11 Jun 2010)
4816- add ares_parse_mx_reply.c to VS dsp file
4817
4818Daniel Stenberg (10 Jun 2010)
4819- tarball: add $(CSOURCES) $(HHEADERS) to EXTRA_DIST
4820
4821  It's not clear to me why we need this, but we apparently may
4822  otherwise not get all files bundled in the dist tarball.
4823
4824- version: start working on 1.7.3
4825
4826Version 1.7.2 (10 Jun 2010)
4827
4828Daniel Stenberg (10 Jun 2010)
4829- RELEASE-NOTES: 1.7.2 details added
4830
4831- [Jakub Hrozek brought this change]
4832
4833  ares_init: Last, not first instance of domain or search should win
4834
4835- style: make code less than 80 columns wide
4836
4837Yang Tse (31 May 2010)
4838- [Tor Arntsen brought this change]
4839
4840  improve alternative definition of bool to use enum instead of unsigned char
4841
4842- fix VS2010 compiler warnings
4843
4844Daniel Stenberg (18 Apr 2010)
4845- [Jérémy Lal brought this change]
4846
4847  added ares_parse_mx_reply
4848
4849- repair the file mode
4850
4851- remove all $Id$ lines
4852
4853- remove all .cvsignore files
4854
4855- spell fix
4856
4857  reported by Gregor Jasny on the mailing list
4858
4859- [Peter Pentchev brought this change]
4860
4861  Fix a couple of typos and grammar nits.
4862
4863- ignore the GPG signature files too
4864
4865- start the journey towards 1.7.2
4866
4867- no longer CVS tagging
4868
4869- ignore generated PDFs
4870
4871Version 1.7.1 (23 Mar 2010)
4872
4873Daniel Stenberg (23 Mar 2010)
4874- 1.7.1
4875
4876- made README the primary readme file
4877
4878  ... and did README.cares to contain a historic reason etc.
4879
4880- s/CVS/git
4881
4882- git now, not CVS
4883
4884- ignore lots of generated files
4885
4886- [Daniel Johnson brought this change]
4887
4888  Fix warnings for clang
4889
4890Yang Tse (17 Mar 2010)
4891- replaced intel compiler option -no-ansi-alias with -fno-strict-aliasing
4892
4893- update outdated serial number
4894
4895- fix compiler warning
4896
4897- watt32 compilation fix
4898
4899- Added another VS10 version string
4900
4901- fix line break
4902
4903- removed usage of 's6_addr', fixing compilation issue triggered with no
4904  longer using 'in6_addr' but only our 'ares_in6_addr' struct
4905
4906Daniel Stenberg (5 Mar 2010)
4907- Daniel Johnson provided fixes for building with the clang compiler
4908
4909Yang Tse (5 Mar 2010)
4910- Added IPv6 name servers support
4911
4912Gisle Vanem (5 Mar 2010)
4913- Ops!. Readded ares_nowarn.h.
4914
4915- Added ares_nowarn.c.
4916
4917Yang Tse (28 Feb 2010)
4918- Added SIZEOF_INT and SIZEOF_SHORT definitions for non-configure systems
4919
4920- Added ares_nowarn.* to VC6 project file
4921
4922- Added SIZEOF_INT definition
4923
4924- fix compiler warning
4925
4926- fix compiler warning
4927
4928- fix compiler warning
4929
4930Daniel Stenberg (17 Feb 2010)
4931- ares_reinit()
4932
4933  - To allow an app to force a re-read of /etc/resolv.conf etc, pretty much
4934    like the res_init() resolver function offers
4935
4936- - Tommie Gannert pointed out a silly bug in ares_process_fd() since it didn't
4937    check for broken connections like ares_process() did. Based on that, I
4938    merged the two functions into a single generic one with two front-ends.
4939
4940Yang Tse (30 Dec 2009)
4941- VMS specific preprocessor symbol checking adjustments
4942
4943- Mention last changes
4944
4945- - Fix configure_socket() to use ares_socket_t instead of int data type.
4946
4947- - Where run-time error checks enabling compiler option /GZ was used it is now
4948    replaced with equivalent /RTCsu for Visual Studio 2003 and newer versions.
4949
4950  - Compiler option /GX is now replaced with equivalent /EHsc for all versions.
4951
4952- - Ingmar Runge noticed that Windows config-win32.h configuration file
4953    did not include a definition for HAVE_CLOSESOCKET which resulted in
4954    function close() being inappropriately used to close sockets.
4955
4956Daniel Stenberg (30 Nov 2009)
4957- start working on 1.7.1
4958
4959Version 1.7.0 (27 Nov 2009)
4960
4961Yang Tse (27 Nov 2009)
4962- Preserve empty line following last target
4963
4964- - Larry Lansing fixed ares_parse_srv_reply to properly parse replies
4965    which might contain non-SRV answers, skipping over potential non-SRV
4966    ones such as CNAMEs.
4967
4968- When using icc, compile with -fpic and link with intel dynamic libraries.
4969
4970- Added 'currently' in italics to insist on transient situation.
4971
4972- Fix language
4973
4974- Daniel wants upcoming release to be 1.7.0
4975
4976- Mention last changes
4977
4978- - Removed from external interface preprocessor symbol definition for
4979    CARES_HAVE_ARES_FREE_DATA. Current functionality of ares_free_data()
4980    makes it unnecessary.
4981
4982- Added README.msvc
4983
4984- Changed c-ares naming conventions when using MSVC as described in README.msvc
4985
4986- - Mention other recent changes
4987
4988- - Jakub Hrozek renamed addrttl and addr6ttl structs to ares_addrttl and
4989    ares_addr6ttl in order to prevent name space pollution, along with
4990    necessary changes to code base and man pages.This change does not break
4991    ABI, there is no need to recompile existing applications. But existing
4992    applications using these structs with the old name will need source code
4993    adjustments when recompiled using c-ares 1.6.1.
4994
4995- - Jakub Hrozek fixed more function prototypes in man pages to sync them
4996    with the ones declared in ares.h
4997
4998- Make configure remove the ares_build.h file included in distribution tarballs.
4999
5000- Fix macro redefinition.
5001
5002- Fix name space pollution.
5003
5004- Allow using different extra import libraries for debug and release builds.
5005
5006- Add manifest stuff to msvc makefile
5007
5008- Sync man page with reality
5009
5010- Add missing external API decoration for ares_set_socket_callback()
5011
5012- Add ares_free_data() man page.
5013
5014- - Provide in external interface preprocessor symbol definitions for
5015    CARES_HAVE_ARES_FREE_DATA as an indication of function availability.
5016
5017- Remove typecast
5018
5019- Fix comment
5020
5021- Add ares_data.c and ares_data.h
5022
5023- Jakub Hrozek modified ares_parse_srv_reply() and ares_parse_txt_reply() API
5024  to return a linked lists of results. These were also modified to internally
5025  use the ares_data memory struct and as such its result must be free'ed with
5026  ares_free_data().
5027
5028- Initial support for the generic ares_free_data() function that will allow
5029  applications to free memory allocated and returned by some c-ares funtions.
5030
5031- Make usage of calloc()'s arguments consistent with rest of code base
5032
5033- workaround icc 9.1 optimizer issue
5034
5035- Add icc fvisibility bug test
5036
5037- Fix icc 9.0 compiler warning: external definition with no prior declaration
5038
5039- Fix three var names
5040
5041- Add check for assert.h header file
5042
5043- getaddrinfo is fully thread safe on solaris versions which
5044  implement the function even when h_errno is not a macro.
5045
5046  The h_errno macro test now only done on systems for which there
5047  is no hard coded knowledge about getaddrinfo's thread safeness.
5048
5049- Remove files generated on previous buildconf/configure run
5050
5051- Remove enable-thread / disable-thread configure option. These were only placebo
5052  options. The library is always built as thread safe as possible on every system.
5053
5054- Refactor how preprocessor symbol _THREAD_SAFE definition is done.
5055
5056- Assume that getaddrinfo is thread safe, unless hard coded
5057  knowledge says the contrary or h_errno is not defined.
5058
5059- Related with the threadsafe capability of getaddrinfo:
5060
5061  - Constantine Sapuntzakis reported that Darwin 6.0 a.k.a. MAC OS X 10.2
5062    and newer have a threadsafe getaddrinfo.
5063
5064  - Fix Dragonfly BSD triplet detection.
5065
5066  - In case the hard-coded knowledge says that getaddrinfo is threadsafe,
5067    an additional check is done to verify that h_errno is also defined.
5068    If h_errno isn't defined, we finally assume that it isn't threadsafe.
5069    Jamie Lokier provided the inspiration for this extra check.
5070
5071- AIX 5.2 and newer have threadsafe getaddrinfo.
5072
5073  Add some comments to better understand what the regex's pretend to achieve.
5074
5075- HP-UX 11.11 and later have threadsafe getaddrinfo
5076
5077- Check if getaddrinfo is threadsafe when function check allows it to be used
5078
5079- Renamed fpGetNetworkParams and fpSystemFunction036 to avoid namespace pollution with static library
5080
5081- Add kernel32.lib
5082
5083- Mention last changes
5084
5085- Reinstate copyright symbol lost in previous commit
5086
5087- Make some strings different in resource file for debug or release builds
5088
5089- Ignore more subdirs
5090
5091- Fix compiler warning: conditional expression is constant
5092
5093- Sync linker and resource compiler options with Makefile.msvc
5094
5095- Follow Makefile.msvc subdirectory naming scheme, and sync compiler options
5096
5097- Updated MSVC makefile that allows building dynamic and static
5098  c-ares libraries in debug and release flavours.
5099
5100  Additionally each of the three sample programs is built against
5101  each of the four possible c-ares libraries, generating all this
5102  a total number of 12 executables and 4 libraries.
5103
5104- Test for USE_WINSOCK since it is more restrictive than WIN32
5105
5106- Make header inclusion depend on HAVE_*_H definition
5107
5108- Remove unneeded preprocessor directives
5109
5110- Adjust c-ares include paths for memory tracking enabled (--enable-curldebug) builds
5111
5112- source files used by sample programs
5113
5114- Renamed c-ares setup.h to ares_setup.h
5115
5116- Adjust include paths to take in account that currently:
5117
5118  c-ares with --enable-curldebug uses memdebug.h from libcurl's lib subdirectory.
5119
5120  memdebug.h needs access to libcurl's setup.h from libcurl's lib subdirectory
5121  and also needs access to libcurl's generated curl_config.h
5122