E. Hietbrink wrote:
> Carlos Y. Villalpando wrote:
>
>>> ;-) of course. I'd like to ask for nl.netrek.org to be added, but first
>>> I am curious what makes the automates setup fail. David Watson (Volcane)
>>> also wondered why eurotwinks.netrek.org didn't get listed a while ago,
>>> so it is not just my server.
>>
>> No clue. I could do a metaserver log and a tcpdump log to find out if
>> stuff is getting to my sever to begin with.
>>
>> Let us know when you want it added.
>
> Small update. I now know what makes it fail. Now I still need to fix it.
>
> What I did: First checked if I didn't see any PDUs sent out to any
> metaserver. Nothing. Then I started checking the file ERRORS. Ahum.
> Should have done that sooner ;-) I got loads and loads of these two
> types of messages:
>
> solicit: udp_attach: unable to bind to desired interface
> (this.host.name field): Can't assign requested address
> solicit: udp_tx: sendto: Can't assign requested address
>
> Closer investigation and debugging in solicit.c reveals that somehow
> the calls to gethostbyname(m->ours) and gethostbyname(m->host) return
> garbage. Wierd. This I need to look into.
I seem to have a 64-bit problem. I run a Sun UltraSparc with NetBSD and
the Vanilla server code isn't 64-bit safe. Example: changing the pointer
copy in solicit.c from:
m->address.sin_addr.s_addr = *(long *) hp->h_addr;
to:
((char *)&(m->address.sin_addr.s_addr))[0] = hp->h_addr[0];
((char *)&(m->address.sin_addr.s_addr))[1] = hp->h_addr[1];
((char *)&(m->address.sin_addr.s_addr))[2] = hp->h_addr[2];
((char *)&(m->address.sin_addr.s_addr))[3] = hp->h_addr[3];
solved my gethostbyname() issue.
I think the ultrasparc is capable of running both 64 as 32 bit binairies
concurrently, however I haven't found any compiler flag to enforce
32bit compiles. What's the procedure to follow here? Make the entire
server 64-bit safe?
> I did see another thing. Namely I run the server on a box behind a
> NAT firewall. So my internal addresses won't be the same as the call to
> gethostbyname("nl.netrek.org") returns. As a result the bind() call will
> fail with (errno = 49 = EADDRNOTAVAIL) and the automated registration
> will still fail.
>
> Is the bind() call really necessary? What if the server simply sends
> the raw announcement PDU. Does the metaserver run a check on sender
> address with the DNS-lookup-result of the reported serveraddress? That
> would still make it `failsafe'.
At the moment i'm running with the bind call deleted.
Greetx, Erik
_______________________________________________
vanilla-metaserver mailing list
vanilla-metaserver at lists.real-time.com
https://mailman.real-time.com/mailman/listinfo/vanilla-metaserver