* fixed #9402 and removed limitation of 4 dns servers

git-svn-id: trunk@8258 -
This commit is contained in:
Jonas Maebe 2007-08-10 20:39:02 +00:00
parent 494fb81dd8
commit 5bcda6d18a

View File

@ -38,7 +38,6 @@ Type
Const
DNSPort = 53;
MaxServers = 4;
MaxResolveAddr = 10;
SResolveFile = '/etc/resolv.conf';
SServicesFile = '/etc/services';
@ -50,7 +49,7 @@ Const
MaxIP4Mapped = 10;
Type
TDNSServerArray = Array[1..MaxServers] of THostAddr;
TDNSServerArray = Array of THostAddr;
TServiceEntry = record
Name : String;
Protocol : String;
@ -96,7 +95,6 @@ Type
Var
DNSServers : TDNSServerArray;
DNSServerCount : Integer;
DefaultDomainList : String;
CheckResolveFileAge : Boolean;
CheckHostsFileAge : Boolean;
@ -482,13 +480,15 @@ begin
H:=HostToNet(StrToHostAddr(L));
If (H.s_bytes[1]<>0) then
begin
Inc(Result);
setlength(DNSServers,Result+1);
DNSServers[Result]:=H;
Inc(Result);
end
else if FindHostEntryInHostsFile(L,H,E) then
begin
Inc(Result);
setlength(DNSServers,Result+1);
DNSServers[Result]:=E.Addr;
Inc(Result);
end;
end
else if CheckDirective('domain') then
@ -499,7 +499,6 @@ begin
Finally
Close(R);
end;
DNSServerCount:=Result;
end;
Procedure CheckResolveFile;
@ -834,9 +833,9 @@ Var
begin
CheckResolveFile;
I:=1;
I:=0;
Result:=0;
While (Result<=0) and (I<=DNSServerCount) do
While (Result<=0) and (I<=high(DNSServers)) do
begin
Result:=ResolveNameAt(I,HostName,Addresses,0);
Inc(I);
@ -916,9 +915,9 @@ var
i: Integer;
begin
CheckResolveFile;
i := 1;
i := 0;
Result := 0;
while (Result <= 0) and (I<= DNSServerCount) do begin
while (Result <= 0) and (I<= high(DNSServers)) do begin
Result := ResolveNameAt6(I, Hostname, Addresses, 0);
Inc(i);
end;
@ -969,11 +968,11 @@ Var
begin
CheckResolveFile;
I:=1;
I:=0;
Result:=0;
nt:=hosttonet(hostaddr);
S:=Format('%d.%d.%d.%d.in-addr.arpa',[nt.s_bytes[4],nt.s_bytes[3],nt.s_bytes[2],nt.s_bytes[1]]);
While (Result=0) and (I<=DNSServerCount) do
While (Result=0) and (I<=high(DNSServers)) do
begin
Result:=ResolveAddressAt(I,S,Addresses);
Inc(I);
@ -999,8 +998,8 @@ begin
S[1+(7-i)*8] := hexdig[1+(HostAddr.u6_addr16[i] and $0F00) shr 08];
S[3+(7-i)*8] := hexdig[1+(HostAddr.u6_addr16[i] and $F000) shr 12];
end;
I := 1;
While (Result=0) and (I<=DNSServerCount) do
I := 0;
While (Result=0) and (I<=high(DNSServers)) do
begin
Result:=ResolveAddressAt(I,S,Addresses);
Inc(I);