]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
Removed qdcount from struct kr_query.
authorKarel Slany <karel.slany@nic.cz>
Thu, 4 Aug 2016 14:26:15 +0000 (16:26 +0200)
committerOndřej Surý <ondrej@sury.org>
Thu, 11 Aug 2016 12:06:45 +0000 (14:06 +0200)
daemon/lua/kres.lua
lib/layer/iterate.c
lib/rplan.c
lib/rplan.h
modules/cookies/cookiemonster.c

index ebf8754a4616946cc4fb7a827cb022cf5b56c5c2..563ee8777927503c73e839f8d372e5524a9569f5 100644 (file)
@@ -203,7 +203,6 @@ struct kr_zonecut {
 };
 struct kr_query {
        struct kr_query *parent;
-       uint16_t qdcount;
        knot_dname_t *sname;
        uint16_t type;
        uint16_t class;
index fe5f3e070ea014923507b346e99c5e5120d42c94..1941113079f21cc8b5c0b801241e841a18e7ba96 100644 (file)
@@ -519,8 +519,8 @@ static int begin(knot_layer_t *ctx, void *module_param)
         * 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);
index 0479b47edeb909d11c1a91193ed530703e4a96a4..bc6ff7c374fe51551edeab71acc7e2d28608a1c3 100644 (file)
@@ -54,7 +54,6 @@ static struct kr_query *query_create(knot_mm_t *pool, const knot_dname_t *name)
                        mm_free(pool, qry);
                        return NULL;
                }
-               qry->qdcount = 1;
        }
 
        knot_dname_to_lower(qry->sname);
index 944261ce88896e9e6c8a2c20056c637c8a15056c..aa6fa5fe37908184dc888712fc31e0fc2bce75e5 100644 (file)
@@ -65,7 +65,6 @@ const knot_lookup_t *kr_query_flag_names(void);
  */
 struct kr_query {
        struct kr_query *parent;
-       uint16_t qdcount; /* Can be 0 when querying server cookie. */
        knot_dname_t *sname;
        uint16_t stype;
        uint16_t sclass;
index e4304df4a019060534a64136d233c40531f1fcb8..a688d762286c9312f7a0e9252d0c11477c193bdb 100644 (file)
@@ -313,15 +313,21 @@ static inline uint8_t *req_cookie_option(struct kr_request *req)
  * @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) {
@@ -409,7 +415,7 @@ int check_request(knot_layer_t *ctx, void *module_param)
        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;
                }
@@ -435,7 +441,7 @@ int check_request(knot_layer_t *ctx, void *module_param)
        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;
                }