#include <event2/event-config.h>
+/* Compatibility for possible missing IPv6 declarations */
+#include "../ipv6-internal.h"
+
#include <sys/types.h>
#ifdef WIN32
gai_callback(int err, struct evutil_addrinfo *ai, void *arg)
{
const char *name = arg;
- struct evutil_addrinfo *ai_first = NULL;
int i;
if (err) {
printf("%s: %s\n", name, evutil_gai_strerror(err));
printf("[%d] %s: %s\n",i,name,buf);
}
}
- if (ai_first)
- evutil_freeaddrinfo(ai_first);
}
static void
printf(" -- replying for %s (PTR)\n", req->questions[i]->name);
r = evdns_server_request_add_ptr_reply(req, NULL, req->questions[i]->name,
"foo.bar.example.com", 10);
+ if (r<0)
+ printf("ugh, no luck");
} else {
printf(" -- skipping %s [%d %d]\n", req->questions[i]->name,
req->questions[i]->type, req->questions[i]->dns_question_class);
++idx;
}
+#ifdef WIN32
+ {
+ WSADATA WSAData;
+ WSAStartup(0x101, &WSAData);
+ }
+#endif
+
event_base = event_base_new();
evdns_base = evdns_base_new(event_base, 0);
evdns_set_log_fn(logfn);
evutil_socket_t sock;
struct sockaddr_in my_addr;
sock = socket(PF_INET, SOCK_DGRAM, 0);
+ if (sock == -1) {
+ perror("socket");
+ exit(1);
+ }
evutil_make_socket_nonblocking(sock);
my_addr.sin_family = AF_INET;
my_addr.sin_port = htons(10053);
evdns_add_server_port_with_base(event_base, sock, 0, evdns_server_callback, NULL);
}
if (idx < c) {
+ int res;
#ifdef WIN32
- evdns_base_config_windows_nameservers(evdns_base);
+ res = evdns_base_config_windows_nameservers(evdns_base);
#else
- evdns_base_resolv_conf_parse(evdns_base, DNS_OPTION_NAMESERVERS,
+ res = evdns_base_resolv_conf_parse(evdns_base, DNS_OPTION_NAMESERVERS,
"/etc/resolv.conf");
#endif
+ if (res < 0) {
+ fprintf(stderr, "Couldn't configure nameservers");
+ return 1;
+ }
}
printf("EVUTIL_AI_CANONNAME in example = %d\n", EVUTIL_AI_CANONNAME);