[erlang-questions] {error,timeout} with gethostbyname

info info@REDACTED
Fri Sep 25 12:03:38 CEST 2009


Hi Raimo,
Note that I appreciate your help because it seems that the problem is not in erlang.

On Thu, Sep 24, 2009 at 04:55:57PM +0200, info wrote:
> I also tried to add the address of my dns server.
> inet_db:add_ns({ip}).
> But no effect.
> 
> inet_getrc(). gives now:
> 
> [{host,{127,0,0,1},["my_host"]},
>  {nameserver,{192,168,1,33}}]
> 
You have {res_lookup,[native,file]} meaning first is the OS
gethostbyname equivalent function used. During the startup
of Erlang it discovered that "my_host" could not be
resolved so it entered "my_host" as {127,0,0,1} into the
internal hosts table to ensure that inet:gethostbyname("my_host")
would succeed.

But the native lookup method times out, probably due
to misconfigured name resolving in the OS, so the
internal hosts table is never used.

How long does the call inet:gethostbyname("my_host")
take to return {error,timeout}?
>>>>>>>>>>>> 6-7 seconds

Can the native lookup method look up any name at all?
Try: inet_gethost_native:gethostbyname("localhost").
>>>>>>>>>>>> {error,timeout}
inet_gethost_native:gethostbyname("my_host").
>>>>>>>>>>>> {error,timeout}
inet_gethost_native:gethostbyname("www.google.com").
>>>>>>>>>>>> {error,timeout}
>From a Windows command shell, try:
nslookup my_host
>>>>>>>>>>>>server: my_host.my_domain.local
>>>>>>>>>>>>address: 192.168.1.33
>>>>>>>>>>>>name: my_host.my_domain.local
>>>>>>>>>>>>address: 192.168.1.33
nslookup localhost
>>>>>>>>>>>>server: my_host.my_domain.local
>>>>>>>>>>>>address: 192.168.1.33
>>>>>>>>>>>>my_host.my_domain.local doesn't find localhost: no existing domain (*** I translated from french ! )

Pay special attention to which nameserver that answers.

If you can not fix the network configuration, which will
solve your problem, you can configure erlang to not
use the native lookup method. The erlang DNS resolver
client was much improved to R13B02, but it worked
well in R13B01 too.
>>>>>>>>>>>>My problem is I don't see what is wrong in my network configuration or in my dns server configuration !
Set the lookup method to [file,dns] and add your
nameserver as you tried:
inet_db:add_ns({192,168,1,33}).
>>>>>>>>>>>>ok
inet_db:set_lookup([file,dns]).
>>>>>>>>>>>>ok
Then try inet:gethostbyname("my_host"),
>>>>>>>>>>>>{ok,{hostent,"my-host",[],inet,4,[{127,0,0,1}]}}             BETTER !!
or even inet_res:gethostbyname("my_host).
>>>>>>>>>>>>{error,timeout}                         WHY ?
But I hope you can fix your network configuration instead...

> 
> 
> n Wed, Sep 23, 2009 at 04:31:35PM +0200, info wrote:
>  > Hi all,
>  > On a windows 2003 server sbs this command returns {ok,"my_host"} :
>  > 
>  > {ok,N}=inet:gethostname().
>  > 
>  > But the following command returns {error,timeout} :
>  > 
>  > inet:gethostbyname(N).
>  > 
>  > On a Vista machine, the previous command returns a correct answer.
>  > 
>  > I know that it is not an erlang problem but if you could give me support, I will appreciate ;-)
> 
> Erlang may have problems configuring name lookups.
> Give me the output from ets:tab2list(inet_db).
> 
> Which erlang release are you running, it sounds like pre-R13B02?
> 
> Try starting with erl -name foo
> and do the same, ets:tab2list/1 too.
> 
> -- 
> 
> / Raimo Niskanen, Erlang/OTP, Ericsson AB

-- 

/ Raimo Niskanen, Erlang/OTP, Ericsson AB


More information about the erlang-questions mailing list