diff -r 000000000000 -r 6474c204b198 other-licenses/android/resolv_static.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/other-licenses/android/resolv_static.h Wed Dec 31 06:09:35 2014 +0100 @@ -0,0 +1,42 @@ +/* + * This version of this file is derived from Android 2.3 "Gingerbread", + * which contains uncredited changes by Android/Google developers. It has + * been modified in 2011 for use in the Android build of Mozilla Firefox by + * Mozilla contributors (including Michael Edwards , + * and Steve Workman ). + * These changes are offered under the same license as the original NetBSD + * file, whose copyright and license are unchanged above. + */ + +#ifndef _RESOLV_STATIC_H +#define _RESOLV_STATIC_H + +#include + +/* 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 */