33 lines
		
	
	
		
			886 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			33 lines
		
	
	
		
			886 B
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef _RESOLV_STATIC_H
 | |
| #define _RESOLV_STATIC_H
 | |
| 
 | |
| #include <netdb.h>
 | |
| 
 | |
| /* this structure contains all the variables that were declared
 | |
|  * 'static' in the original NetBSD resolver code.
 | |
|  *
 | |
|  * this caused vast amounts of crashes and memory corruptions
 | |
|  * when the resolver was being used by multiple threads.
 | |
|  *
 | |
|  * (note: the OpenBSD/FreeBSD resolver has similar 'issues')
 | |
|  */
 | |
| 
 | |
| #define	MAXALIASES	35
 | |
| #define	MAXADDRS	35
 | |
| 
 | |
| typedef struct res_static {
 | |
|     char*           h_addr_ptrs[MAXADDRS + 1];
 | |
|     char*           host_aliases[MAXALIASES];
 | |
|     char            hostbuf[8*1024];
 | |
|     u_int32_t       host_addr[16 / sizeof(u_int32_t)];  /* IPv4 or IPv6 */
 | |
|     FILE*           hostf;
 | |
|     int             stayopen;
 | |
|     const char*     servent_ptr;
 | |
|     struct servent  servent;
 | |
|     struct hostent  host;
 | |
| } *res_static;
 | |
| 
 | |
| extern res_static __res_get_static(void);
 | |
| 
 | |
| #endif /* _RESOLV_STATIC_H */
 | 
