wok rev 2264

Sheerdns: extend wildcard scope
author Pascal Bellard <pascal.bellard@slitaz.org>
date Mon Feb 16 13:50:36 2009 +0000 (2009-02-16)
parents b234d450ada6
children f5075e7ed779
files sheerdns/receipt sheerdns/stuff/large-subdomains.u
line diff
     1.1 --- a/sheerdns/receipt	Mon Feb 16 10:12:08 2009 +0000
     1.2 +++ b/sheerdns/receipt	Mon Feb 16 13:50:36 2009 +0000
     1.3 @@ -14,6 +14,11 @@
     1.4  {
     1.5  	mv $PACKAGE $src 2> /dev/null
     1.6  	cd $src
     1.7 +	for i in $( cd ../stuff ; ls *.u); do
     1.8 +		[ -f done.$i ] && continue
     1.9 +		patch -p0 < ../stuff/$i
    1.10 +		touch done.$i
    1.11 +	done
    1.12  	make
    1.13  }
    1.14  
     2.1 --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
     2.2 +++ b/sheerdns/stuff/large-subdomains.u	Mon Feb 16 13:50:36 2009 +0000
     2.3 @@ -0,0 +1,34 @@
     2.4 +--- dir.c
     2.5 ++++ dir.c
     2.6 +@@ -77,16 +77,17 @@
     2.7 +     while (!get_file_name (buf, sizeof (buf), qtype, (unsigned char *) q)
     2.8 + 	   && (fd = open (buf, O_RDONLY)) == -1 && (q = strchr (q, '.')) && q++ && (qtype == REQ_SOA
     2.9 + 										    || qtype == REQ_NS));
    2.10 +-    if (fd == -1) {
    2.11 +-/* try lookup "*.example.com" where asking for "nonexistant.example.com": */
    2.12 ++    for (i = 0; fd == -1; i++) {
    2.13 ++/* try lookup "*.example.com" where asking for "nonexistant.example.com" or "any.where.example.com": */
    2.14 + 	char *t;
    2.15 + 	if (qtype == REQ_SOA || qtype == REQ_NS)	/* probably a bad idea to wildcard these, so return */
    2.16 + 	    return NULL;
    2.17 + 	q = t = (char *) strdup (s);
    2.18 +-	while (*t && *t != '.')
    2.19 ++	for (c = i; *t && *t != '.' || --c >= 0;)
    2.20 + 	    t++;
    2.21 +-	if (!*t || t == q || !(*--t = '*') || get_file_name (buf, sizeof (buf), qtype, (unsigned char *) t)
    2.22 +-	    || (fd = open (buf, O_RDONLY)) == -1) {
    2.23 ++	t == q || !(*--t = '*') || get_file_name (buf, sizeof (buf), qtype, (unsigned char *) t)
    2.24 ++	    || (fd = open (buf, O_RDONLY));
    2.25 ++	if (fd == -1 && !*++t ) {
    2.26 + 	    free (q);
    2.27 + 	    return NULL; }
    2.28 + 	free (q); }
    2.29 +
    2.30 +--- dir.h
    2.31 ++++ dir.h
    2.32 +@@ -11,4 +11,4 @@
    2.33 + char **directory_lookup (int qtype, unsigned char *s);
    2.34 + time_t get_mtime (int qtype, unsigned char *s);
    2.35 + 
    2.36 +-#define SHEERDNS_DIR	"/var/sheerdns"
    2.37 ++#define SHEERDNS_DIR	"/var/sheerdns"