# HG changeset patch # User Pascal Bellard # Date 1234792236 0 # Node ID 348e5329da7d584feea9fa19d282dada150d37eb # Parent b234d450ada6d01d56813cdc3fb5c1602e00624d Sheerdns: extend wildcard scope diff -r b234d450ada6 -r 348e5329da7d sheerdns/receipt --- a/sheerdns/receipt Mon Feb 16 10:12:08 2009 +0000 +++ b/sheerdns/receipt Mon Feb 16 13:50:36 2009 +0000 @@ -14,6 +14,11 @@ { mv $PACKAGE $src 2> /dev/null cd $src + for i in $( cd ../stuff ; ls *.u); do + [ -f done.$i ] && continue + patch -p0 < ../stuff/$i + touch done.$i + done make } diff -r b234d450ada6 -r 348e5329da7d sheerdns/stuff/large-subdomains.u --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/sheerdns/stuff/large-subdomains.u Mon Feb 16 13:50:36 2009 +0000 @@ -0,0 +1,34 @@ +--- dir.c ++++ dir.c +@@ -77,16 +77,17 @@ + while (!get_file_name (buf, sizeof (buf), qtype, (unsigned char *) q) + && (fd = open (buf, O_RDONLY)) == -1 && (q = strchr (q, '.')) && q++ && (qtype == REQ_SOA + || qtype == REQ_NS)); +- if (fd == -1) { +-/* try lookup "*.example.com" where asking for "nonexistant.example.com": */ ++ for (i = 0; fd == -1; i++) { ++/* try lookup "*.example.com" where asking for "nonexistant.example.com" or "any.where.example.com": */ + char *t; + if (qtype == REQ_SOA || qtype == REQ_NS) /* probably a bad idea to wildcard these, so return */ + return NULL; + q = t = (char *) strdup (s); +- while (*t && *t != '.') ++ for (c = i; *t && *t != '.' || --c >= 0;) + t++; +- if (!*t || t == q || !(*--t = '*') || get_file_name (buf, sizeof (buf), qtype, (unsigned char *) t) +- || (fd = open (buf, O_RDONLY)) == -1) { ++ t == q || !(*--t = '*') || get_file_name (buf, sizeof (buf), qtype, (unsigned char *) t) ++ || (fd = open (buf, O_RDONLY)); ++ if (fd == -1 && !*++t ) { + free (q); + return NULL; } + free (q); } + +--- dir.h ++++ dir.h +@@ -11,4 +11,4 @@ + char **directory_lookup (int qtype, unsigned char *s); + time_t get_mtime (int qtype, unsigned char *s); + +-#define SHEERDNS_DIR "/var/sheerdns" ++#define SHEERDNS_DIR "/var/sheerdns"