aboutsummaryrefslogtreecommitdiff
path: root/Src/replicant/jnetlib/asyncdns.h
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/replicant/jnetlib/asyncdns.h
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/replicant/jnetlib/asyncdns.h')
-rw-r--r--Src/replicant/jnetlib/asyncdns.h66
1 files changed, 66 insertions, 0 deletions
diff --git a/Src/replicant/jnetlib/asyncdns.h b/Src/replicant/jnetlib/asyncdns.h
new file mode 100644
index 00000000..b346eccd
--- /dev/null
+++ b/Src/replicant/jnetlib/asyncdns.h
@@ -0,0 +1,66 @@
+/*
+** JNetLib
+** Copyright (C) 2000-2007 Nullsoft, Inc.
+** Author: Justin Frankel
+** File: asyncdns.h - JNL portable asynchronous DNS interface
+** License: see jnetlib.h
+**
+** Usage:
+** 1. Create JNL_AsyncDNS object, optionally with the number of cache entries.
+** 2. call resolve() to resolve a hostname into an address. The return value of
+** resolve is 0 on success (host successfully resolved), 1 on wait (meaning
+** try calling resolve() with the same hostname in a few hundred milliseconds
+** or so), or -1 on error (i.e. the host can't resolve).
+** 3. call reverse() to do reverse dns (ala resolve()).
+** 4. enjoy.
+*/
+
+#ifndef _ASYNCDNS_H_
+#define _ASYNCDNS_H_
+
+#include "netinc.h"
+
+struct cache_entry;
+
+#define JNL_AUTODNS ((JNL_AsyncDNS *)-1)
+enum
+{
+ DNS_RESOLVE_UNRESOLVABLE = -1,
+ DNS_RESOLVE_SUCCESS = 0,
+ DNS_RESOLVE_WAIT = 1,
+};
+
+enum
+{
+ DNS_REVERSE_UNRESOLVABLE = -1,
+ DNS_REVERSE_SUCCESS = 0,
+ DNS_REVERSE_WAIT = 1,
+};
+
+class JNL_AsyncDNS
+{
+public:
+ JNL_AsyncDNS( int max_cache_entries = 64 );
+ ~JNL_AsyncDNS();
+
+ int resolve( const char *hostname, unsigned short port, addrinfo **addr, int sockettype ); // return 0 on success, 1 on wait, -1 on unresolvable
+ static int resolvenow( const char *hostname, unsigned short port, addrinfo **addr, int sockettype ); // return 0 on success, -1 on unresolvable
+ //int reverse(unsigned long addr, char *hostname, size_t hostnameSize); // return 0 on success, 1 on wait, -1 on unresolvable. hostname must be at least 256 bytes.
+
+private:
+ cache_entry *m_cache;
+ int m_cache_size;
+ volatile int m_thread_kill;
+
+#ifdef _WIN32
+ HANDLE m_thread;
+ static unsigned long WINAPI _threadfunc( LPVOID _d );
+#else
+ pthread_t m_thread;
+ static unsigned int _threadfunc( void *_d );
+#endif
+
+ void makesurethreadisrunning( void );
+};
+
+#endif //_ASYNCDNS_H_