Răsfoiți Sursa

Merged revisions 2114-2115 via svnmerge from
svn+ssh://[email protected]/FPC/svn/fpc/trunk

r2114 (jonas)
* added missing NetToHost() calls for THostResolver and TNetResolver


r2115 (jonas)
* stringfromlabel now also handles dns message compression

git-svn-id: branches/fixes_2_0@2116 -

Jonas Maebe 20 ani în urmă
părinte
comite
1dd0355247
2 a modificat fișierele cu 11 adăugiri și 4 ștergeri
  1. 4 4
      fcl/inc/resolve.pp
  2. 7 0
      packages/base/netdb/netdb.pp

+ 4 - 4
fcl/inc/resolve.pp

@@ -352,10 +352,10 @@ Var
 begin
   PH:=ENtry;
   FName:=PH^.Name;
-  FHostAddress:=PH^.Addr;
+  FHostAddress:=NetToHost(PH^.Addr);
   FAddressCount:=1;
   GetMem(FAddresses,SizeOf(THostAddr));
-  FAddresses[0]:=PH^.Addr;
+  FAddresses[0]:=NetToHost(PH^.Addr);
   FAliases.CommaText:=PH^.Aliases;
 end;
 
@@ -399,7 +399,7 @@ begin
       begin
       GetMem(FAddresses,FAddressCount*SizeOf(THostAddr));
       For I:=0 to FAddressCount-1 do
-        FAddresses[I]:=PHostAddr(H_Addr[I])^;
+        FAddresses[I]:=NetToHost(PHostAddr(H_Addr[I])^);
       FHostAddress:=FAddresses[0];
       end;
     SaveAliases(H_Aliases);
@@ -478,7 +478,7 @@ Var
 begin
   PN:=ENtry;
   FName:=PN^.Name;
-  FNetAddress:=PN^.Addr;
+  FNetAddress:=NetToHost(PN^.Addr);
   FAliases.CommaText:=PN^.Aliases;
 end;
 

+ 7 - 0
packages/base/netdb/netdb.pp

@@ -496,6 +496,13 @@ begin
   i := 0;
   repeat
     l := ord(pl[start]);
+    { compressed reply }
+    while (l >= 192) do
+      begin
+        { the -12 is because of the reply header length }
+        start := (l and not(192)) shl 8 + ord(pl[start+1]) - 12;
+        l := ord(pl[start]);
+      end;
     if l <> 0 then begin
       setlength(result,length(result)+l);
       move(pl[start+1],result[i+1],l);