/* Add OPT RR */
pkt->opt_rr = knot_rrset_copy(worker->engine->resolver.opt_rr, NULL);
if (!pkt->opt_rr) {
- knot_pkt_free(&pkt);
+ knot_pkt_free(pkt);
return kr_error(ENOMEM);
}
if (options->DNSSEC_WANT) {
/* Create task and start with a first question */
struct qr_task *task = worker_resolve_start(worker, pkt, *options);
if (!task) {
- knot_rrset_free(&pkt->opt_rr, NULL);
- knot_pkt_free(&pkt);
+ knot_rrset_free(pkt->opt_rr, NULL);
+ knot_pkt_free(pkt);
lua_pushstring(L, "couldn't create a resolution request");
lua_error(L);
}
/* Start execution */
int ret = worker_resolve_exec(task, pkt);
lua_pushboolean(L, ret == 0);
- knot_rrset_free(&pkt->opt_rr, NULL);
- knot_pkt_free(&pkt);
+ knot_rrset_free(pkt->opt_rr, NULL);
+ knot_pkt_free(pkt);
return 1;
}
-- Destructor for packet accepts pointer to pointer
local knot_pkt_t = ffi.typeof('knot_pkt_t')
-local packet_ptr = ffi.new('knot_pkt_t *[1]')
-local function pkt_free(pkt)
- packet_ptr[0] = pkt
- knot.knot_pkt_free(packet_ptr)
-end
-- Helpers for reading/writing 16-bit numbers from packet wire
local function pkt_u16(pkt, off, val)
pkt.parsed = 0
end
- return ffi.gc(pkt[0], pkt_free)
+ return ffi.gc(pkt[0], knot.knot_pkt_free)
end,
__tostring = function(pkt)
return pkt:tostring()
knot_wire_set_id(query->wire, msgid);
int err = knot_pkt_parse(query, 0);
if (err != KNOT_EOK) {
- knot_pkt_free(&query);
+ knot_pkt_free(query);
return NULL;
}
/* Create "pseudo answer". */
knot_pkt_t *answer = knot_pkt_new(NULL, KNOT_WIRE_MAX_PKTSIZE, pool);
if (!answer) {
- knot_pkt_free(&query);
+ knot_pkt_free(query);
return -1;
}
knot_pkt_put_question(answer, dname, rrclass, rrtype);
* resolving - qr_task & request_ctx. */
struct qr_task *task = worker_resolve_start(worker, query, options);
if (!task) {
- knot_pkt_free(&query);
- knot_pkt_free(&answer);
+ knot_pkt_free(query);
+ knot_pkt_free(answer);
return -1;
}
cleanup:
- knot_pkt_free(&query);
- knot_pkt_free(&answer);
+ knot_pkt_free(query);
+ knot_pkt_free(answer);
worker_task_finalize(task, state);
return state == (is_referral ? KR_STATE_PRODUCE : KR_STATE_DONE) ? 0 : -1;
}
fail:
assert(/*false*/!ret);
/* Cleanup the item that we might've (partially) written to. */
- knot_rrset_free(&ans->rrsets[id].set.rr, ans->mm);
+ knot_rrset_free(ans->rrsets[id].set.rr, ans->mm);
knot_rdataset_clear(&ans->rrsets[id].sig_rds, ans->mm);
memset(&ans->rrsets[id], 0, sizeof(ans->rrsets[id]));
return kr_error(ret);
ret = kr_ok();
clean_wild:
if (arw->set.rr) { /* we may have matched AR_NSEC */
- knot_rrset_free(&arw->set.rr, ans->mm);
+ knot_rrset_free(arw->set.rr, ans->mm);
+ arw->set.rr = NULL;
knot_rdataset_clear(&arw->sig_rds, ans->mm);
}
return ret;
}
/* Merge-in new key data */
if (!ta_rr || (rdlen > 0 && knot_rrset_add_rdata(ta_rr, rdata, rdlen, NULL) != 0)) {
- knot_rrset_free(&ta_rr, NULL);
+ knot_rrset_free(ta_rr, NULL);
return kr_error(ENOMEM);
}
if(VERBOSE_STATUS) {
{
knot_rrset_t *ta_rr = v;
if (ta_rr) {
- knot_rrset_free(&ta_rr, NULL);
+ knot_rrset_free(ta_rr, NULL);
}
return 0;
}
int ret = knot_rdataset_merge(&qry->zone_cut.key->rrs,
&rr->rrs, qry->zone_cut.pool);
if (ret != 0) {
- knot_rrset_free(&qry->zone_cut.key, qry->zone_cut.pool);
+ knot_rrset_free(qry->zone_cut.key, qry->zone_cut.pool);
+ qry->zone_cut.key = NULL;
return ret;
}
updated_key = true;
};
int ret = kr_dnskeys_trusted(&vctx, qry->zone_cut.trust_anchor);
if (ret != 0) {
- knot_rrset_free(&qry->zone_cut.key, qry->zone_cut.pool);
+ knot_rrset_free(qry->zone_cut.key, qry->zone_cut.pool);
+ qry->zone_cut.key = NULL;
return ret;
}
}
}
if (ret != 0) {
- knot_rrset_free(&new_ds, cut->pool);
+ knot_rrset_free(new_ds, cut->pool);
return NULL;
}
}
if (cut->nsset) {
trie_apply(cut->nsset, free_addr_set_cb, cut->pool);
trie_free(cut->nsset);
- cut->nsset = NULL;
}
- knot_rrset_free(&cut->key, cut->pool);
- knot_rrset_free(&cut->trust_anchor, cut->pool);
- cut->name = NULL;
+ knot_rrset_free(cut->key, cut->pool);
+ knot_rrset_free(cut->trust_anchor, cut->pool);
}
void kr_zonecut_set(struct kr_zonecut *cut, const knot_dname_t *name)
if (src->trust_anchor) {
ta_copy = knot_rrset_copy(src->trust_anchor, dst->pool);
if (!ta_copy) {
- knot_rrset_free(&key_copy, dst->pool);
+ knot_rrset_free(key_copy, dst->pool);
return kr_error(ENOMEM);
}
}
- knot_rrset_free(&dst->key, dst->pool);
+ knot_rrset_free(dst->key, dst->pool);
dst->key = key_copy;
- knot_rrset_free(&dst->trust_anchor, dst->pool);
+ knot_rrset_free(dst->trust_anchor, dst->pool);
dst->trust_anchor = ta_copy;
return kr_ok();
return kr_error(ESTALE);
}
/* materialize a new RRset */
- knot_rrset_free(rr, pool);
+ knot_rrset_free(*rr, pool);
*rr = mm_alloc(pool, sizeof(knot_rrset_t));
if (*rr == NULL) {
return kr_error(ENOMEM);
KNOT_CLASS_IN, new_ttl);
ret = kr_cache_materialize(&(*rr)->rrs, &peek, pool);
if (ret < 0) {
- knot_rrset_free(rr, pool);
+ knot_rrset_free(*rr, pool);
+ *rr = NULL;
return ret;
}