It is my first time to submit a patch by 'git send-email'.
If it doesn't work, please let me know. Thanks.
Regards,
hmj
---
src/forward.c | 25 +++++++++++++++++++++----
1 file changed, 21 insertions(+), 4 deletions(-)
diff --git a/src/forward.c b/src/forward.c
index e4745a3..d291695 100644
--- a/src/forward.c
+++ b/src/forward.c
@@ -150,10 +150,19 @@ static unsigned int search_servers(time_t now, union
all_addr **addrpp, unsigned
}
else if (serv->flags & SERV_HAS_DOMAIN)
{
+ int isequal;
unsigned int domainlen = strlen(serv->domain);
- char *matchstart = qdomain + namelen - domainlen;
+ char *matchstart = strcasestr(qdomain, serv->domain);
+ if ((matchstart != NULL) && (*(matchstart+domainlen) == 0 ||
*(matchstart+domainlen) == '.'))
+ isequal = 1;
+ else
+ {
+ matchstart = qdomain + namelen - domainlen;
+ isequal = hostname_isequal(matchstart, serv->domain);
+ }
+
if (namelen >= domainlen &&
- hostname_isequal(matchstart, serv->domain) &&
+ isequal &&
(domainlen == 0 || namelen == domainlen || *(matchstart-1) == '.' ))
{
if ((serv->flags & SERV_NO_REBIND) && norebind)
@@ -589,9 +598,17 @@ static size_t process_reply(struct dns_header *header,
time_t now, struct server
unsigned int matchlen = 0;
for (ipset_pos = daemon->ipsets; ipset_pos; ipset_pos = ipset_pos->next)
{
+ int isequal;
unsigned int domainlen = strlen(ipset_pos->domain);
- char *matchstart = daemon->namebuff + namelen - domainlen;
- if (namelen >= domainlen && hostname_isequal(matchstart,
ipset_pos->domain) &&
+ char *matchstart = strcasestr(daemon->namebuff, ipset_pos->domain);
+ if ((matchstart != NULL) && (*(matchstart+domainlen) == 0 ||
*(matchstart+domainlen) == '.'))
+ isequal = 1;
+ else
+ {
+ matchstart = daemon->namebuff + namelen - domainlen;
+ isequal = hostname_isequal(matchstart, ipset_pos->domain);
+ }
+ if (namelen >= domainlen && isequal &&
(domainlen == 0 || namelen == domainlen || *(matchstart - 1) ==
'.' ) &&
domainlen >= matchlen)
{
--
2.21.0
_______________________________________________
Dnsmasq-discuss mailing list
[email protected]
http://lists.thekelleys.org.uk/mailman/listinfo/dnsmasq-discuss