From 3b33b0cb176ae74fac25796640d09d312ca9c140 Mon Sep 17 00:00:00 2001
From: Karel Slany <karel.slany@nic.cz>
Date: Fri, 27 May 2016 15:38:21 +0200
Subject: [PATCH] Fall back to TCP when receiving a valid BADCOOKIE response.

---
 modules/cookies/cookies.c | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/modules/cookies/cookies.c b/modules/cookies/cookies.c
index 302565deb..3c972db42 100644
--- a/modules/cookies/cookies.c
+++ b/modules/cookies/cookies.c
@@ -348,7 +348,14 @@ static int check_response(knot_layer_t *ctx, knot_pkt_t *pkt)
 			DEBUG_MSG(NULL, "%s\n", "cookie_cached");
 			kr_cache_txn_commit(&txn);
 		}
+	}
 
+	uint16_t rcode = knot_pkt_get_ext_rcode(pkt);
+	if (rcode == KNOT_RCODE_BADCOOKIE) {
+		/* TODO -- Fall back to TCP after a limited number of retries. */
+		DEBUG_MSG(NULL, "%s'n", "falling back to TCP");
+		qry->flags |= QUERY_TCP;
+		return KNOT_STATE_PRODUCE;
 	}
 
 	print_packet_dflt(pkt);
-- 
GitLab