mirror of https://github.com/getdnsapi/getdns.git
Changelog, idle_timeout test, formatting
This commit is contained in:
parent
68dfb15706
commit
0acdcc34b0
|
@ -3,6 +3,7 @@
|
||||||
* Added new transport list options in API. The option is now an ordered list of
|
* Added new transport list options in API. The option is now an ordered list of
|
||||||
GETDNS_TRANSPORT_UDP, GETDNS_TRANSPORT_TCP, GETDNS_TRANSPORT_TLS,
|
GETDNS_TRANSPORT_UDP, GETDNS_TRANSPORT_TCP, GETDNS_TRANSPORT_TLS,
|
||||||
GETDNS_TRANSPORT_STARTTLS.
|
GETDNS_TRANSPORT_STARTTLS.
|
||||||
|
* Added new context setting for idle_timeout
|
||||||
|
|
||||||
* 2015-05-21: Version 0.2.0
|
* 2015-05-21: Version 0.2.0
|
||||||
* Fix libversion numbering: Thanks Daniel Kahn Gillmor
|
* Fix libversion numbering: Thanks Daniel Kahn Gillmor
|
||||||
|
|
118
src/context.c
118
src/context.c
|
@ -142,7 +142,7 @@ create_default_namespaces(struct getdns_context *context)
|
||||||
static getdns_transport_list_t *
|
static getdns_transport_list_t *
|
||||||
get_dns_transport_list(getdns_context *context, int *count)
|
get_dns_transport_list(getdns_context *context, int *count)
|
||||||
{
|
{
|
||||||
if (context == NULL)
|
if (context == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
/* Count how many we have*/
|
/* Count how many we have*/
|
||||||
|
@ -151,13 +151,13 @@ get_dns_transport_list(getdns_context *context, int *count)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// use normal malloc here so users can do normal free
|
// use normal malloc here so users can do normal free
|
||||||
getdns_transport_list_t * transports = malloc(*count * sizeof(getdns_transport_list_t));
|
getdns_transport_list_t * transports = malloc(*count * sizeof(getdns_transport_list_t));
|
||||||
|
|
||||||
if(transports == NULL)
|
if(transports == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
for (int i = 0; i < (int)*count; i++) {
|
for (int i = 0; i < (int)*count; i++) {
|
||||||
switch(context->dns_base_transports[i]) {
|
switch(context->dns_base_transports[i]) {
|
||||||
case GETDNS_BASE_TRANSPORT_UDP:
|
case GETDNS_BASE_TRANSPORT_UDP:
|
||||||
transports[i] = GETDNS_TRANSPORT_UDP;
|
transports[i] = GETDNS_TRANSPORT_UDP;
|
||||||
break;
|
break;
|
||||||
|
@ -172,9 +172,9 @@ get_dns_transport_list(getdns_context *context, int *count)
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return transports;
|
return transports;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void canonicalize_dname(uint8_t *dname)
|
static inline void canonicalize_dname(uint8_t *dname)
|
||||||
|
@ -1201,17 +1201,17 @@ static getdns_return_t
|
||||||
getdns_set_base_dns_transports(struct getdns_context *context,
|
getdns_set_base_dns_transports(struct getdns_context *context,
|
||||||
size_t transport_count, getdns_transport_list_t *transports)
|
size_t transport_count, getdns_transport_list_t *transports)
|
||||||
{
|
{
|
||||||
RETURN_IF_NULL(context, GETDNS_RETURN_INVALID_PARAMETER);
|
RETURN_IF_NULL(context, GETDNS_RETURN_INVALID_PARAMETER);
|
||||||
for (int i = 0; i < GETDNS_BASE_TRANSPORT_MAX; i++)
|
for (int i = 0; i < GETDNS_BASE_TRANSPORT_MAX; i++)
|
||||||
context->dns_base_transports[i] = GETDNS_BASE_TRANSPORT_NONE;
|
context->dns_base_transports[i] = GETDNS_BASE_TRANSPORT_NONE;
|
||||||
|
|
||||||
if ((int)transport_count == 0 || transports == NULL ||
|
if ((int)transport_count == 0 || transports == NULL ||
|
||||||
(int)transport_count > GETDNS_BASE_TRANSPORT_MAX) {
|
(int)transport_count > GETDNS_BASE_TRANSPORT_MAX) {
|
||||||
return GETDNS_RETURN_CONTEXT_UPDATE_FAIL;
|
return GETDNS_RETURN_CONTEXT_UPDATE_FAIL;
|
||||||
}
|
}
|
||||||
|
|
||||||
for (size_t j = 0; j < transport_count; j++) {
|
for (size_t j = 0; j < transport_count; j++) {
|
||||||
switch(transports[j]) {
|
switch(transports[j]) {
|
||||||
case GETDNS_TRANSPORT_UDP:
|
case GETDNS_TRANSPORT_UDP:
|
||||||
context->dns_base_transports[j] = GETDNS_BASE_TRANSPORT_UDP;
|
context->dns_base_transports[j] = GETDNS_BASE_TRANSPORT_UDP;
|
||||||
break;
|
break;
|
||||||
|
@ -1226,9 +1226,9 @@ getdns_set_base_dns_transports(struct getdns_context *context,
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return GETDNS_RETURN_CONTEXT_UPDATE_FAIL;
|
return GETDNS_RETURN_CONTEXT_UPDATE_FAIL;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return GETDNS_RETURN_GOOD;
|
return GETDNS_RETURN_GOOD;
|
||||||
}
|
}
|
||||||
|
|
||||||
static getdns_return_t
|
static getdns_return_t
|
||||||
|
@ -1257,11 +1257,11 @@ set_ub_dns_transport(struct getdns_context* context) {
|
||||||
/* Fallthrough */
|
/* Fallthrough */
|
||||||
case GETDNS_BASE_TRANSPORT_STARTTLS:
|
case GETDNS_BASE_TRANSPORT_STARTTLS:
|
||||||
case GETDNS_BASE_TRANSPORT_TCP:
|
case GETDNS_BASE_TRANSPORT_TCP:
|
||||||
/* Note: no STARTTLS or fallback to TCP available directly in unbound, so we just
|
/* Note: no STARTTLS or fallback to TCP available directly in unbound, so we just
|
||||||
* use TCP for now to make sure the messages are sent. */
|
* use TCP for now to make sure the messages are sent. */
|
||||||
set_ub_string_opt(context, "do-udp:", "no");
|
set_ub_string_opt(context, "do-udp:", "no");
|
||||||
set_ub_string_opt(context, "do-tcp:", "yes");
|
set_ub_string_opt(context, "do-tcp:", "yes");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return GETDNS_RETURN_CONTEXT_UPDATE_FAIL;
|
return GETDNS_RETURN_CONTEXT_UPDATE_FAIL;
|
||||||
}
|
}
|
||||||
|
@ -1306,7 +1306,7 @@ getdns_context_set_dns_transport(struct getdns_context *context,
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return GETDNS_RETURN_CONTEXT_UPDATE_FAIL;
|
return GETDNS_RETURN_CONTEXT_UPDATE_FAIL;
|
||||||
}
|
}
|
||||||
/* Note that the call below does not have any effect in unbound after the
|
/* Note that the call below does not have any effect in unbound after the
|
||||||
* ctx is finalised so for recursive mode or stub + dnssec only the first
|
* ctx is finalised so for recursive mode or stub + dnssec only the first
|
||||||
* transport specified on the first query is used.
|
* transport specified on the first query is used.
|
||||||
|
@ -2525,39 +2525,39 @@ getdns_context_get_dns_transport(getdns_context *context,
|
||||||
getdns_transport_t* value) {
|
getdns_transport_t* value) {
|
||||||
RETURN_IF_NULL(context, GETDNS_RETURN_INVALID_PARAMETER);
|
RETURN_IF_NULL(context, GETDNS_RETURN_INVALID_PARAMETER);
|
||||||
RETURN_IF_NULL(value, GETDNS_RETURN_INVALID_PARAMETER);
|
RETURN_IF_NULL(value, GETDNS_RETURN_INVALID_PARAMETER);
|
||||||
int count;
|
int count;
|
||||||
getdns_transport_list_t *transport_list =
|
getdns_transport_list_t *transport_list =
|
||||||
get_dns_transport_list(context, &count);
|
get_dns_transport_list(context, &count);
|
||||||
if (!count)
|
if (!count)
|
||||||
return GETDNS_RETURN_WRONG_TYPE_REQUESTED;
|
return GETDNS_RETURN_WRONG_TYPE_REQUESTED;
|
||||||
|
|
||||||
/* Best effort mapping for backwards compatibility*/
|
/* Best effort mapping for backwards compatibility*/
|
||||||
if (transport_list[0] == GETDNS_TRANSPORT_UDP) {
|
if (transport_list[0] == GETDNS_TRANSPORT_UDP) {
|
||||||
if (count == 1)
|
if (count == 1)
|
||||||
*value = GETDNS_TRANSPORT_UDP_ONLY;
|
*value = GETDNS_TRANSPORT_UDP_ONLY;
|
||||||
else if (count == 2 && transport_list[1] == GETDNS_TRANSPORT_TCP)
|
else if (count == 2 && transport_list[1] == GETDNS_TRANSPORT_TCP)
|
||||||
*value = GETDNS_TRANSPORT_UDP_FIRST_AND_FALL_BACK_TO_TCP;
|
*value = GETDNS_TRANSPORT_UDP_FIRST_AND_FALL_BACK_TO_TCP;
|
||||||
else
|
else
|
||||||
return GETDNS_RETURN_WRONG_TYPE_REQUESTED;
|
return GETDNS_RETURN_WRONG_TYPE_REQUESTED;
|
||||||
}
|
}
|
||||||
if (transport_list[0] == GETDNS_TRANSPORT_TCP) {
|
if (transport_list[0] == GETDNS_TRANSPORT_TCP) {
|
||||||
if (count == 1)
|
if (count == 1)
|
||||||
*value = GETDNS_TRANSPORT_TCP_ONLY_KEEP_CONNECTIONS_OPEN;
|
*value = GETDNS_TRANSPORT_TCP_ONLY_KEEP_CONNECTIONS_OPEN;
|
||||||
}
|
}
|
||||||
if (transport_list[0] == GETDNS_TRANSPORT_TLS) {
|
if (transport_list[0] == GETDNS_TRANSPORT_TLS) {
|
||||||
if (count == 1)
|
if (count == 1)
|
||||||
*value = GETDNS_TRANSPORT_TLS_ONLY_KEEP_CONNECTIONS_OPEN;
|
*value = GETDNS_TRANSPORT_TLS_ONLY_KEEP_CONNECTIONS_OPEN;
|
||||||
else if (count == 2 && transport_list[1] == GETDNS_TRANSPORT_TCP)
|
else if (count == 2 && transport_list[1] == GETDNS_TRANSPORT_TCP)
|
||||||
*value = GETDNS_TRANSPORT_TLS_FIRST_AND_FALL_BACK_TO_TCP_KEEP_CONNECTIONS_OPEN;
|
*value = GETDNS_TRANSPORT_TLS_FIRST_AND_FALL_BACK_TO_TCP_KEEP_CONNECTIONS_OPEN;
|
||||||
else
|
else
|
||||||
return GETDNS_RETURN_WRONG_TYPE_REQUESTED;
|
return GETDNS_RETURN_WRONG_TYPE_REQUESTED;
|
||||||
}
|
}
|
||||||
if (transport_list[0] == GETDNS_TRANSPORT_STARTTLS) {
|
if (transport_list[0] == GETDNS_TRANSPORT_STARTTLS) {
|
||||||
if (count == 2 && transport_list[1] == GETDNS_TRANSPORT_TCP)
|
if (count == 2 && transport_list[1] == GETDNS_TRANSPORT_TCP)
|
||||||
*value = GETDNS_TRANSPORT_STARTTLS_FIRST_AND_FALL_BACK_TO_TCP_KEEP_CONNECTIONS_OPEN;
|
*value = GETDNS_TRANSPORT_STARTTLS_FIRST_AND_FALL_BACK_TO_TCP_KEEP_CONNECTIONS_OPEN;
|
||||||
else
|
else
|
||||||
return GETDNS_RETURN_WRONG_TYPE_REQUESTED;
|
return GETDNS_RETURN_WRONG_TYPE_REQUESTED;
|
||||||
}
|
}
|
||||||
return GETDNS_RETURN_GOOD;
|
return GETDNS_RETURN_GOOD;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2568,15 +2568,15 @@ getdns_context_get_dns_transport_list(getdns_context *context,
|
||||||
RETURN_IF_NULL(transport_count, GETDNS_RETURN_INVALID_PARAMETER);
|
RETURN_IF_NULL(transport_count, GETDNS_RETURN_INVALID_PARAMETER);
|
||||||
RETURN_IF_NULL(transports, GETDNS_RETURN_INVALID_PARAMETER);
|
RETURN_IF_NULL(transports, GETDNS_RETURN_INVALID_PARAMETER);
|
||||||
|
|
||||||
int count;
|
int count;
|
||||||
getdns_transport_list_t *transport_list =
|
getdns_transport_list_t *transport_list =
|
||||||
get_dns_transport_list(context, &count);
|
get_dns_transport_list(context, &count);
|
||||||
*transport_count = count;
|
*transport_count = count;
|
||||||
if (!transport_count) {
|
if (!transport_count) {
|
||||||
*transports = NULL;
|
*transports = NULL;
|
||||||
return GETDNS_RETURN_GOOD;
|
return GETDNS_RETURN_GOOD;
|
||||||
}
|
}
|
||||||
*transports = transport_list;
|
*transports = transport_list;
|
||||||
return GETDNS_RETURN_GOOD;
|
return GETDNS_RETURN_GOOD;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -77,6 +77,39 @@ START_TEST (getdns_context_set_timeout_2)
|
||||||
}
|
}
|
||||||
END_TEST
|
END_TEST
|
||||||
|
|
||||||
|
START_TEST (getdns_context_set_idle_timeout_1)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* context is NULL
|
||||||
|
* expect: GETDNS_RETURN_INVALID_PARAMETER
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct getdns_context *context = NULL;
|
||||||
|
|
||||||
|
ASSERT_RC(getdns_context_set_idle_timeout(context, 1000),
|
||||||
|
GETDNS_RETURN_INVALID_PARAMETER, "Return code from getdns_context_set_timeout()");
|
||||||
|
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
|
START_TEST (getdns_context_set_idle_timeout_2)
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* timeout is 0
|
||||||
|
* expect: GETDNS_RETURN_INVALID_PARAMETER
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct getdns_context *context = NULL;
|
||||||
|
CONTEXT_CREATE(TRUE);
|
||||||
|
|
||||||
|
ASSERT_RC(getdns_context_set_idle_timeout(context, 0),
|
||||||
|
GETDNS_RETURN_INVALID_PARAMETER, "Return code from getdns_context_set_timeout()");
|
||||||
|
|
||||||
|
CONTEXT_DESTROY;
|
||||||
|
|
||||||
|
}
|
||||||
|
END_TEST
|
||||||
|
|
||||||
#define GETDNS_STR_IPV4 "IPv4"
|
#define GETDNS_STR_IPV4 "IPv4"
|
||||||
#define GETDNS_STR_IPV6 "IPv6"
|
#define GETDNS_STR_IPV6 "IPv6"
|
||||||
#define GETDNS_STR_ADDRESS_TYPE "address_type"
|
#define GETDNS_STR_ADDRESS_TYPE "address_type"
|
||||||
|
@ -270,6 +303,8 @@ getdns_context_set_timeout_suite (void)
|
||||||
TCase *tc_neg = tcase_create("Negative");
|
TCase *tc_neg = tcase_create("Negative");
|
||||||
tcase_add_test(tc_neg, getdns_context_set_timeout_1);
|
tcase_add_test(tc_neg, getdns_context_set_timeout_1);
|
||||||
tcase_add_test(tc_neg, getdns_context_set_timeout_2);
|
tcase_add_test(tc_neg, getdns_context_set_timeout_2);
|
||||||
|
tcase_add_test(tc_neg, getdns_context_set_idle_timeout_1);
|
||||||
|
tcase_add_test(tc_neg, getdns_context_set_idle_timeout_2);
|
||||||
suite_add_tcase(s, tc_neg);
|
suite_add_tcase(s, tc_neg);
|
||||||
|
|
||||||
/* Positive test cases */
|
/* Positive test cases */
|
||||||
|
|
Loading…
Reference in New Issue