freebsd-dev/lib/libc/net
Brian Feldman 33dee81933 Make the resolver(3) and many associated interfaces much more reentrant.
The getaddrinfo(3), getipnodebyname(3) and resolver(3) can coincide now
with what should be totally reentrant, and h_errno values will now
be preserved correctly, but this does not affect interfaces such as
gethostbyname(3) which are still mostly non-reentrant.

In all of these relevant functions, the thread-safety has been pushed
down as far as it seems possible right now.  This means that operations
that are selected via nsdispatch(3) (i.e. files, yp, dns) are protected
still under global locks that getaddrinfo(3) defines, but where possible
the locking is greatly reduced.  The most noticeable improvement is
that multiple DNS lookups can now be run at the same time, and this
shows major improvement in performance of DNS-lookup threaded programs,
and solves the "Mozilla tab serialization" problem.

No single-threaded applications need to be recompiled.  Multi-threaded
applications that reference "_res" to change resolver(3) options will
need to be recompiled, and ones which reference "h_errno" will also
if they desire the correct h_errno values.  If the applications already
understood that _res and h_errno were not thread-safe and had their own
locking, they will see no performance improvement but will not
actually break in any way.

Please note that when NSS modules are used, or when nsdispatch(3)
defaults to adding any lookups of its own to the individual libc
_nsdispatch() calls, those MUST be reentrant as well.
2004-02-25 21:03:46 +00:00
..
addr2ascii.3 mdoc(7): Use the new feature of the .In macro. 2003-09-08 19:57:22 +00:00
addr2ascii.c Fix the style of the SCM ID's. 2002-03-22 21:53:29 +00:00
ascii2addr.c Fix the style of the SCM ID's. 2002-03-22 21:53:29 +00:00
base64.c Fix the style of the SCM ID's. 2002-03-22 21:53:29 +00:00
byteorder.3 Document that <netinet/in.h> can also provide prototypes. Change 2002-05-11 23:22:54 +00:00
ether_addr.c Fix style of ether_ntoa(). 2002-04-08 07:51:10 +00:00
ethers.3 mdoc(7): Use the new feature of the .In macro. 2003-09-08 19:57:22 +00:00
getaddrinfo.3 Make the resolver(3) and many associated interfaces much more reentrant. 2004-02-25 21:03:46 +00:00
getaddrinfo.c Make the resolver(3) and many associated interfaces much more reentrant. 2004-02-25 21:03:46 +00:00
gethostbydns.c Make the resolver(3) and many associated interfaces much more reentrant. 2004-02-25 21:03:46 +00:00
gethostbyht.c Fix the style of the SCM ID's. 2002-03-22 21:53:29 +00:00
gethostbyname.3 Make the resolver(3) and many associated interfaces much more reentrant. 2004-02-25 21:03:46 +00:00
gethostbynis.c Make the resolver(3) and many associated interfaces much more reentrant. 2004-02-25 21:03:46 +00:00
gethostnamadr.c Remove bogus non-reentrant "temporary" implementation of gethostbyaddr_r() 2003-06-19 07:57:11 +00:00
getifaddrs.3 mdoc(7): Use the new feature of the .In macro. 2003-09-08 19:57:22 +00:00
getifaddrs.c sysctl(NET_RT_IFLIST) up to several (currently 5) times. 2002-07-25 08:08:30 +00:00
getifmaddrs.3 Add the userland part of the NET_RT_IFMALIST sysctl MIB. A new function, 2003-11-14 18:53:22 +00:00
getifmaddrs.c Add the userland part of the NET_RT_IFMALIST sysctl MIB. A new function, 2003-11-14 18:53:22 +00:00
getipnodebyname.3 Make the resolver(3) and many associated interfaces much more reentrant. 2004-02-25 21:03:46 +00:00
getnameinfo.3 stop use of NI_WITHSCOPEID. it was deprecated. 2003-10-21 20:11:47 +00:00
getnameinfo.c Back out the `hiding' of strlcpy and strlcat. Several people 2003-05-01 19:03:14 +00:00
getnetbydns.c Unbreak world. 2004-02-07 11:13:47 +00:00
getnetbyht.c Fix the style of the SCM ID's. 2002-03-22 21:53:29 +00:00
getnetbynis.c Fix the style of the SCM ID's. 2002-03-22 21:53:29 +00:00
getnetent.3 mdoc(7) police: "The .Fa argument.". 2002-12-19 09:40:28 +00:00
getnetnamadr.c Catch up with nsdispatch.c: nsdispatch(3) is now `hidden' by 2003-04-24 18:05:48 +00:00
getproto.c Remove 'register' keyword. 2002-03-21 18:49:23 +00:00
getprotoent.3 mdoc(7) police: Use the new .In macro for #include statements. 2001-10-01 16:09:29 +00:00
getprotoent.c Remove 'register' keyword. 2002-03-21 18:49:23 +00:00
getprotoname.c Remove 'register' keyword. 2002-03-21 18:49:23 +00:00
getservbyname.c Remove 'register' keyword. 2002-03-21 18:49:23 +00:00
getservbyport.c Remove 'register' keyword. 2002-03-21 18:49:23 +00:00
getservent.3 mdoc(7) police: Use the new .In macro for #include statements. 2001-10-01 16:09:29 +00:00
getservent.c Eliminate 19 warnings in libc (at level WARNS=2) of the 2003-02-27 13:40:01 +00:00
herror.c Make the resolver(3) and many associated interfaces much more reentrant. 2004-02-25 21:03:46 +00:00
hesiod.3 mdoc(7) police: "The .Fn function". 2002-12-18 12:45:11 +00:00
hesiod.c Back out the `hiding' of strlcpy and strlcat. Several people 2003-05-01 19:03:14 +00:00
if_indextoname.3 mdoc(7): Use the new feature of the .In macro. 2003-09-08 19:57:22 +00:00
if_indextoname.c Use BSDi derived if_nametoindex(), if_indextoname(), if_nameindex() 2002-07-15 19:58:56 +00:00
if_nameindex.c Use BSDi derived if_nametoindex(), if_indextoname(), if_nameindex() 2002-07-15 19:58:56 +00:00
if_nametoindex.c Back out the `hiding' of strlcpy and strlcat. Several people 2003-05-01 19:03:14 +00:00
inet6_opt_init.3 Switch Advanced Sockets API for IPv6 from RFC2292 to RFC3542 2003-10-24 18:26:30 +00:00
inet6_option_space.3 mdoc(7): Properly mark C headers. 2003-09-10 19:24:35 +00:00
inet6_rth_space.3 style cleanup: Remove duplicate $FreeBSD$ tags. 2004-02-10 20:40:17 +00:00
inet6_rthdr_space.3 mdoc(7): Properly mark C headers. 2003-09-10 19:24:35 +00:00
inet_addr.c just merged cosmetic changes from KAME to ease sync between KAME and FreeBSD. 2002-04-19 04:46:24 +00:00
inet_lnaof.c Fix the style of the SCM ID's. 2002-03-22 21:53:29 +00:00
inet_makeaddr.c Fix the style of the SCM ID's. 2002-03-22 21:53:29 +00:00
inet_net_ntop.c Fix the style of the SCM ID's. 2002-03-22 21:53:29 +00:00
inet_net_pton.c From OpenBSD: 2003-09-15 23:38:06 +00:00
inet_net.3 mdoc(7) police: "The .Fa argument.". 2002-12-19 09:40:28 +00:00
inet_neta.c Correct typos, mostly s/ a / an / where appropriate. Some whitespace cleanup, 2003-01-01 18:49:04 +00:00
inet_netof.c Fix the style of the SCM ID's. 2002-03-22 21:53:29 +00:00
inet_network.c Fix the style of the SCM ID's. 2002-03-22 21:53:29 +00:00
inet_ntoa.c Fix the style of the SCM ID's. 2002-03-22 21:53:29 +00:00
inet_ntop.c Style: One space between "restrict" qualifier and "*". 2002-09-06 11:24:06 +00:00
inet_pton.c Style: One space between "restrict" qualifier and "*". 2002-09-06 11:24:06 +00:00
inet.3 Style: One space between "restrict" qualifier and "*". 2002-09-06 11:24:06 +00:00
ip6opt.c u_int8_t cannot carry a number greater than 255. 2003-11-14 18:07:50 +00:00
linkaddr.3 mdoc(7) police: "The .Fn function". 2002-12-18 12:45:11 +00:00
linkaddr.c Remove 'register' keyword. 2002-03-21 18:49:23 +00:00
Makefile.inc Add the userland part of the NET_RT_IFMALIST sysctl MIB. A new function, 2003-11-14 18:53:22 +00:00
map_v4v6.c Include more robust checking of end of buffer that more completely 2002-06-26 08:18:05 +00:00
name6.c Make the resolver(3) and many associated interfaces much more reentrant. 2004-02-25 21:03:46 +00:00
ns_name.c Whack 28 unused variables. 2003-02-18 13:39:52 +00:00
ns_netint.c Fix the style of the SCM ID's. 2002-03-22 21:53:29 +00:00
ns_parse.c Fix the style of the SCM ID's. 2002-03-22 21:53:29 +00:00
ns_print.c Fix the style of the SCM ID's. 2002-03-22 21:53:29 +00:00
ns_ttl.c Whack 28 unused variables. 2003-02-18 13:39:52 +00:00
nsap_addr.c Fix the style of the SCM ID's. 2002-03-22 21:53:29 +00:00
nsdispatch.3 Assorted mdoc(7) fixes. 2003-05-22 13:02:28 +00:00
nsdispatch.c Don't complain about missing NSS methods when built statically. It is 2003-04-24 19:57:31 +00:00
nslexer.l = Implement name service switch modules (NSS modules). NSS modules 2003-04-17 14:14:22 +00:00
nsparser.y = Implement name service switch modules (NSS modules). NSS modules 2003-04-17 14:14:22 +00:00
nss_backends.h = Implement name service switch modules (NSS modules). NSS modules 2003-04-17 14:14:22 +00:00
nss_compat.c It was reported that when using nss_ldap, getgrent(3) would behave 2004-01-09 13:43:49 +00:00
rcmd.3 mdoc(7) police: "The .Fn function". 2002-12-18 12:45:11 +00:00
rcmd.c Whack 28 unused variables. 2003-02-18 13:39:52 +00:00
rcmdsh.3 mdoc(7) police: "The .Fa argument.". 2002-12-19 09:40:28 +00:00
rcmdsh.c Eliminate 19 warnings in libc (at level WARNS=2) of the 2003-02-27 13:40:01 +00:00
recv.c Fix the style of the SCM ID's. 2002-03-22 21:53:29 +00:00
res_comp.c Fix the style of the SCM ID's. 2002-03-22 21:53:29 +00:00
res_config.h Fix the style of the SCM ID's. 2002-03-22 23:42:05 +00:00
res_data.c Fix the style of the SCM ID's. 2002-03-22 21:53:29 +00:00
res_debug.c Whack 28 unused variables. 2003-02-18 13:39:52 +00:00
res_init.c Make the resolver(3) and many associated interfaces much more reentrant. 2004-02-25 21:03:46 +00:00
res_mkquery.c Limit UDP payload size for EDNS0 to 0xffff, not use lower 16bit value. 2002-09-14 17:28:40 +00:00
res_mkupdate.c Whack 28 unused variables. 2003-02-18 13:39:52 +00:00
res_query.c Restore vendor ID. 2003-03-03 01:12:24 +00:00
res_send_private.h Make the resolver(3) and many associated interfaces much more reentrant. 2004-02-25 21:03:46 +00:00
res_send.c Make the resolver(3) and many associated interfaces much more reentrant. 2004-02-25 21:03:46 +00:00
res_update.c Check for truncation in calls to res_send/res_query/res_search. 2002-09-15 16:51:09 +00:00
resolver.3 Make the resolver(3) and many associated interfaces much more reentrant. 2004-02-25 21:03:46 +00:00
rthdr.c Switch Advanced Sockets API for IPv6 from RFC2292 to RFC3542 2003-10-24 18:26:30 +00:00
send.c Fix the style of the SCM ID's. 2002-03-22 21:53:29 +00:00
sockatmark.3 mdoc(7) police: "The .Fa argument.". 2002-12-19 09:40:28 +00:00
sockatmark.c Add an implementation of the POSIX.1 sockatmark(3). 2002-12-13 22:22:55 +00:00
vars.c just merged cosmetic changes from KAME to ease sync between KAME and FreeBSD. 2002-04-19 04:46:24 +00:00