1 | #define DNS_USE_GETTIMEOFDAY_FOR_ID 1 |
1 | /* $Id: evdns.c,v 1.6 2007/11/03 19:41:55 root Exp $ */ |
2 | #define HAVE_STRUCT_IN6_ADDR 1 |
|
|
3 | |
2 | |
4 | /* The original version of this module was written by Adam Langley; for |
3 | /* The original version of this module was written by Adam Langley; for |
5 | * a history of modifications, check out the subversion logs. |
4 | * a history of modifications, check out the subversion logs. |
6 | * |
5 | * |
7 | * When editing this module, try to keep it re-mergeable by Adam. Don't |
6 | * When editing this module, try to keep it re-mergeable by Adam. Don't |
… | |
… | |
39 | #ifdef HAVE_CONFIG_H |
38 | #ifdef HAVE_CONFIG_H |
40 | #include "config.h" |
39 | #include "config.h" |
41 | #endif |
40 | #endif |
42 | |
41 | |
43 | #ifdef WIN32 |
42 | #ifdef WIN32 |
|
|
43 | #include "misc.h" |
44 | #endif |
44 | #endif |
45 | |
45 | |
46 | /* #define NDEBUG */ |
46 | /* #define NDEBUG */ |
47 | |
47 | |
48 | #ifndef DNS_USE_CPU_CLOCK_FOR_ID |
48 | #ifndef DNS_USE_CPU_CLOCK_FOR_ID |
… | |
… | |
92 | #include <ctype.h> |
92 | #include <ctype.h> |
93 | #include <stdio.h> |
93 | #include <stdio.h> |
94 | #include <stdarg.h> |
94 | #include <stdarg.h> |
95 | |
95 | |
96 | #include "evdns.h" |
96 | #include "evdns.h" |
|
|
97 | #include "log.h" |
97 | #ifdef WIN32 |
98 | #ifdef WIN32 |
98 | #include <windows.h> |
99 | #include <windows.h> |
99 | #include <winsock2.h> |
100 | #include <winsock2.h> |
100 | #include <iphlpapi.h> |
101 | #include <iphlpapi.h> |
101 | #else |
102 | #else |
… | |
… | |
2544 | if (flags & DNS_OPTION_NAMESERVERS) evdns_nameserver_ip_add("127.0.0.1"); |
2545 | if (flags & DNS_OPTION_NAMESERVERS) evdns_nameserver_ip_add("127.0.0.1"); |
2545 | } |
2546 | } |
2546 | |
2547 | |
2547 | #ifndef HAVE_STRTOK_R |
2548 | #ifndef HAVE_STRTOK_R |
2548 | static char * |
2549 | static char * |
2549 | fake_strtok_r(char *s, const char *delim, char **state) { |
2550 | strtok_r(char *s, const char *delim, char **state) { |
2550 | return strtok(s, delim); |
2551 | return strtok(s, delim); |
2551 | } |
2552 | } |
2552 | #endif |
2553 | #endif |
2553 | |
2554 | |
2554 | /* helper version of atoi which returns -1 on error */ |
2555 | /* helper version of atoi which returns -1 on error */ |
… | |
… | |
2620 | |
2621 | |
2621 | static void |
2622 | static void |
2622 | resolv_conf_parse_line(char *const start, int flags) { |
2623 | resolv_conf_parse_line(char *const start, int flags) { |
2623 | char *strtok_state; |
2624 | char *strtok_state; |
2624 | static const char *const delims = " \t"; |
2625 | static const char *const delims = " \t"; |
2625 | #define NEXT_TOKEN fake_strtok_r(NULL, delims, &strtok_state) |
2626 | #define NEXT_TOKEN strtok_r(NULL, delims, &strtok_state) |
2626 | |
2627 | |
2627 | char *const first_token = fake_strtok_r(start, delims, &strtok_state); |
2628 | char *const first_token = strtok_r(start, delims, &strtok_state); |
2628 | if (!first_token) return; |
2629 | if (!first_token) return; |
2629 | |
2630 | |
2630 | if (!strcmp(first_token, "nameserver") && (flags & DNS_OPTION_NAMESERVERS)) { |
2631 | if (!strcmp(first_token, "nameserver") && (flags & DNS_OPTION_NAMESERVERS)) { |
2631 | const char *const nameserver = NEXT_TOKEN; |
2632 | const char *const nameserver = NEXT_TOKEN; |
2632 | struct in_addr ina; |
2633 | struct in_addr ina; |