2000-02-24 06:37:27 +00:00
|
|
|
--- lib/rld.c.orig Wed Aug 4 04:59:28 1999
|
|
|
|
+++ lib/rld.c Mon Feb 21 03:55:45 2000
|
|
|
|
@@ -143,7 +143,7 @@
|
1998-07-20 23:37:26 +00:00
|
|
|
static void DGetOriginalFunc(void **fptr, char *name, int libmask) {
|
|
|
|
/* Synchronize access to func and lib opening functions if we can... */
|
|
|
|
|
|
|
|
-#ifndef __FreeBSD__
|
1998-10-07 18:51:28 +00:00
|
|
|
+#if !defined(__FreeBSD__) || __FreeBSD__ != 2
|
1998-07-20 23:37:26 +00:00
|
|
|
name++;
|
|
|
|
#endif
|
|
|
|
|
2000-02-24 06:37:27 +00:00
|
|
|
@@ -197,6 +197,26 @@
|
|
|
|
lsInRLDFunctions = 0;
|
|
|
|
S5LogUpdate(S5LogDefaultHandle, S5_LOG_DEBUG(10), 0, "RLD: gethostbyname2 results: %s %s", name, hp?hp->h_name:"???");
|
|
|
|
return hp;
|
|
|
|
+}
|
|
|
|
+#endif
|
|
|
|
+
|
|
|
|
+#ifdef HAVE_GETADDRINFO
|
|
|
|
+int REAL(getaddrinfo)(const char *hostname, const char *servname,
|
|
|
|
+ const struct addrinfo *hints, struct addrinfo **aip) {
|
|
|
|
+ int error;
|
|
|
|
+ static void *func = NULL;
|
|
|
|
+
|
|
|
|
+ S5LogUpdate(S5LogDefaultHandle, S5_LOG_DEBUG(10), 0, "RLD: getaddrinfo: %s", hostname);
|
|
|
|
+ GetOriginalFunc(&func, "_getaddrinfo", TRY_LIBC | TRY_LIBNSL | TRY_LIBRESOLV);
|
|
|
|
+ if (!func || func == (void *)-1) return NULL;
|
|
|
|
+
|
|
|
|
+ lsInRLDFunctions = 1;
|
|
|
|
+ error = ((int (*)P((const char *, const char *, const struct addrinfo *,
|
|
|
|
+ struct addrinfo **)))func)(hostname, servname,
|
|
|
|
+ hints, aip);
|
|
|
|
+ lsInRLDFunctions = 0;
|
|
|
|
+ S5LogUpdate(S5LogDefaultHandle, S5_LOG_DEBUG(10), 0, "RLD: getaddrinfo results: %s %s", hostname, (*aip&&(*aip)->ai_canonname)?(*aip)->ai_canonname:"???");
|
|
|
|
+ return error;
|
|
|
|
}
|
|
|
|
#endif
|
|
|
|
|