- ares.h no longer uses the HAVE_STRUCT_IN6_ADDR define check, but instead it

now declares the private struct ares_in6_addr for all systems instead of
  relying on one possibly not present in the system.
This commit is contained in:
Daniel Stenberg 2009-01-14 13:08:50 +00:00
parent 3dcd6bc597
commit 29b6a732f3
3 changed files with 24 additions and 10 deletions

View File

@ -1,5 +1,10 @@
Changelog for the c-ares project Changelog for the c-ares project
* January 14 2009 (Daniel Stenberg)
- ares.h no longer uses the HAVE_STRUCT_IN6_ADDR define check, but instead it
now declares the private struct ares_in6_addr for all systems instead of
relying on one possibly not present in the system.
* January 13 2009 (Phil Blundell) * January 13 2009 (Phil Blundell)
- ares__send_query() now varies the retry timeout pseudo-randomly to avoid - ares__send_query() now varies the retry timeout pseudo-randomly to avoid
packet storms when several queries were started at the same time. packet storms when several queries were started at the same time.

View File

@ -2,7 +2,8 @@ This is what's new and changed in the c-ares 1.6.1 release:
Changed: Changed:
o o in6_addr is not used in ares.h anymore, but a private ares_in6_addr is instead
declared and used
Fixed: Fixed:

View File

@ -1,7 +1,7 @@
/* $Id$ */ /* $Id$ */
/* Copyright 1998 by the Massachusetts Institute of Technology. /* Copyright 1998 by the Massachusetts Institute of Technology.
* Copyright (C) 2007-2008 by Daniel Stenberg * Copyright (C) 2007-2009 by Daniel Stenberg
* *
* Permission to use, copy, modify, and distribute this * Permission to use, copy, modify, and distribute this
* software and its documentation for any purpose and without * software and its documentation for any purpose and without
@ -275,21 +275,29 @@ int ares_expand_name(const unsigned char *encoded, const unsigned char *abuf,
int ares_expand_string(const unsigned char *encoded, const unsigned char *abuf, int ares_expand_string(const unsigned char *encoded, const unsigned char *abuf,
int alen, unsigned char **s, long *enclen); int alen, unsigned char **s, long *enclen);
#if !defined(HAVE_STRUCT_IN6_ADDR) && !defined(s6_addr) /*
struct in6_addr { * NOTE: before c-ares 1.6.1 we would most often use the system in6_addr
* struct below when ares itself was built, but many apps would use this
* private version since the header checked a HAVE_* define for it. Starting
* with 1.6.1 we always declare and use our own to stop relying on the
* system's one.
*/
struct ares_in6_addr {
union { union {
unsigned char _S6_u8[16]; unsigned char _S6_u8[16];
} _S6_un; } _S6_un;
}; };
#define s6_addr _S6_un._S6_u8
#endif
/*
* TODO: the structs 'addrttl' and 'addr6ttl' really should get their names
* prefixed with ares_ to keep them in our own "name space".
*/
struct addrttl { struct addrttl {
struct in_addr ipaddr; struct in_addr ipaddr;
int ttl; int ttl;
}; };
struct addr6ttl { struct addr6ttl {
struct in6_addr ip6addr; struct ares_in6_addr ip6addr;
int ttl; int ttl;
}; };
@ -304,12 +312,12 @@ int ares_parse_a_reply(const unsigned char *abuf, int alen,
struct hostent **host, struct hostent **host,
struct addrttl *addrttls, int *naddrttls); struct addrttl *addrttls, int *naddrttls);
int ares_parse_aaaa_reply(const unsigned char *abuf, int alen, int ares_parse_aaaa_reply(const unsigned char *abuf, int alen,
struct hostent **host, struct hostent **host,
struct addr6ttl *addrttls, int *naddrttls); struct addr6ttl *addrttls, int *naddrttls);
int ares_parse_ptr_reply(const unsigned char *abuf, int alen, const void *addr, int ares_parse_ptr_reply(const unsigned char *abuf, int alen, const void *addr,
int addrlen, int family, struct hostent **host); int addrlen, int family, struct hostent **host);
int ares_parse_ns_reply(const unsigned char *abuf, int alen, int ares_parse_ns_reply(const unsigned char *abuf, int alen,
struct hostent **host); struct hostent **host);
void ares_free_string(void *str); void ares_free_string(void *str);
void ares_free_hostent(struct hostent *host); void ares_free_hostent(struct hostent *host);
const char *ares_strerror(int code); const char *ares_strerror(int code);