diff --git a/src/libknot/rrset.c b/src/libknot/rrset.c index ad862fca6a6684b80c87d17ee743358a1320b31a..1654bb82d6f9d6125ba5bc40ef86456e19d3ca11 100644 --- a/src/libknot/rrset.c +++ b/src/libknot/rrset.c @@ -95,7 +95,7 @@ void knot_rrset_rdata_dump(const knot_rrset_t *rrset, size_t rdata_pos) size_t offset = 0; for (int i = 0; desc->block_types[i] != KNOT_RDATA_WF_END; i++) { int item = desc->block_types[i]; - uint8_t *rdata = rrset_rdata_pointer(rrset, rdata_pos); + const uint8_t *rdata = rrset_rdata_pointer(rrset, rdata_pos); if (descriptor_item_is_dname(item)) { knot_dname_t *dname; memcpy(&dname, rdata + offset, sizeof(knot_dname_t *)); @@ -883,8 +883,9 @@ int knot_rrset_to_wire(const knot_rrset_t *rrset, uint8_t *wire, size_t *size, return KNOT_EOK; } - compression_param_t *comp_data = (compression_param_t *)data; + assert(rrset->rdata_count > 0); + compression_param_t *comp_data = (compression_param_t *)data; uint8_t *pos = wire; dbg_rrset_exec_detail( @@ -2095,7 +2096,6 @@ uint8_t *knot_rrset_rdata_prealloc(const knot_rrset_t *rrset, return ret; } - void knot_rrset_dump(const knot_rrset_t *rrset) { if (rrset == NULL) { @@ -2555,7 +2555,9 @@ static int knot_rrset_remove_rdata_pos(knot_rrset_t *rrset, size_t pos) if (new_size == 0) { assert(rrset->rdata_count == 1); free(rrset->rdata); + rrset->rdata = NULL; free(rrset->rdata_indices); + rrset->rdata = NULL; } else { rrset->rdata = xrealloc(rrset->rdata, new_size); /* @@ -2711,11 +2713,11 @@ int knot_rrset_remove_rr_using_rrset(knot_rrset_t *from, knot_rrset_t *return_rr = NULL; int ret = knot_rrset_shallow_copy(what, &return_rr); if (ret != KNOT_EOK) { - dbg_xfrin("xfr: remove_rdata: Could not copy RRSet (%s).\n", + dbg_rrset(": remove_rr_using_rrset: Could not copy RRSet (%s).\n", knot_strerror(ret)); return ret; } - /* Reset RDATA. */ + /* Reset RDATA of returned RRSet. */ knot_rrset_rdata_reset(return_rr); for (uint16_t i = 0; i < what->rdata_count; ++i) { @@ -2743,9 +2745,13 @@ int knot_rrset_remove_rr_using_rrset(knot_rrset_t *from, knot_strerror(ret)); return ret; } + dbg_rrset_detail("rrset: remove_rr_using_rrset: " + "Successfuly removed and returned this RR:\n"); + knot_rrset_rdata_dump(return_rr, return_rr->rdata_count - 1); } else if (ret != KNOT_ENOENT) { /* NOENT is OK, but other errors are not. */ - dbg_xfrin("xfr: RRSet removal failed (%s).\n", + dbg_rrset("rrset: remove_using_rrset: " + "RRSet removal failed (%s).\n", knot_strerror(ret)); knot_rrset_deep_free(&return_rr, 0, 0); return ret; diff --git a/src/libknot/updates/xfr-in.c b/src/libknot/updates/xfr-in.c index f0080959214ecc56bc0a9353400e55d36ab8ba19..575a41027266c0d535b46949526b4c6a76b7f3ca 100644 --- a/src/libknot/updates/xfr-in.c +++ b/src/libknot/updates/xfr-in.c @@ -2332,11 +2332,9 @@ dbg_xfrin_exec_detail( void xfrin_cleanup_successful_update(knot_changes_t **changes) { - for (int i = 0; i < (*changes)->old_rrsets_count; ++i) { dbg_xfrin_detail("Deleting old RRSet: %p\n", (*changes)->old_rrsets[i]); - knot_rrset_dump((*changes)->old_rrsets[i]); knot_rrset_free(&(*changes)->old_rrsets[i]); }