Age | Commit message (Collapse) | Author |
|
by 'nslookup www.yahoo.com' and 'nslookup mail.hotmail.com', and thus we
currently return ERANGE when trying to lookup some of the most popular hosts on
the planet. Whether these sites deserve to be popular is a question I'll leave
for someone else to worry about.
This change makes certain we have enough static buffer space to handle about 21
IPv4 IP address replies per DNS query. Far more than enough to handle common
cases such as www.yahoo.com and mail.hotmail.com.
|
|
This fix, based on this patch
http://bugs.uclibc.org/view.php?id=104
makes it so uClibc fills out round robin dns lists for
applications such as nslookup:
Before:
$ nslookup google.com
Server: mace.codepoet.org
Address: 10.10.10.1
Name: google.com
Address: 216.239.39.99
After:
$ nslookup google.com
Server: mace.codepoet.org
Address: 10.10.10.1
Name: google.com
Addresses: 216.239.57.99, 216.239.37.99, 216.239.39.99
|
|
|
|
|
|
|
|
uClibc resolver doesn't lookup all search domains.
For example, if you have computer 'jenda.prague.my.cz' and resolv.conf:
search my.cz
nameserver xx.xx.xx.xx
try this:
ping jenda.prague.my.cz #works
ping jenda.prague #unknown host
libc/inet/resolv.c doesn't want to try search domains if the domain name
contains '.'. I don't find any reason for the behaviour in literature
and it is inconsistent with the glibc.
Patch is attached.
regards,
- jenda
|
|
|
|
|
|
checking on 127.0.0.1 is still valid w/o resolv.conf
-Erik
|
|
return the length and the actual dns packet as received, rather than
making stuff up.
-Erik
|
|
> the gethostbyname_r() call itself is not segfaulting, but the memory
> returned in the h_aliases array seems to be wrong ...
was playing around with the source today and eventually the obvious answer hit
me ... while read_etc_hosts_r() generatings an array of strings fo h_aliases
and populates it, the dns path does not :)
find attached a patch that'll actually generate the h_aliases list in the
normal dns code path ... i used the etc_hosts_r() code as a template for some
of it ...
note that this is just a simple fix ... it fills the alias list with just the
hostname gethostbyname_r was passed ... the proper fix i think would be to
parse the dns packet down in __dns_lookup() and pass the info back via the
resolv_answer struct ...
but this fix is better than the current state of things ... that is, h_aliases
currently is never initailized in the dns code path :)
|
|
Bug fix: gethostbyname_r checked errno without first setting it to a
known value.
|
|
Hi Erik
I have corrected a bug in uClibc/libc/inet/resolv.c in function
__dns_lookup(). Have attaced a txt file with my diffs regarding to
uClibc 0.9.26.
If two nameservers are included in /etc/resolv.conf and the first one is
wrong and the secondary is correct the algorithm never
looked up the secondary one. Please review my diff and feel free to
submit the patch onto your CVS.
If reading manual page resolv.conf(5) under nameserver and how the
algorithm should work the previous dns_lookup did not fully followed
that.
Regards
Imre Sunyi
|
|
but remove support for host aliases (the HOSTALIASES env variable)
which looks like a very bad idea.
-Erik
|
|
were including libc-lock.h which had a bunch of weak pragmas. Also,
uClibc supplied a number of no-op weak thread functions even though
many weren't needed. This combined result was that sometimes the
functional versions of thread functions in pthread would not override
the weaks in libc.
While fixing this, I also prepended double-underscore to all necessary
weak thread funcs in uClibc, and removed all unused weaks.
I did a test build, but haven't tested this since these changes are
a backport from my working tree. I did test the changes there and
no longer need to explicitly add -lpthread in the perl build for
perl to pass its thread self tests.
|
|
cause gethostbyaddr_r to keep looping allocating more and more
memory each time till alloca finally caused a segfault. Ugh.
This fixes that as well...
-Erik
|
|
I've created a patch for adding dn_expand() to uClibc 0.9.21.
dn_expand() is used by at least ipsec-tools and also openldap I think.
|
|
|
|
with getaddrinfo().
|
|
With glibc if you do a res_init() that forces a reread of the nameservers file,
but in uClibc the res_init will not force a reread if it has already read the
file because then the nameservers value is greater than 0.
So res_init must call close_nameservers() before calling open_nameservers().
|
|
|
|
__decode_dotted() does not count the null terminating byte of
a hostname in the DNS response. This causes lookups to fail
if the DNS response doesn't compress domain names in the
message.
|
|
|
|
things to the lower 16 bits of 'id'.
|
|
compile ("worst standard ever!")
-Erik
|
|
allocation accordingly. This fixes the segfault in the Python 2.2.1
socket test.
|
|
|
|
-Erik
|
|
lock while sending packets out onto the wire.
-Erik
|
|
-Erik
|
|
indicate it is (alledgedly) private.
-Erik
|
|
connect_dns() and simplify IPV6 support by reducing the number of
ifdefs sprinkled about.
|
|
when adding some locking code.
-Erik
|
|
-Erik
|
|
support for struct _res. This is a minimalist implementation,
but should work for most anything out there.
|
|
gethostbyname("192.168.0.1"), which should work even when the /etc/hosts and
/etc/config/hosts files do not exist.
|
|
use of alarm() and therefore SIGARLM in the resolver and to
instead use select, which is much cleaner.
|
|
missing pieces of the conversion to reentrant functions.
|
|
added several additional reentrant networking functions such that iptables now
runs with IPV6 support.
|
|
|
|
local copy of the FILE pointer, thereby causing /etc/hosts lookups
to fail with Resolver errors. This patch from Thomas fixes the
problem.
|
|
-Erik
|
|
- fixes endianness bug in gethostbyaddr() (i386 worked fine, while m68k
didn't: 192.168.160.162 was queried with 192.168.160.162.in-addr.arpa
while it should have been 162.160.168.192.ip-addr.arpa)
- contains missing pieces from my previous getnameinfo() patch:
now it actually compiles!
|
|
support for __FORCE_NOGLIBC per Brian Stafford
<brian.stafford@office-logic.com>
|
|
I found some support in uClibc for IPv6 but I needed some more...
Enclosed
is the patch containing following modifications:
- getnameinfo port from lates glibc
- IPv6 support for gethostbyaddr()
- IPv6 support for get_hosts_byname and read_etc_hosts (among other
things this fixed a bug in gethostbyname2 in a case when user asked for
an IPv6 but got a v4 address if it was present in /etc/hosts)
- defined ip6addr_any and in6addr_loopback (though the place where I
defined these isn't correct, I guess)
What is still missing:
- getaddrinfo (this could be ported also from glibc but it won't be as
easy as porting getnameinfo, I guess)
I have tested the patch using enclosed test program and boa web server.
Seems to work ;)
|
|
in dns_lookup.
|
|
|
|
|
|
partial IPV6 support. This adds things like gethostbyname2().
Off by defaut, of course,
|
|
|