ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/libev/evdns.c
(Generate patch)

Comparing libev/evdns.c (file contents):
Revision 1.2 by root, Thu Nov 1 17:29:19 2007 UTC vs.
Revision 1.21 by root, Thu Nov 8 18:38:52 2007 UTC

1#define DNS_USE_GETTIMEOFDAY_FOR_ID 1
2/* $Id: evdns.c,v 1.2 2007/11/01 17:29:19 root Exp $ */ 1/* $Id: evdns.c,v 1.21 2007/11/08 18:38:52 root Exp $ */
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#ifndef EV_STANDALONE
44#include "misc.h" 44#include "misc.h"
45#endif
45#endif 46#endif
46 47
47/* #define NDEBUG */ 48/* #define NDEBUG */
48 49
49#ifndef DNS_USE_CPU_CLOCK_FOR_ID 50#ifndef DNS_USE_CPU_CLOCK_FOR_ID
174 char request_appended; /* true if the request pointer is data which follows this struct */ 175 char request_appended; /* true if the request pointer is data which follows this struct */
175 char transmit_me; /* needs to be transmitted */ 176 char transmit_me; /* needs to be transmitted */
176}; 177};
177 178
178#ifndef HAVE_STRUCT_IN6_ADDR 179#ifndef HAVE_STRUCT_IN6_ADDR
179struct xin6_addr { 180struct in6_addr {
180 u8 s6_addr[16]; 181 u8 s6_addr[16];
181}; 182};
182#endif 183#endif
183 184
184struct reply { 185struct reply {
189 u32 addrcount; 190 u32 addrcount;
190 u32 addresses[MAX_ADDRS]; 191 u32 addresses[MAX_ADDRS];
191 } a; 192 } a;
192 struct { 193 struct {
193 u32 addrcount; 194 u32 addrcount;
194 struct xin6_addr addresses[MAX_ADDRS]; 195 struct in6_addr addresses[MAX_ADDRS];
195 } aaaa; 196 } aaaa;
196 struct { 197 struct {
197 char name[HOST_NAME_MAX]; 198 char name[HOST_NAME_MAX];
198 } ptr; 199 } ptr;
199 } data; 200 } data;
2264 if (!req) return 1; 2265 if (!req) return 1;
2265 request_submit(req); 2266 request_submit(req);
2266 return 0; 2267 return 0;
2267} 2268}
2268 2269
2269int evdns_resolve_reverse_ipv6(struct xin6_addr *in, int flags, evdns_callback_type callback, void *ptr) { 2270int evdns_resolve_reverse_ipv6(struct in6_addr *in, int flags, evdns_callback_type callback, void *ptr) {
2270 char buf[64]; 2271 char buf[96];
2271 char *cp; 2272 char *cp;
2272 struct request *req; 2273 struct request *req;
2273 int i; 2274 int i;
2274 assert(in); 2275 assert(in);
2275 cp = buf; 2276 cp = buf;
2543 /* if the file isn't found then we assume a local resolver */ 2544 /* if the file isn't found then we assume a local resolver */
2544 if (flags & DNS_OPTION_SEARCH) search_set_from_hostname(); 2545 if (flags & DNS_OPTION_SEARCH) search_set_from_hostname();
2545 if (flags & DNS_OPTION_NAMESERVERS) evdns_nameserver_ip_add("127.0.0.1"); 2546 if (flags & DNS_OPTION_NAMESERVERS) evdns_nameserver_ip_add("127.0.0.1");
2546} 2547}
2547 2548
2549#ifndef HAVE_STRTOK_R
2550static char *
2551strtok_r(char *s, const char *delim, char **state) {
2552 return strtok(s, delim);
2553}
2554#endif
2548 2555
2549/* helper version of atoi which returns -1 on error */ 2556/* helper version of atoi which returns -1 on error */
2550static int 2557static int
2551strtoint(const char *const str) { 2558strtoint(const char *const str) {
2552 char *endptr; 2559 char *endptr;
2615 2622
2616static void 2623static void
2617resolv_conf_parse_line(char *const start, int flags) { 2624resolv_conf_parse_line(char *const start, int flags) {
2618 char *strtok_state; 2625 char *strtok_state;
2619 static const char *const delims = " \t"; 2626 static const char *const delims = " \t";
2620#define NEXT_TOKEN strtok(NULL, delims, &strtok_state) 2627#define NEXT_TOKEN strtok_r(NULL, delims, &strtok_state)
2621 2628
2622 char *const first_token = strtok(start, delims, &strtok_state); 2629 char *const first_token = strtok_r(start, delims, &strtok_state);
2623 if (!first_token) return; 2630 if (!first_token) return;
2624 2631
2625 if (!strcmp(first_token, "nameserver") && (flags & DNS_OPTION_NAMESERVERS)) { 2632 if (!strcmp(first_token, "nameserver") && (flags & DNS_OPTION_NAMESERVERS)) {
2626 const char *const nameserver = NEXT_TOKEN; 2633 const char *const nameserver = NEXT_TOKEN;
2627 struct in_addr ina; 2634 struct in_addr ina;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines