diff options
Diffstat (limited to 'net/socks5/files/patch-aa')
-rw-r--r-- | net/socks5/files/patch-aa | 33 |
1 files changed, 30 insertions, 3 deletions
diff --git a/net/socks5/files/patch-aa b/net/socks5/files/patch-aa index 393eee3f9f6d..87cc2585803e 100644 --- a/net/socks5/files/patch-aa +++ b/net/socks5/files/patch-aa @@ -1,6 +1,6 @@ ---- lib/rld.c.org Wed Jun 24 22:32:37 1998 -+++ lib/rld.c Wed Jun 24 22:33:11 1998 -@@ -140,7 +140,7 @@ +--- 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... */ @@ -9,3 +9,30 @@ 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 + |