Fix search domain order - RHBZ #597286

This commit is contained in:
Jakub Hrozek 2010-06-03 12:00:25 +00:00
parent ac7f48ff81
commit d6fe1b4f2a
2 changed files with 73 additions and 1 deletions

View File

@ -0,0 +1,67 @@
From 125b1a8619eb27556e093fd9c9adf451e896f012 Mon Sep 17 00:00:00 2001
From: Jakub Hrozek <jhrozek@redhat.com>
Date: Mon, 31 May 2010 16:32:54 +0200
Subject: [PATCH] ares_init: Last, not first instance of domain or search should win
diff --git a/ares_init.3 b/ares_init.3
index 00ff36d..fb25306 100644
--- a/ares_init.3
+++ b/ares_init.3
@@ -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),
diff --git a/ares_init.c b/ares_init.c
index 1f561aa..9d1e447 100644
--- a/ares_init.c
+++ b/ares_init.c
@@ -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);
--
1.6.6.1

View File

@ -1,13 +1,14 @@
Summary: A library that performs asynchronous DNS operations
Name: c-ares
Version: 1.7.1
Release: 1%{?dist}
Release: 2%{?dist}
License: MIT
Group: System Environment/Libraries
URL: http://c-ares.haxx.se/
Source0: http://c-ares.haxx.se/c-ares-%{version}.tar.gz
Source1: LICENSE
Patch0: %{name}-1.7.0-optflags.patch
Patch1: 0001-ares_init-Last-not-first-instance-of-domain-or-searc.patch
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
%description
@ -28,6 +29,7 @@ compile applications or shared objects that use c-ares.
%prep
%setup -q
%patch0 -p1 -b .optflags
%patch1 -p1 -b .search
cp %{SOURCE1} .
f=CHANGES ; iconv -f iso-8859-1 -t utf-8 $f -o $f.utf8 ; mv $f.utf8 $f
@ -64,6 +66,9 @@ rm -rf $RPM_BUILD_ROOT
%{_mandir}/man3/ares_*
%changelog
* Thu Jun 3 2010 Jakub Hrozek <jhrozek@redhat.com> - 1.7.1-2
- Use last instance of search/domain, not the first one (#597286)
* Tue Mar 23 2010 Jakub Hrozek <jhrozek@redhat.com> - 1.7.1-1
- update to 1.7.1 which contains the IPv6 nameserver patch