mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-22 22:49:37 +02:00
* fixed #9402 and removed limitation of 4 dns servers
git-svn-id: trunk@8258 -
This commit is contained in:
parent
494fb81dd8
commit
5bcda6d18a
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user