* before this layer.
*/
const struct kr_request *req = ctx->data;
- const struct kr_query *qry = req->current_query;
- if (qry->qdcount == 0) {
+ const knot_pkt_t *pkt = req->qsource.packet;
+ if (!pkt || knot_wire_get_qdcount(pkt->wire) == 0) {
return KNOT_STATE_FAIL;
}
return reset(ctx);
* @param state original resolver state
* @param sc_present true if server cookie is present
* @param ignore_badcookie true if bad cookies should be treated as good ones
- * @param qry query context
+ * @param req request context
* @return new resolver state
*/
static int invalid_sc_status(int state, bool sc_present, bool ignore_badcookie,
- const struct kr_query *qry, knot_pkt_t *answer)
+ const struct kr_request *req, knot_pkt_t *answer)
{
- assert(qry && answer);
+ assert(req && answer);
- if (qry->qdcount == 0) {
+ const knot_pkt_t *pkt = req->qsource.packet;
+
+ if (!pkt) {
+ return KNOT_STATE_FAIL;
+ }
+
+ if (knot_wire_get_qdcount(pkt->wire) == 0) {
/* RFC7873 5.4 */
state = KNOT_STATE_DONE;
if (sc_present) {
if (!cookies.sc) {
/* Request has no server cookie. */
return_state = invalid_sc_status(return_state, false,
- ignore_badcookie, qry, answer);
+ ignore_badcookie, req, answer);
if (return_state == KNOT_STATE_FAIL) {
return return_state;
}
if (ret != KNOT_EOK) {
/* Invalid server cookie. */
return_state = invalid_sc_status(return_state, true,
- ignore_badcookie, qry, answer);
+ ignore_badcookie, req, answer);
if (return_state == KNOT_STATE_FAIL) {
return return_state;
}