The bare return left conn->secret, conn->response, conn->request, and
conn->text pinned until the connection itself was torn down — every
other error in the function reaches conn_cleanup via goto, and the
success path falls into the same label, so the towire-failure return
was the lone outlier. Send it through the existing cleanup path.
Assisted-by: Claude:claude-opus-4-7
/* Skip the length field (4 bytes) */
isc_buffer_add(conn->buffer, 4);
- result = isccc_cc_towire(conn->response, &conn->buffer, conn->alg,
- &conn->secret);
- if (result != ISC_R_SUCCESS) {
- return;
- }
+ CHECK(isccc_cc_towire(conn->response, &conn->buffer, conn->alg,
+ &conn->secret));
isc_buffer_init(&b, conn->buffer->base, 4);
isc_buffer_putuint32(&b, conn->buffer->used - 4);