ares_init: Last, not first instance of domain or search should win
authorJakub Hrozek <jhrozek@redhat.com>
Mon, 31 May 2010 14:32:54 +0000 (16:32 +0200)
committerDaniel Stenberg <daniel@haxx.se>
Wed, 2 Jun 2010 21:12:04 +0000 (23:12 +0200)
CHANGES
ares_init.3
ares_init.c

diff --git a/CHANGES b/CHANGES
index 0d39580..82a5193 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -2,6 +2,9 @@
 
 Version 1.7.1 (Mar 23, 2010)
 
+* May 31, 2010 (Jakub Hrozek)
+- Use the last instance of domain/search, not the first one
+
 * March 23, 2010 (Daniel Stenberg)
 - We switched from CVS to git. See http://github.com/bagder/c-ares
 
index 00ff36d..fb25306 100644 (file)
@@ -109,7 +109,7 @@ or the domain derived from the kernel hostname variable.
 .B ARES_OPT_LOOKUPS
 .B char *\fIlookups\fP;
 .br
-The lookups to perform for host queries.  
+The lookups to perform for host queries.
 .I lookups
 should be set to a string of the characters "b" or "f", where "b"
 indicates a DNS lookup and "f" indicates a lookup in the hosts file.
@@ -189,6 +189,27 @@ The process's available memory was exhausted.
 .TP 14
 .B ARES_ENOTINITIALIZED
 c-ares library initialization not yet performed.
+.SH NOTES
+When initializing from
+.B /etc/resolv.conf,
+.BR ares_init (3)
+reads the
+.I domain
+and
+.I search
+directives to allow lookups of short names relative to the domains
+specified. The
+.I domain
+and
+.I search
+directives override one another. If more that one instance of either
+.I domain
+or
+.I search
+directives is specified, the last occurence wins. For more information,
+please see the
+.BR resolv.conf (5)
+manual page.
 .SH SEE ALSO
 .BR ares_destroy(3),
 .BR ares_dup(3),
index 1f561aa..9d1e447 100644 (file)
@@ -839,11 +839,11 @@ DhcpNameServer
     if (fp) {
       while ((status = ares__read_line(fp, &line, &linesize)) == ARES_SUCCESS)
       {
-        if ((p = try_config(line, "domain")) && channel->ndomains == -1)
+        if ((p = try_config(line, "domain")))
           status = config_domain(channel, p);
         else if ((p = try_config(line, "lookup")) && !channel->lookups)
           status = config_lookup(channel, p, "bind", "file");
-        else if ((p = try_config(line, "search")) && channel->ndomains == -1)
+        else if ((p = try_config(line, "search")))
           status = set_search(channel, p);
         else if ((p = try_config(line, "nameserver")) && channel->nservers == -1)
           status = config_nameserver(&servers, &nservers, p);