clang-format

pull/715/head
Brad House 1 year ago
parent e5585105cd
commit fe04c6cadd
  1. 18
      include/ares_dns_record.h
  2. 8
      src/lib/ares__htable.c
  3. 3
      src/lib/ares__htable.h
  4. 7
      src/lib/ares__htable_asvp.c
  5. 3
      src/lib/ares__htable_asvp.h
  6. 9
      src/lib/ares__socket.c
  7. 12
      src/lib/ares_dns_parse.c
  8. 6
      src/lib/ares_options.c
  9. 4
      src/lib/ares_private.h
  10. 1
      src/lib/ares_send.c
  11. 54
      test/ares-test.h

@ -386,12 +386,18 @@ typedef enum {
/*! Data type for flags to ares_dns_parse() */ /*! Data type for flags to ares_dns_parse() */
typedef enum { typedef enum {
ARES_DNS_PARSE_AN_BASE_RAW = 1 << 0, /*!< Parse Answers from RFC 1035 that allow name compression as RAW */ /*! Parse Answers from RFC 1035 that allow name compression as RAW */
ARES_DNS_PARSE_NS_BASE_RAW = 1 << 1, /*!< Parse Authority from RFC 1035 that allow name compression as RAW */ ARES_DNS_PARSE_AN_BASE_RAW = 1 << 0,
ARES_DNS_PARSE_AR_BASE_RAW = 1 << 2, /*!< Parse Additional from RFC 1035 that allow name compression as RAW */ /*! Parse Authority from RFC 1035 that allow name compression as RAW */
ARES_DNS_PARSE_AN_EXT_RAW = 1 << 3, /*!< Parse Answers from later RFCs (no name compression) RAW */ ARES_DNS_PARSE_NS_BASE_RAW = 1 << 1,
ARES_DNS_PARSE_NS_EXT_RAW = 1 << 4, /*!< Parse Authority from later RFCs (no name compression) as RAW */ /*! Parse Additional from RFC 1035 that allow name compression as RAW */
ARES_DNS_PARSE_AR_EXT_RAW = 1 << 5, /*!< Parse Additional from later RFCs (no name compression) as RAW */ ARES_DNS_PARSE_AR_BASE_RAW = 1 << 2,
/*! Parse Answers from later RFCs (no name compression) RAW */
ARES_DNS_PARSE_AN_EXT_RAW = 1 << 3,
/*! Parse Authority from later RFCs (no name compression) as RAW */
ARES_DNS_PARSE_NS_EXT_RAW = 1 << 4,
/*< Parse Additional from later RFCs (no name compression) as RAW */
ARES_DNS_PARSE_AR_EXT_RAW = 1 << 5
} ares_dns_parse_flags_t; } ares_dns_parse_flags_t;
/*! String representation of DNS Record Type /*! String representation of DNS Record Type

@ -135,21 +135,22 @@ fail:
return NULL; return NULL;
} }
const void **ares__htable_all_buckets(const ares__htable_t *htable, size_t *num) const void **ares__htable_all_buckets(const ares__htable_t *htable, size_t *num)
{ {
const void **out = NULL; const void **out = NULL;
size_t cnt = 0; size_t cnt = 0;
size_t i; size_t i;
if (htable == NULL || num == NULL) if (htable == NULL || num == NULL) {
return NULL; return NULL;
}
*num = 0; *num = 0;
out = ares_malloc_zero(sizeof(*out) * htable->num_keys); out = ares_malloc_zero(sizeof(*out) * htable->num_keys);
if (out == NULL) if (out == NULL) {
return NULL; return NULL;
}
for (i = 0; i < htable->size; i++) { for (i = 0; i < htable->size; i++) {
ares__llist_node_t *node; ares__llist_node_t *node;
@ -163,7 +164,6 @@ const void **ares__htable_all_buckets(const ares__htable_t *htable, size_t *num)
return out; return out;
} }
/*! Grabs the Hashtable index from the key and length. The h index is /*! Grabs the Hashtable index from the key and length. The h index is
* the hash of the function reduced to the size of the bucket list. * the hash of the function reduced to the size of the bucket list.
* We are doing "hash & (size - 1)" since we are guaranteeing a power of * We are doing "hash & (size - 1)" since we are guaranteeing a power of

@ -120,7 +120,8 @@ size_t ares__htable_num_keys(const ares__htable_t *htable);
* will be a dangling pointer. It is expected wrappers will make * will be a dangling pointer. It is expected wrappers will make
* such values safe by duplicating them. * such values safe by duplicating them.
*/ */
const void **ares__htable_all_buckets(const ares__htable_t *htable, size_t *num); const void **ares__htable_all_buckets(const ares__htable_t *htable,
size_t *num);
/*! Insert bucket into hashtable /*! Insert bucket into hashtable
* *

@ -112,15 +112,17 @@ fail:
return NULL; return NULL;
} }
ares_socket_t *ares__htable_asvp_keys(const ares__htable_asvp_t *htable, size_t *num) ares_socket_t *ares__htable_asvp_keys(const ares__htable_asvp_t *htable,
size_t *num)
{ {
const void **buckets = NULL; const void **buckets = NULL;
size_t cnt = 0; size_t cnt = 0;
ares_socket_t *out = NULL; ares_socket_t *out = NULL;
size_t i; size_t i;
if (htable == NULL || num == NULL) if (htable == NULL || num == NULL) {
return NULL; return NULL;
}
*num = 0; *num = 0;
@ -144,7 +146,6 @@ ares_socket_t *ares__htable_asvp_keys(const ares__htable_asvp_t *htable, size_t
return out; return out;
} }
ares_bool_t ares__htable_asvp_insert(ares__htable_asvp_t *htable, ares_bool_t ares__htable_asvp_insert(ares__htable_asvp_t *htable,
ares_socket_t key, void *val) ares_socket_t key, void *val)
{ {

@ -74,7 +74,8 @@ ares__htable_asvp_t *
* \param[out] num_keys Count of returned keys * \param[out] num_keys Count of returned keys
* \return Array of keys in the hashtable. Must be free'd with ares_free(). * \return Array of keys in the hashtable. Must be free'd with ares_free().
*/ */
ares_socket_t *ares__htable_asvp_keys(const ares__htable_asvp_t *htable, size_t *num); ares_socket_t *ares__htable_asvp_keys(const ares__htable_asvp_t *htable,
size_t *num);
/*! Insert key/value into hash table /*! Insert key/value into hash table

@ -450,8 +450,9 @@ ares_ssize_t ares__socket_write(ares_channel_t *channel, ares_socket_t s,
void ares_set_socket_callback(ares_channel_t *channel, void ares_set_socket_callback(ares_channel_t *channel,
ares_sock_create_callback cb, void *data) ares_sock_create_callback cb, void *data)
{ {
if (channel == NULL) if (channel == NULL) {
return; return;
}
channel->sock_create_cb = cb; channel->sock_create_cb = cb;
channel->sock_create_cb_data = data; channel->sock_create_cb_data = data;
} }
@ -460,8 +461,9 @@ void ares_set_socket_configure_callback(ares_channel_t *channel,
ares_sock_config_callback cb, ares_sock_config_callback cb,
void *data) void *data)
{ {
if (channel == NULL || channel->optmask & ARES_OPT_EVENT_THREAD) if (channel == NULL || channel->optmask & ARES_OPT_EVENT_THREAD) {
return; return;
}
channel->sock_config_cb = cb; channel->sock_config_cb = cb;
channel->sock_config_cb_data = data; channel->sock_config_cb_data = data;
} }
@ -470,8 +472,9 @@ void ares_set_socket_functions(ares_channel_t *channel,
const struct ares_socket_functions *funcs, const struct ares_socket_functions *funcs,
void *data) void *data)
{ {
if (channel == NULL || channel->optmask & ARES_OPT_EVENT_THREAD) if (channel == NULL || channel->optmask & ARES_OPT_EVENT_THREAD) {
return; return;
}
channel->sock_funcs = funcs; channel->sock_funcs = funcs;
channel->sock_func_cb_data = data; channel->sock_func_cb_data = data;
} }

@ -1067,13 +1067,19 @@ static ares_status_t ares_dns_parse_rr(ares__buf_t *buf, unsigned int flags,
} }
namecomp = ares_dns_rec_type_allow_name_compression(type); namecomp = ares_dns_rec_type_allow_name_compression(type);
if (sect == ARES_SECTION_ANSWER && (flags & (namecomp ? ARES_DNS_PARSE_AN_BASE_RAW : ARES_DNS_PARSE_AN_EXT_RAW))) { if (sect == ARES_SECTION_ANSWER &&
(flags &
(namecomp ? ARES_DNS_PARSE_AN_BASE_RAW : ARES_DNS_PARSE_AN_EXT_RAW))) {
type = ARES_REC_TYPE_RAW_RR; type = ARES_REC_TYPE_RAW_RR;
} }
if (sect == ARES_SECTION_AUTHORITY && (flags & (namecomp ? ARES_DNS_PARSE_NS_BASE_RAW : ARES_DNS_PARSE_NS_EXT_RAW))) { if (sect == ARES_SECTION_AUTHORITY &&
(flags &
(namecomp ? ARES_DNS_PARSE_NS_BASE_RAW : ARES_DNS_PARSE_NS_EXT_RAW))) {
type = ARES_REC_TYPE_RAW_RR; type = ARES_REC_TYPE_RAW_RR;
} }
if (sect == ARES_SECTION_ADDITIONAL && (flags & (namecomp ? ARES_DNS_PARSE_AR_BASE_RAW : ARES_DNS_PARSE_AR_EXT_RAW))) { if (sect == ARES_SECTION_ADDITIONAL &&
(flags &
(namecomp ? ARES_DNS_PARSE_AR_BASE_RAW : ARES_DNS_PARSE_AR_EXT_RAW))) {
type = ARES_REC_TYPE_RAW_RR; type = ARES_REC_TYPE_RAW_RR;
} }

@ -275,10 +275,12 @@ ares_status_t ares__init_by_options(ares_channel_t *channel,
/* Event Thread requires threading support and is incompatible with socket /* Event Thread requires threading support and is incompatible with socket
* state callbacks */ * state callbacks */
if (optmask & ARES_OPT_EVENT_THREAD) { if (optmask & ARES_OPT_EVENT_THREAD) {
if (!ares_threadsafety()) if (!ares_threadsafety()) {
return ARES_ENOTIMP; return ARES_ENOTIMP;
if (optmask & ARES_OPT_SOCK_STATE_CB) }
if (optmask & ARES_OPT_SOCK_STATE_CB) {
return ARES_EFORMERR; return ARES_EFORMERR;
}
channel->evsys = options->evsys; channel->evsys = options->evsys;
} }

@ -138,7 +138,9 @@ typedef struct ares_rand_state ares_rand_state;
#endif #endif
/********* EDNS defines section ******/ /********* EDNS defines section ******/
#define EDNSPACKETSZ 1232 /* Reasonable UDP payload size, as agreed by operators https://www.dnsflagday.net/2020/#faq */ #define EDNSPACKETSZ \
1232 /* Reasonable UDP payload size, as agreed by operators \
https://www.dnsflagday.net/2020/#faq */
#define MAXENDSSZ 4096 /* Maximum (local) limit for edns packet size */ #define MAXENDSSZ 4096 /* Maximum (local) limit for edns packet size */
#define EDNSFIXEDSZ 11 /* Size of EDNS header */ #define EDNSFIXEDSZ 11 /* Size of EDNS header */

@ -164,7 +164,6 @@ void ares_send(ares_channel_t *channel, const unsigned char *qbuf, int qlen,
ares__channel_unlock(channel); ares__channel_unlock(channel);
} }
size_t ares_queue_active_queries(ares_channel_t *channel) size_t ares_queue_active_queries(ares_channel_t *channel)
{ {
size_t len; size_t len;

54
test/ares-test.h vendored

@ -70,9 +70,12 @@ extern const std::vector<std::pair<int, bool>> both_families_both_modes;
extern const std::vector<std::pair<int, bool>> ipv4_family_both_modes; extern const std::vector<std::pair<int, bool>> ipv4_family_both_modes;
extern const std::vector<std::pair<int, bool>> ipv6_family_both_modes; extern const std::vector<std::pair<int, bool>> ipv6_family_both_modes;
extern const std::vector<std::tuple<ares_evsys_t, int, bool>> all_evsys_ipv4_family_both_modes; extern const std::vector<std::tuple<ares_evsys_t, int, bool>>
extern const std::vector<std::tuple<ares_evsys_t, int, bool>> all_evsys_ipv6_family_both_modes; all_evsys_ipv4_family_both_modes;
extern const std::vector<std::tuple<ares_evsys_t, int, bool>> all_evsys_both_families_both_modes; extern const std::vector<std::tuple<ares_evsys_t, int, bool>>
all_evsys_ipv6_family_both_modes;
extern const std::vector<std::tuple<ares_evsys_t, int, bool>>
all_evsys_both_families_both_modes;
extern const std::vector<std::tuple<ares_evsys_t, int>> all_evsys_ipv4_family; extern const std::vector<std::tuple<ares_evsys_t, int>> all_evsys_ipv4_family;
extern const std::vector<std::tuple<ares_evsys_t, int>> all_evsys_ipv6_family; extern const std::vector<std::tuple<ares_evsys_t, int>> all_evsys_ipv6_family;
@ -95,11 +98,10 @@ std::set<ares_socket_t> NoExtraFDs();
const char *af_tostr(int af); const char *af_tostr(int af);
const char *mode_tostr(bool mode); const char *mode_tostr(bool mode);
std::string PrintFamilyMode(const testing::TestParamInfo<std::pair<int, bool>> &info); std::string
PrintFamilyMode(const testing::TestParamInfo<std::pair<int, bool>> &info);
std::string PrintFamily(const testing::TestParamInfo<int> &info); std::string PrintFamily(const testing::TestParamInfo<int> &info);
// Test fixture that ensures library initialization, and allows // Test fixture that ensures library initialization, and allows
// memory allocations to be failed. // memory allocations to be failed.
class LibraryTest : public ::testing::Test { class LibraryTest : public ::testing::Test {
@ -345,17 +347,20 @@ public:
} }
}; };
class MockEventThreadOptsTest : public MockChannelOptsTest { class MockEventThreadOptsTest : public MockChannelOptsTest {
public: public:
MockEventThreadOptsTest(int count, ares_evsys_t evsys, int family, bool force_tcp, MockEventThreadOptsTest(int count, ares_evsys_t evsys, int family,
struct ares_options *givenopts, int optmask) bool force_tcp, struct ares_options *givenopts,
: MockChannelOptsTest(count, family, force_tcp, FillOptionsET(&evopts_, givenopts, evsys), optmask | ARES_OPT_EVENT_THREAD) int optmask)
: MockChannelOptsTest(count, family, force_tcp,
FillOptionsET(&evopts_, givenopts, evsys),
optmask | ARES_OPT_EVENT_THREAD)
{ {
cancel_ms_ = 0; cancel_ms_ = 0;
isup = true; isup = true;
thread = std::thread(&MockEventThreadOptsTest::ProcessThread, this); thread = std::thread(&MockEventThreadOptsTest::ProcessThread, this);
} }
~MockEventThreadOptsTest() ~MockEventThreadOptsTest()
{ {
mutex.lock(); mutex.lock();
@ -364,7 +369,10 @@ public:
thread.join(); thread.join();
} }
static struct ares_options *FillOptionsET(struct ares_options *opts, struct ares_options *givenopts, ares_evsys_t evsys) { static struct ares_options *FillOptionsET(struct ares_options *opts,
struct ares_options *givenopts,
ares_evsys_t evsys)
{
if (givenopts) { if (givenopts) {
memcpy(opts, givenopts, sizeof(*opts)); memcpy(opts, givenopts, sizeof(*opts));
} else { } else {
@ -374,7 +382,8 @@ public:
return opts; return opts;
} }
void Process(unsigned int cancel_ms = 0) { void Process(unsigned int cancel_ms = 0)
{
mutex.lock(); mutex.lock();
cancel_ms_ = cancel_ms; cancel_ms_ = cancel_ms;
mutex.unlock(); mutex.unlock();
@ -395,30 +404,35 @@ class MockEventThreadTest
public ::testing::WithParamInterface<std::tuple<ares_evsys_t, int, bool>> { public ::testing::WithParamInterface<std::tuple<ares_evsys_t, int, bool>> {
public: public:
MockEventThreadTest() MockEventThreadTest()
: MockEventThreadOptsTest(1, std::get<0>(GetParam()), std::get<1>(GetParam()), std::get<2>(GetParam()), nullptr, 0) : MockEventThreadOptsTest(1, std::get<0>(GetParam()),
std::get<1>(GetParam()), std::get<2>(GetParam()),
nullptr, 0)
{ {
} }
}; };
class MockUDPEventThreadTest : public MockEventThreadOptsTest, class MockUDPEventThreadTest
: public MockEventThreadOptsTest,
public ::testing::WithParamInterface<std::tuple<ares_evsys_t, int>> { public ::testing::WithParamInterface<std::tuple<ares_evsys_t, int>> {
public: public:
MockUDPEventThreadTest() : MockEventThreadOptsTest(1, std::get<0>(GetParam()), std::get<1>(GetParam()), false, nullptr, 0) MockUDPEventThreadTest()
: MockEventThreadOptsTest(1, std::get<0>(GetParam()),
std::get<1>(GetParam()), false, nullptr, 0)
{ {
} }
}; };
class MockTCPEventThreadTest : public MockEventThreadOptsTest, class MockTCPEventThreadTest
: public MockEventThreadOptsTest,
public ::testing::WithParamInterface<std::tuple<ares_evsys_t, int>> { public ::testing::WithParamInterface<std::tuple<ares_evsys_t, int>> {
public: public:
MockTCPEventThreadTest() : MockEventThreadOptsTest(1, std::get<0>(GetParam()), std::get<1>(GetParam()), true, nullptr, 0) MockTCPEventThreadTest()
: MockEventThreadOptsTest(1, std::get<0>(GetParam()),
std::get<1>(GetParam()), true, nullptr, 0)
{ {
} }
}; };
// gMock action to set the reply for a mock server. // gMock action to set the reply for a mock server.
ACTION_P2(SetReplyData, mockserver, data) ACTION_P2(SetReplyData, mockserver, data)
{ {

Loading…
Cancel
Save