James Brotchie wrote:
Hi,

Currently (as of 3.1.0.14) Squid's inbuilt resolver only respects the
last domain or search directive in /etc/resolv.conf.

Before each search or domain directive is processed idnsFreeSearchpath
(in dns_internal.cc) is called, clearing any existing search paths.
The desired behaviour in our scenario is to append all domain and
search directives to the list of resolver search paths.

Removing the idnsFreeSearchpath calls at dns_internal.cc:321,331 makes
squid behave as desired.

Does anyone know the rationale behind throwing away the search path
prior to processing each resolv.conf directive? Is this simply a
bug/oversight? Should a configuration option be added at compile time
or in squid.conf to adjust this behaviour?


From the specs:

"
the desired domain search path following the search keyword with spaces or tabs separating the names
"
...
"
The domain and search keywords are mutually exclusive. If more than one instance of these keywords is present, the last instance wins.
"



EXAMPLE
=======
--- start /etc/resolv.conf ---

search nb
search test.com
search extra.domain.net
nameserver 127.0.0.1

--- end /etc/resolv.conf ---


Entering your example config into my /etc/resolv.conf and then pulling the resolver config out of the OS I get:

## nslookup
## > set all
Default server: 127.0.0.1
Address: 127.0.0.1#53

Set options:
  novc                  nodebug         nod2
  search                recurse
  timeout = 0           retry = 3       port = 53
  querytype = A         class = IN
  srchlist = extra.domain.net



Here is a working multiple-domain resolv.conf based on your intended search list:

--- start /etc/resolv.conf ---

 search nb test.com extra.domain.net
 nameserver 127.0.0.1

--- end /etc/resolv.conf ---

The OS resolver reports:

## nslookup
## > set all
Default server: 127.0.0.1
Address: 127.0.0.1#53

Set options:
  novc                  nodebug         nod2
  search                recurse
  timeout = 0           retry = 3       port = 53
  querytype = A         class = IN
  srchlist = nb/test.com/extra.domain.net



Amos
--
Please be using
  Current Stable Squid 2.7.STABLE7 or 3.0.STABLE20
  Current Beta Squid 3.1.0.15

Reply via email to