mirror of https://github.com/getdnsapi/getdns.git
Remove |= and replace with do while(0)
This commit is contained in:
parent
75d410cd0b
commit
c171b1ccc4
|
@ -188,43 +188,83 @@ create_reply_header_dict(struct getdns_context *context, ldns_pkt * reply)
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
/* cheat since we know GETDNS_RETURN_GOOD == 0 */
|
/* cheat since we know GETDNS_RETURN_GOOD == 0 */
|
||||||
r |= getdns_dict_set_int(result, GETDNS_STR_KEY_ID,
|
do {
|
||||||
|
r = getdns_dict_set_int(result, GETDNS_STR_KEY_ID,
|
||||||
ldns_pkt_id(reply));
|
ldns_pkt_id(reply));
|
||||||
|
if (r != GETDNS_RETURN_GOOD)
|
||||||
|
break;
|
||||||
|
|
||||||
/* set bits - seems like this could be macro-ified*/
|
/* set bits - seems like this could be macro-ified*/
|
||||||
r |= getdns_dict_set_int(result, GETDNS_STR_KEY_QR,
|
r = getdns_dict_set_int(result, GETDNS_STR_KEY_QR,
|
||||||
(int) ldns_pkt_qr(reply));
|
(int) ldns_pkt_qr(reply));
|
||||||
r |= getdns_dict_set_int(result, GETDNS_STR_KEY_AA,
|
if (r != GETDNS_RETURN_GOOD)
|
||||||
|
break;
|
||||||
|
|
||||||
|
r = getdns_dict_set_int(result, GETDNS_STR_KEY_AA,
|
||||||
(int) ldns_pkt_aa(reply));
|
(int) ldns_pkt_aa(reply));
|
||||||
r |= getdns_dict_set_int(result, GETDNS_STR_KEY_TC,
|
if (r != GETDNS_RETURN_GOOD)
|
||||||
|
break;
|
||||||
|
|
||||||
|
r = getdns_dict_set_int(result, GETDNS_STR_KEY_TC,
|
||||||
(int) ldns_pkt_tc(reply));
|
(int) ldns_pkt_tc(reply));
|
||||||
r |= getdns_dict_set_int(result, GETDNS_STR_KEY_RD,
|
if (r != GETDNS_RETURN_GOOD)
|
||||||
|
break;
|
||||||
|
|
||||||
|
r = getdns_dict_set_int(result, GETDNS_STR_KEY_RD,
|
||||||
(int) ldns_pkt_rd(reply));
|
(int) ldns_pkt_rd(reply));
|
||||||
r |= getdns_dict_set_int(result, GETDNS_STR_KEY_CD,
|
if (r != GETDNS_RETURN_GOOD)
|
||||||
|
break;
|
||||||
|
|
||||||
|
r = getdns_dict_set_int(result, GETDNS_STR_KEY_CD,
|
||||||
(int) ldns_pkt_cd(reply));
|
(int) ldns_pkt_cd(reply));
|
||||||
r |= getdns_dict_set_int(result, GETDNS_STR_KEY_RA,
|
if (r != GETDNS_RETURN_GOOD)
|
||||||
|
break;
|
||||||
|
|
||||||
|
r = getdns_dict_set_int(result, GETDNS_STR_KEY_RA,
|
||||||
(int) ldns_pkt_ra(reply));
|
(int) ldns_pkt_ra(reply));
|
||||||
r |= getdns_dict_set_int(result, GETDNS_STR_KEY_AD,
|
if (r != GETDNS_RETURN_GOOD)
|
||||||
|
break;
|
||||||
|
|
||||||
|
r = getdns_dict_set_int(result, GETDNS_STR_KEY_AD,
|
||||||
(int) ldns_pkt_ad(reply));
|
(int) ldns_pkt_ad(reply));
|
||||||
|
if (r != GETDNS_RETURN_GOOD)
|
||||||
|
break;
|
||||||
|
|
||||||
/* codes */
|
/* codes */
|
||||||
r |= getdns_dict_set_int(result, GETDNS_STR_KEY_OPCODE,
|
r = getdns_dict_set_int(result, GETDNS_STR_KEY_OPCODE,
|
||||||
(int) ldns_pkt_get_opcode(reply));
|
(int) ldns_pkt_get_opcode(reply));
|
||||||
r |= getdns_dict_set_int(result, GETDNS_STR_KEY_RCODE,
|
if (r != GETDNS_RETURN_GOOD)
|
||||||
|
break;
|
||||||
|
|
||||||
|
r = getdns_dict_set_int(result, GETDNS_STR_KEY_RCODE,
|
||||||
(int) ldns_pkt_get_rcode(reply));
|
(int) ldns_pkt_get_rcode(reply));
|
||||||
|
if (r != GETDNS_RETURN_GOOD)
|
||||||
|
break;
|
||||||
|
|
||||||
/* default z to 0 */
|
/* default z to 0 */
|
||||||
r |= getdns_dict_set_int(result, GETDNS_STR_KEY_Z, 0);
|
r = getdns_dict_set_int(result, GETDNS_STR_KEY_Z, 0);
|
||||||
|
if (r != GETDNS_RETURN_GOOD)
|
||||||
|
break;
|
||||||
|
|
||||||
/* counts */
|
/* counts */
|
||||||
r |= getdns_dict_set_int(result, GETDNS_STR_KEY_QDCOUNT,
|
r = getdns_dict_set_int(result, GETDNS_STR_KEY_QDCOUNT,
|
||||||
(int) ldns_pkt_qdcount(reply));
|
(int) ldns_pkt_qdcount(reply));
|
||||||
r |= getdns_dict_set_int(result, GETDNS_STR_KEY_ANCOUNT,
|
if (r != GETDNS_RETURN_GOOD)
|
||||||
(int) ldns_pkt_ancount(reply));
|
break;
|
||||||
r |= getdns_dict_set_int(result, GETDNS_STR_KEY_NSCOUNT,
|
|
||||||
(int) ldns_pkt_nscount(reply));
|
|
||||||
r |= getdns_dict_set_int(result, GETDNS_STR_KEY_ARCOUNT,
|
|
||||||
(int) ldns_pkt_arcount(reply));
|
|
||||||
|
|
||||||
|
r = getdns_dict_set_int(result, GETDNS_STR_KEY_ANCOUNT,
|
||||||
|
(int) ldns_pkt_ancount(reply));
|
||||||
|
if (r != GETDNS_RETURN_GOOD)
|
||||||
|
break;
|
||||||
|
|
||||||
|
r = getdns_dict_set_int(result, GETDNS_STR_KEY_NSCOUNT,
|
||||||
|
(int) ldns_pkt_nscount(reply));
|
||||||
|
if (r != GETDNS_RETURN_GOOD)
|
||||||
|
break;
|
||||||
|
|
||||||
|
r = getdns_dict_set_int(result, GETDNS_STR_KEY_ARCOUNT,
|
||||||
|
(int) ldns_pkt_arcount(reply));
|
||||||
|
} while (0);
|
||||||
|
|
||||||
if (r != 0) {
|
if (r != 0) {
|
||||||
getdns_dict_destroy(result);
|
getdns_dict_destroy(result);
|
||||||
|
@ -289,18 +329,28 @@ add_only_addresses(struct getdns_list * addrs, ldns_rr_list * rr_list)
|
||||||
addrs->mf.mf.ext.realloc,
|
addrs->mf.mf.ext.realloc,
|
||||||
addrs->mf.mf.ext.free);
|
addrs->mf.mf.ext.free);
|
||||||
if (this_address == NULL) {
|
if (this_address == NULL) {
|
||||||
r |= GETDNS_RETURN_MEMORY_ERROR;
|
r = GETDNS_RETURN_MEMORY_ERROR;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
struct getdns_bindata rbin =
|
struct getdns_bindata rbin =
|
||||||
{ ldns_rdf_size(rdf), ldns_rdf_data(rdf) };
|
{ ldns_rdf_size(rdf), ldns_rdf_data(rdf) };
|
||||||
r |= getdns_dict_set_bindata(this_address,
|
r = getdns_dict_set_bindata(this_address,
|
||||||
GETDNS_STR_ADDRESS_TYPE,
|
GETDNS_STR_ADDRESS_TYPE,
|
||||||
( ldns_rdf_get_type(rdf) == LDNS_RDF_TYPE_A
|
( ldns_rdf_get_type(rdf) == LDNS_RDF_TYPE_A
|
||||||
? &IPv4_str_bindata : &IPv6_str_bindata));
|
? &IPv4_str_bindata : &IPv6_str_bindata));
|
||||||
r |= getdns_dict_set_bindata(this_address,
|
if (r != GETDNS_RETURN_GOOD) {
|
||||||
|
getdns_dict_destroy(this_address);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
r = getdns_dict_set_bindata(this_address,
|
||||||
GETDNS_STR_ADDRESS_DATA, &rbin);
|
GETDNS_STR_ADDRESS_DATA, &rbin);
|
||||||
r |= getdns_list_set_dict(addrs, item_idx++,
|
if (r != GETDNS_RETURN_GOOD) {
|
||||||
|
getdns_dict_destroy(this_address);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
r = getdns_list_set_dict(addrs, item_idx++,
|
||||||
this_address);
|
this_address);
|
||||||
getdns_dict_destroy(this_address);
|
getdns_dict_destroy(this_address);
|
||||||
}
|
}
|
||||||
|
@ -364,51 +414,79 @@ create_reply_dict(struct getdns_context *context, getdns_network_req * req,
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
/* header */
|
/* header */
|
||||||
|
do {
|
||||||
subdict = create_reply_header_dict(context, reply);
|
subdict = create_reply_header_dict(context, reply);
|
||||||
r |= getdns_dict_set_dict(result, GETDNS_STR_KEY_HEADER, subdict);
|
r = getdns_dict_set_dict(result, GETDNS_STR_KEY_HEADER, subdict);
|
||||||
getdns_dict_destroy(subdict);
|
getdns_dict_destroy(subdict);
|
||||||
|
if (r != GETDNS_RETURN_GOOD) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
/* question */
|
/* question */
|
||||||
r |= priv_getdns_create_reply_question_dict(context, reply, &subdict);
|
r = priv_getdns_create_reply_question_dict(context, reply, &subdict);
|
||||||
r |= getdns_dict_set_dict(result, GETDNS_STR_KEY_QUESTION, subdict);
|
if (r != GETDNS_RETURN_GOOD) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
r = getdns_dict_set_dict(result, GETDNS_STR_KEY_QUESTION, subdict);
|
||||||
getdns_dict_destroy(subdict);
|
getdns_dict_destroy(subdict);
|
||||||
|
if (r != GETDNS_RETURN_GOOD) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
/* answers */
|
/* answers */
|
||||||
rr_list = ldns_pkt_answer(reply);
|
rr_list = ldns_pkt_answer(reply);
|
||||||
sublist = create_list_from_rr_list(context, rr_list);
|
sublist = create_list_from_rr_list(context, rr_list);
|
||||||
r |= getdns_dict_set_list(result, GETDNS_STR_KEY_ANSWER, sublist);
|
r = getdns_dict_set_list(result, GETDNS_STR_KEY_ANSWER, sublist);
|
||||||
getdns_list_destroy(sublist);
|
getdns_list_destroy(sublist);
|
||||||
|
if (r != GETDNS_RETURN_GOOD) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if ((req->request_type == GETDNS_RRTYPE_A ||
|
if ((req->request_type == GETDNS_RRTYPE_A ||
|
||||||
req->request_type == GETDNS_RRTYPE_AAAA) &&
|
req->request_type == GETDNS_RRTYPE_AAAA) &&
|
||||||
just_addrs != NULL) {
|
just_addrs != NULL) {
|
||||||
/* add to just addrs */
|
/* add to just addrs */
|
||||||
r |= add_only_addresses(just_addrs, rr_list);
|
r = add_only_addresses(just_addrs, rr_list);
|
||||||
|
if (r != GETDNS_RETURN_GOOD) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* authority */
|
/* authority */
|
||||||
rr_list = ldns_pkt_authority(reply);
|
rr_list = ldns_pkt_authority(reply);
|
||||||
sublist = create_list_from_rr_list(context, rr_list);
|
sublist = create_list_from_rr_list(context, rr_list);
|
||||||
r |= getdns_dict_set_list(result, GETDNS_STR_KEY_AUTHORITY, sublist);
|
r = getdns_dict_set_list(result, GETDNS_STR_KEY_AUTHORITY, sublist);
|
||||||
getdns_list_destroy(sublist);
|
getdns_list_destroy(sublist);
|
||||||
|
if (r != GETDNS_RETURN_GOOD) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
/* additional */
|
/* additional */
|
||||||
rr_list = ldns_pkt_additional(reply);
|
rr_list = ldns_pkt_additional(reply);
|
||||||
sublist = create_list_from_rr_list(context, rr_list);
|
sublist = create_list_from_rr_list(context, rr_list);
|
||||||
r |= getdns_dict_set_list(result, GETDNS_STR_KEY_ADDITIONAL, sublist);
|
r = getdns_dict_set_list(result, GETDNS_STR_KEY_ADDITIONAL, sublist);
|
||||||
getdns_list_destroy(sublist);
|
getdns_list_destroy(sublist);
|
||||||
|
if (r != GETDNS_RETURN_GOOD) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
/* other stuff */
|
/* other stuff */
|
||||||
r |= getdns_dict_set_int(result, GETDNS_STR_KEY_ANSWER_TYPE,
|
r = getdns_dict_set_int(result, GETDNS_STR_KEY_ANSWER_TYPE,
|
||||||
GETDNS_NAMETYPE_DNS);
|
GETDNS_NAMETYPE_DNS);
|
||||||
|
if (r != GETDNS_RETURN_GOOD) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
question = ldns_rr_list_rr(ldns_pkt_question(reply), 0);
|
question = ldns_rr_list_rr(ldns_pkt_question(reply), 0);
|
||||||
name = convert_rdf_to_str(ldns_rr_owner(question));
|
name = convert_rdf_to_str(ldns_rr_owner(question));
|
||||||
if (name) {
|
if (name) {
|
||||||
r |= getdns_dict_util_set_string(result,
|
r = getdns_dict_util_set_string(result,
|
||||||
GETDNS_STR_KEY_CANONICAL_NM, name);
|
GETDNS_STR_KEY_CANONICAL_NM, name);
|
||||||
free(name);
|
free(name);
|
||||||
} else {
|
} else {
|
||||||
r |= 1;
|
r = GETDNS_RETURN_MEMORY_ERROR;
|
||||||
}
|
}
|
||||||
|
} while (0);
|
||||||
|
|
||||||
if (r != 0) {
|
if (r != 0) {
|
||||||
getdns_dict_destroy(result);
|
getdns_dict_destroy(result);
|
||||||
result = NULL;
|
result = NULL;
|
||||||
|
@ -448,51 +526,92 @@ create_getdns_response(struct getdns_dns_req * completed_request)
|
||||||
just_addrs = getdns_list_create_with_context(
|
just_addrs = getdns_list_create_with_context(
|
||||||
completed_request->context);
|
completed_request->context);
|
||||||
}
|
}
|
||||||
|
do {
|
||||||
r |= getdns_dict_set_int(result, GETDNS_STR_KEY_STATUS,
|
r = getdns_dict_set_int(result, GETDNS_STR_KEY_STATUS,
|
||||||
GETDNS_RESPSTATUS_GOOD);
|
GETDNS_RESPSTATUS_GOOD);
|
||||||
|
if (r != GETDNS_RETURN_GOOD) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
canonical_name = get_canonical_name(completed_request->name);
|
canonical_name = get_canonical_name(completed_request->name);
|
||||||
r |= getdns_dict_util_set_string(result, GETDNS_STR_KEY_CANONICAL_NM,
|
r = getdns_dict_util_set_string(result, GETDNS_STR_KEY_CANONICAL_NM,
|
||||||
canonical_name);
|
canonical_name);
|
||||||
free(canonical_name);
|
free(canonical_name);
|
||||||
r |= getdns_dict_set_int(result, GETDNS_STR_KEY_ANSWER_TYPE,
|
if (r != GETDNS_RETURN_GOOD) {
|
||||||
GETDNS_NAMETYPE_DNS);
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
while (netreq) {
|
r = getdns_dict_set_int(result, GETDNS_STR_KEY_ANSWER_TYPE,
|
||||||
|
GETDNS_NAMETYPE_DNS);
|
||||||
|
if (r != GETDNS_RETURN_GOOD) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
while (netreq && r == GETDNS_RETURN_GOOD) {
|
||||||
struct getdns_bindata full_data;
|
struct getdns_bindata full_data;
|
||||||
full_data.data = NULL;
|
full_data.data = NULL;
|
||||||
full_data.size = 0;
|
full_data.size = 0;
|
||||||
ldns_pkt *pkt = netreq->result;
|
ldns_pkt *pkt = netreq->result;
|
||||||
ldns_status s =
|
ldns_status s =
|
||||||
ldns_pkt2wire(&(full_data.data), pkt, &(full_data.size));
|
ldns_pkt2wire(&(full_data.data), pkt, &(full_data.size));
|
||||||
|
if (s != LDNS_STATUS_OK) {
|
||||||
|
// break inner
|
||||||
|
r = GETDNS_RETURN_MEMORY_ERROR;
|
||||||
|
break;
|
||||||
|
}
|
||||||
size_t idx = 0;
|
size_t idx = 0;
|
||||||
/* reply tree */
|
/* reply tree */
|
||||||
struct getdns_dict *reply = create_reply_dict(
|
struct getdns_dict *reply = create_reply_dict(
|
||||||
completed_request->context, netreq, just_addrs);
|
completed_request->context, netreq, just_addrs);
|
||||||
r |= getdns_list_add_item(replies_tree, &idx);
|
r = getdns_list_add_item(replies_tree, &idx);
|
||||||
r |= getdns_list_set_dict(replies_tree, idx, reply);
|
if (r != GETDNS_RETURN_GOOD) {
|
||||||
getdns_dict_destroy(reply);
|
getdns_dict_destroy(reply);
|
||||||
|
// break inner while
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
r = getdns_list_set_dict(replies_tree, idx, reply);
|
||||||
|
getdns_dict_destroy(reply);
|
||||||
|
if (r != GETDNS_RETURN_GOOD) {
|
||||||
|
// break inner while
|
||||||
|
break;
|
||||||
|
}
|
||||||
/* buffer */
|
/* buffer */
|
||||||
if (s == LDNS_STATUS_OK) {
|
r = getdns_list_add_item(replies_full, &idx);
|
||||||
r |= getdns_list_add_item(replies_full, &idx);
|
if (r != GETDNS_RETURN_GOOD) {
|
||||||
r |= getdns_list_set_bindata(replies_full, idx,
|
free(full_data.data);
|
||||||
|
// break inner while
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
r = getdns_list_set_bindata(replies_full, idx,
|
||||||
&full_data);
|
&full_data);
|
||||||
free(full_data.data);
|
free(full_data.data);
|
||||||
} else {
|
if (r != GETDNS_RETURN_GOOD) {
|
||||||
r = 1;
|
free(full_data.data);
|
||||||
|
// break inner while
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
netreq = netreq->next;
|
netreq = netreq->next;
|
||||||
}
|
}
|
||||||
|
|
||||||
r |= getdns_dict_set_list(result, GETDNS_STR_KEY_REPLIES_TREE,
|
if (r != GETDNS_RETURN_GOOD)
|
||||||
|
break;
|
||||||
|
|
||||||
|
r = getdns_dict_set_list(result, GETDNS_STR_KEY_REPLIES_TREE,
|
||||||
replies_tree);
|
replies_tree);
|
||||||
r |= getdns_dict_set_list(result, GETDNS_STR_KEY_REPLIES_FULL,
|
if (r != GETDNS_RETURN_GOOD)
|
||||||
|
break;
|
||||||
|
|
||||||
|
r = getdns_dict_set_list(result, GETDNS_STR_KEY_REPLIES_FULL,
|
||||||
replies_full);
|
replies_full);
|
||||||
|
if (r != GETDNS_RETURN_GOOD)
|
||||||
|
break;
|
||||||
|
|
||||||
if (just_addrs) {
|
if (just_addrs) {
|
||||||
r |= getdns_dict_set_list(result, GETDNS_STR_KEY_JUST_ADDRS,
|
r = getdns_dict_set_list(result, GETDNS_STR_KEY_JUST_ADDRS,
|
||||||
just_addrs);
|
just_addrs);
|
||||||
}
|
}
|
||||||
|
} while (0);
|
||||||
|
|
||||||
/* cleanup */
|
/* cleanup */
|
||||||
getdns_list_destroy(replies_tree);
|
getdns_list_destroy(replies_tree);
|
||||||
|
|
Loading…
Reference in New Issue