- Add a patch for chained CNAME
PR: ports/115297 Submitted by: rafan Approved by: farrokhi (maintainer) Obtained from: http://hugo.vulcano.cl/development/adns-cc
This commit is contained in:
parent
e52acb3591
commit
fa77a4b1cf
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=197996
2 changed files with 57 additions and 0 deletions
|
@ -7,6 +7,7 @@
|
|||
|
||||
PORTNAME= adns
|
||||
PORTVERSION= 1.4
|
||||
PORTREVISION= 1
|
||||
CATEGORIES= dns
|
||||
MASTER_SITES= ftp://ftp.chiark.greenend.org.uk/users/ian/adns/ \
|
||||
http://www.chiark.greenend.org.uk/~ian/adns/ftp/
|
||||
|
|
56
dns/adns/files/patch-cname-chains
Normal file
56
dns/adns/files/patch-cname-chains
Normal file
|
@ -0,0 +1,56 @@
|
|||
Index: src/query.c
|
||||
===================================================================
|
||||
--- src/query.c (revision 14)
|
||||
+++ src/query.c (working copy)
|
||||
@@ -63,6 +63,10 @@
|
||||
|
||||
qu->cname_dgram= 0;
|
||||
qu->cname_dglen= qu->cname_begin= 0;
|
||||
+ /* Patch to allow CNAME chains */
|
||||
+ /* Credits: Brad Spencer, see http://www.chiark.greenend.org.uk/pipermail/adns-discuss/2006/001161.html */
|
||||
+ /* Allow CNAME chains up to some sane limit */
|
||||
+ qu->cname_alias_hops_left = 10;
|
||||
|
||||
adns__vbuf_init(&qu->search_vb);
|
||||
qu->search_origlen= qu->search_pos= qu->search_doneabs= 0;
|
||||
Index: src/internal.h
|
||||
===================================================================
|
||||
--- src/internal.h (revision 14)
|
||||
+++ src/internal.h (working copy)
|
||||
@@ -231,6 +231,11 @@
|
||||
int cname_dglen, cname_begin;
|
||||
/* If non-0, has been allocated using . */
|
||||
|
||||
+ /* Patch to allow CNAME chains */
|
||||
+ /* Credits: Brad Spencer, see http://www.chiark.greenend.org.uk/pipermail/adns-discuss/2006/001161.html */
|
||||
+ int cname_alias_hops_left;
|
||||
+ /* The number of cname alias hops we will allow */
|
||||
+
|
||||
vbuf search_vb;
|
||||
int search_origlen, search_pos, search_doneabs;
|
||||
/* Used by the searching algorithm. The query domain in textual form
|
||||
Index: src/reply.c
|
||||
===================================================================
|
||||
--- src/reply.c (revision 14)
|
||||
+++ src/reply.c (working copy)
|
||||
@@ -190,12 +190,17 @@
|
||||
if (qu->flags & adns_qf_cname_forbid) {
|
||||
adns__query_fail(qu,adns_s_prohibitedcname);
|
||||
return;
|
||||
- } else if (qu->cname_dgram) { /* Ignore second and subsequent CNAME(s) */
|
||||
+ }
|
||||
+
|
||||
+ /* Patch to allow CNAME chains */
|
||||
+ /* Credits: Brad Spencer, see http://www.chiark.greenend.org.uk/pipermail/adns-discuss/2006/001161.html */
|
||||
+ else if (qu->cname_dgram && --(qu->cname_alias_hops_left) <= 0) { /* Don't follow "too long" CNAME chains */
|
||||
adns__debug(ads,serv,qu,"allegedly canonical name %s"
|
||||
- " is actually alias for %s", qu->answer->cname,
|
||||
+ " is actually alias for %s and aliases too deep",
|
||||
+ qu->answer->cname,
|
||||
adns__diag_domain(ads,serv,qu, &qu->vb,
|
||||
dgram,dglen,rdstart));
|
||||
- adns__query_fail(qu,adns_s_prohibitedcname);
|
||||
+ adns__query_fail(qu,adns_s_norecurse);
|
||||
return;
|
||||
} else if (wantedrrs) { /* Ignore CNAME(s) after RR(s). */
|
||||
adns__debug(ads,serv,qu,"ignoring CNAME (to %s) coexisting with RR",
|
Loading…
Reference in a new issue