mirror of https://github.com/getdnsapi/getdns.git
RFC3986 IPv6 address/port parsing for str2dict
Resolves issue #215, but does not deal with RFC3986 formatted IPv6 addresses in config files yet.
This commit is contained in:
parent
f66bb6a812
commit
bc9ebd5ae2
|
@ -1065,7 +1065,7 @@ getdns_msg_dict2str_scan(
|
||||||
}
|
}
|
||||||
|
|
||||||
static getdns_dict *
|
static getdns_dict *
|
||||||
_getdns_ipaddr_dict_mf(struct mem_funcs *mf, char *ipstr)
|
_getdns_ipaddr_dict_mf(struct mem_funcs *mf, const char *ipstr)
|
||||||
{
|
{
|
||||||
getdns_dict *r = _getdns_dict_create_with_mf(mf);
|
getdns_dict *r = _getdns_dict_create_with_mf(mf);
|
||||||
char *s = strchr(ipstr, '%'), *scope_id_str = "";
|
char *s = strchr(ipstr, '%'), *scope_id_str = "";
|
||||||
|
@ -1606,6 +1606,21 @@ getdns_str2dict(const char *str, getdns_dict **dict)
|
||||||
getdns_item item;
|
getdns_item item;
|
||||||
getdns_return_t r;
|
getdns_return_t r;
|
||||||
|
|
||||||
|
if (!str || !dict)
|
||||||
|
return GETDNS_RETURN_INVALID_PARAMETER;
|
||||||
|
|
||||||
|
while (*str && isspace(*str))
|
||||||
|
str++;
|
||||||
|
|
||||||
|
if (*str != '{') {
|
||||||
|
getdns_dict *dict_r = _getdns_ipaddr_dict_mf(
|
||||||
|
&_getdns_plain_mem_funcs, str);
|
||||||
|
|
||||||
|
if (dict_r) {
|
||||||
|
*dict = dict_r;
|
||||||
|
return GETDNS_RETURN_GOOD;
|
||||||
|
}
|
||||||
|
}
|
||||||
if ((r = _getdns_str2item_mf(&_getdns_plain_mem_funcs, str, &item)))
|
if ((r = _getdns_str2item_mf(&_getdns_plain_mem_funcs, str, &item)))
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
|
@ -1663,6 +1678,9 @@ getdns_str2list(const char *str, getdns_list **list)
|
||||||
getdns_item item;
|
getdns_item item;
|
||||||
getdns_return_t r;
|
getdns_return_t r;
|
||||||
|
|
||||||
|
if (!str || !list)
|
||||||
|
return GETDNS_RETURN_INVALID_PARAMETER;
|
||||||
|
|
||||||
if ((r = _getdns_str2item_mf(&_getdns_plain_mem_funcs, str, &item)))
|
if ((r = _getdns_str2item_mf(&_getdns_plain_mem_funcs, str, &item)))
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
|
@ -1680,6 +1698,9 @@ getdns_str2bindata(const char *str, getdns_bindata **bindata)
|
||||||
getdns_item item;
|
getdns_item item;
|
||||||
getdns_return_t r;
|
getdns_return_t r;
|
||||||
|
|
||||||
|
if (!str || !bindata)
|
||||||
|
return GETDNS_RETURN_INVALID_PARAMETER;
|
||||||
|
|
||||||
if ((r = _getdns_str2item_mf(&_getdns_plain_mem_funcs, str, &item)))
|
if ((r = _getdns_str2item_mf(&_getdns_plain_mem_funcs, str, &item)))
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
|
@ -1697,6 +1718,9 @@ getdns_str2int(const char *str, uint32_t *value)
|
||||||
getdns_item item;
|
getdns_item item;
|
||||||
getdns_return_t r;
|
getdns_return_t r;
|
||||||
|
|
||||||
|
if (!str || !value)
|
||||||
|
return GETDNS_RETURN_INVALID_PARAMETER;
|
||||||
|
|
||||||
if ((r = _getdns_str2item_mf(&_getdns_plain_mem_funcs, str, &item)))
|
if ((r = _getdns_str2item_mf(&_getdns_plain_mem_funcs, str, &item)))
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue