]> git.ipfire.org Git - thirdparty/knot-resolver.git/commitdiff
Merge !76: add EDNS(0) padding support
authorVladimír Čunát <vladimir.cunat@nic.cz>
Tue, 29 Nov 2016 10:35:22 +0000 (11:35 +0100)
committerVladimír Čunát <vladimir.cunat@nic.cz>
Tue, 29 Nov 2016 10:35:22 +0000 (11:35 +0100)
RFC7830 padding support on client->resolver DNSoverTLS communication.
Adds new `net.tls_padding([padding])` option that will cause the answers
to be aligned at *padding* boundaries.

1  2 
daemon/README.rst
daemon/bindings.c
daemon/engine.c
daemon/worker.c
lib/resolve.c
lib/resolve.h

Simple merge
Simple merge
diff --cc daemon/engine.c
Simple merge
diff --cc daemon/worker.c
index a4f21158534be47d7430c00ce987e0ee2359303f,e4cb889985d9a38abb05fa68df2260359a8783a7..5885da08f254bf3df32144f7146714ed0caa80c4
@@@ -721,11 -721,12 +721,12 @@@ static int qr_task_step(struct qr_task 
        task->addrlist = NULL;
        task->addrlist_count = 0;
        task->addrlist_turn = 0;
+       task->req.has_tls = (task->session && task->session->has_tls);
        int state = kr_resolve_consume(&task->req, packet_source, packet);
 -      while (state == KNOT_STATE_PRODUCE) {
 +      while (state == KR_STATE_PRODUCE) {
                state = kr_resolve_produce(&task->req, &task->addrlist, &sock_type, task->pktbuf);
                if (unlikely(++task->iter_count > KR_ITER_LIMIT || task->timeouts >= KR_TIMEOUT_LIMIT)) {
 -                      return qr_task_finalize(task, KNOT_STATE_FAIL);
 +                      return qr_task_finalize(task, KR_STATE_FAIL);
                }
        }
  
diff --cc lib/resolve.c
index 7b115acd7570a75ad7d3c41d7bcc9c8ea39040a7,ae07927e50c7b49a3698347aa1d1dc578e593d4f..1819c0f4d62bec9975e1195c21a65f58f3997b1b
@@@ -357,10 -394,10 +394,10 @@@ static int answer_finalize(struct kr_re
        knot_pkt_t *answer = request->answer;
  
        /* Always set SERVFAIL for bogus answers. */
 -      if (state == KNOT_STATE_FAIL && rplan->pending.len > 0) {
 +      if (state == KR_STATE_FAIL && rplan->pending.len > 0) {
                struct kr_query *last = array_tail(rplan->pending);
                if ((last->flags & QUERY_DNSSEC_WANT) && (last->flags & QUERY_DNSSEC_BOGUS)) {
-                       return answer_fail(answer);
+                       return answer_fail(request);
                }
        }
  
diff --cc lib/resolve.h
Simple merge