Notify for not implemented namespaces and ...

follow_redirects.
This commit is contained in:
Willem Toorop 2015-12-30 13:55:45 +01:00
parent 2a9dd53d8d
commit 8c46e969d6
1 changed files with 43 additions and 39 deletions

View File

@ -1383,37 +1383,40 @@ getdns_context_set_resolution_type(struct getdns_context *context,
* *
*/ */
getdns_return_t getdns_return_t
getdns_context_set_namespaces(struct getdns_context *context, getdns_context_set_namespaces(getdns_context *context,
size_t namespace_count, getdns_namespace_t *namespaces) size_t namespace_count, getdns_namespace_t *namespaces)
{ {
size_t i; size_t i;
getdns_return_t r = GETDNS_RETURN_GOOD;
RETURN_IF_NULL(context, GETDNS_RETURN_INVALID_PARAMETER); if (!context)
if (namespace_count == 0 || namespaces == NULL) { return GETDNS_RETURN_INVALID_PARAMETER;
return GETDNS_RETURN_CONTEXT_UPDATE_FAIL;
}
for(i=0; i<namespace_count; i++) if (namespace_count == 0 || namespaces == NULL)
{ return GETDNS_RETURN_CONTEXT_UPDATE_FAIL;
if( namespaces[i] != GETDNS_NAMESPACE_DNS
&& namespaces[i] != GETDNS_NAMESPACE_LOCALNAMES for (i = 0; i < namespace_count; i++) {
&& namespaces[i] != GETDNS_NAMESPACE_NETBIOS if (namespaces[i] == GETDNS_NAMESPACE_NETBIOS ||
&& namespaces[i] != GETDNS_NAMESPACE_MDNS namespaces[i] == GETDNS_NAMESPACE_MDNS ||
&& namespaces[i] != GETDNS_NAMESPACE_NIS) namespaces[i] == GETDNS_NAMESPACE_NIS)
r = GETDNS_RETURN_NOT_IMPLEMENTED;
else if (namespaces[i] != GETDNS_NAMESPACE_DNS &&
namespaces[i] != GETDNS_NAMESPACE_LOCALNAMES)
return GETDNS_RETURN_INVALID_PARAMETER; return GETDNS_RETURN_INVALID_PARAMETER;
} }
GETDNS_FREE(context->my_mf, context->namespaces);
GETDNS_FREE(context->my_mf, context->namespaces); /** duplicate **/
context->namespaces = GETDNS_XMALLOC(
/** duplicate **/ context->my_mf, getdns_namespace_t, namespace_count);
context->namespaces = GETDNS_XMALLOC(context->my_mf, getdns_namespace_t, (void) memcpy(context->namespaces, namespaces,
namespace_count); namespace_count * sizeof(getdns_namespace_t));
memcpy(context->namespaces, namespaces,
namespace_count * sizeof(getdns_namespace_t));
context->namespace_count = namespace_count; context->namespace_count = namespace_count;
dispatch_updated(context, GETDNS_CONTEXT_CODE_NAMESPACES);
return GETDNS_RETURN_GOOD; dispatch_updated(context, GETDNS_CONTEXT_CODE_NAMESPACES);
return r;
} /* getdns_context_set_namespaces */ } /* getdns_context_set_namespaces */
static getdns_return_t static getdns_return_t
@ -1678,21 +1681,21 @@ getdns_context_set_idle_timeout(struct getdns_context *context, uint64_t timeout
* *
*/ */
getdns_return_t getdns_return_t
getdns_context_set_follow_redirects(struct getdns_context *context, getdns_context_set_follow_redirects(
getdns_redirects_t value) getdns_context *context, getdns_redirects_t value)
{ {
RETURN_IF_NULL(context, GETDNS_RETURN_INVALID_PARAMETER); if (!context)
if (value != GETDNS_REDIRECTS_FOLLOW && value != GETDNS_REDIRECTS_DO_NOT_FOLLOW) return GETDNS_RETURN_INVALID_PARAMETER;
return GETDNS_RETURN_INVALID_PARAMETER;
context->follow_redirects = value; if (value != GETDNS_REDIRECTS_FOLLOW &&
if (context->resolution_type_set != 0) { value != GETDNS_REDIRECTS_DO_NOT_FOLLOW)
/* already setup */ return GETDNS_RETURN_INVALID_PARAMETER;
return GETDNS_RETURN_CONTEXT_UPDATE_FAIL;
}
dispatch_updated(context, GETDNS_CONTEXT_CODE_FOLLOW_REDIRECTS); context->follow_redirects = value;
return GETDNS_RETURN_GOOD;
dispatch_updated(context, GETDNS_CONTEXT_CODE_FOLLOW_REDIRECTS);
return GETDNS_RETURN_NOT_IMPLEMENTED;
} /* getdns_context_set_follow_redirects */ } /* getdns_context_set_follow_redirects */
/* /*
@ -3225,12 +3228,13 @@ getdns_context_get_idle_timeout(getdns_context *context, uint64_t* value) {
} }
getdns_return_t getdns_return_t
getdns_context_get_follow_redirects(getdns_context *context, getdns_context_get_follow_redirects(
getdns_redirects_t* value) { getdns_context *context, getdns_redirects_t* value)
RETURN_IF_NULL(context, GETDNS_RETURN_INVALID_PARAMETER); {
RETURN_IF_NULL(value, GETDNS_RETURN_INVALID_PARAMETER); if (!context || !value)
*value = context->follow_redirects; return GETDNS_RETURN_INVALID_PARAMETER;
return GETDNS_RETURN_GOOD; *value = context->follow_redirects;
return GETDNS_RETURN_NOT_IMPLEMENTED;
} }
getdns_return_t getdns_return_t