Displaying 1 result from an estimated 1 matches for "_lock_resolver".
Did you mean:
_unlock_resolver
2004 Aug 06
3
src/net/resolver.c patches for better IPv6 resolution
...n <= 0)
return NULL;
#ifdef HAVE_GETIPNODEBYNAME
- host = getipnodebyname(what, AF_INET6, AI_DEFAULT, &err);
- if (host) {
- if (_isip(what))
+ if (_isip(what)) {
+ /* According to FreeBSD's man page, getipnodebyname and such
+ * aren't threadsafe either */
+ _lock_resolver();
+ host = getipnodebyaddr(&addr_u.v4addr, sizeof(struct in_addr),
+ AF_INET, &err);
+ _unlock_resolver();
+ if (host == NULL) {
+ _lock_resolver();
+ host = getipnodebyaddr(&addr_u.v6addr,
+ sizeof(struct in6_addr), AF_INET6, &err);
+ _unlock_resolver();
+ }
+...