freebsd-ports/net/socks5/files/patch-aa
Yoshinobu Inoue e53d640ca4 Add getaddrinfo() wrapper function support.
Tested and confirmed by: Robert Muir <rmuir@looksharp.net>,
	Toshihiko Kodama <kodama@ayame.mfd.cs.fujitsu.co.jp>,
	Masahide -mac- NODA <mac@clave.gr.jp>

Approved by: jkh

Reviewed by: imp
2000-02-24 06:37:27 +00:00

39 lines
1.3 KiB
Plaintext

--- 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 @@
static void DGetOriginalFunc(void **fptr, char *name, int libmask) {
/* Synchronize access to func and lib opening functions if we can... */
-#ifndef __FreeBSD__
+#if !defined(__FreeBSD__) || __FreeBSD__ != 2
name++;
#endif
@@ -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