diff --git a/fcl/inc/resolve.pp b/fcl/inc/resolve.pp index e74ad707db..e588f62ae9 100644 --- a/fcl/inc/resolve.pp +++ b/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; diff --git a/packages/base/netdb/netdb.pp b/packages/base/netdb/netdb.pp index 6340f571fe..8e3331735b 100644 --- a/packages/base/netdb/netdb.pp +++ b/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);