Skip to content

Commit

Permalink
Treat nameservers as case insensitive
Browse files Browse the repository at this point in the history
Identified by Michele Baldessari
    michele at redhat.com

Cherry pick of commit:
    a98bddd75c51ee59b87273614ba1e3a0aad45d45

Resolves: rhbz#1612541

Signed-off-by: Lon Hohberger <lon@metamorphism.com>
  • Loading branch information
lhh authored and amoralej committed Feb 22, 2019
1 parent 7d5c70d commit b918a46
Show file tree
Hide file tree
Showing 2 changed files with 72 additions and 1 deletion.
68 changes: 68 additions & 0 deletions 0001-greendns-Treat-etc-hosts-entries-case-insensitive.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
From a98bddd75c51ee59b87273614ba1e3a0aad45d45 Mon Sep 17 00:00:00 2001
From: Ralf Haferkamp <rhafer@suse.de>
Date: Fri, 12 Jan 2018 13:48:09 +0100
Subject: [PATCH] greendns: Treat /etc/hosts entries case-insensitive

Hostname in /etc/hosts are not case-sensitive, this fixes
HostsResolver() accordingly.

eventlet#458

Co-Authored-By: Thomas Bechtold <tbechtold@suse.com>
---
eventlet/support/greendns.py | 4 +++-
tests/greendns_test.py | 14 ++++++++++++++
2 files changed, 17 insertions(+), 1 deletion(-)

diff --git a/eventlet/support/greendns.py b/eventlet/support/greendns.py
index cff0581..140388e 100644
--- a/eventlet/support/greendns.py
+++ b/eventlet/support/greendns.py
@@ -222,9 +222,10 @@ class HostsResolver(object):
ipmap = self._v6
else:
continue
- cname = parts.pop(0)
+ cname = parts.pop(0).lower()
ipmap[cname] = ip
for alias in parts:
+ alias = alias.lower()
ipmap[alias] = ip
self._aliases[alias] = cname
self._last_load = time.time()
@@ -251,6 +252,7 @@ class HostsResolver(object):
qname = dns.name.from_text(qname)
else:
name = str(qname)
+ name = name.lower()
rrset = dns.rrset.RRset(qname, rdclass, rdtype)
rrset.ttl = self._last_load + self.interval - now
if rdclass == dns.rdataclass.IN and rdtype == dns.rdatatype.A:
diff --git a/tests/greendns_test.py b/tests/greendns_test.py
index 4a47c5e..d55cca8 100644
--- a/tests/greendns_test.py
+++ b/tests/greendns_test.py
@@ -174,6 +174,20 @@ class TestHostsResolver(tests.LimitedTestCase):
res = set(hr.getaliases('host.example.com'))
assert res == set(['host'])

+ def test_hosts_case_insensitive(self):
+ name = 'example.com'
+ hr = _make_host_resolver()
+ hr.hosts.write(b'1.2.3.4 ExAmPlE.CoM\n')
+ hr.hosts.flush()
+ hr._load()
+
+ ans = hr.query(name)
+ rr = ans.rrset[0]
+ assert isinstance(rr, greendns.dns.rdtypes.IN.A.A)
+ assert rr.rdtype == dns.rdatatype.A
+ assert rr.rdclass == dns.rdataclass.IN
+ assert rr.address == '1.2.3.4'
+

def _make_mock_base_resolver():
"""A mocked base resolver class"""
--
2.17.1

5 changes: 4 additions & 1 deletion python-eventlet.spec
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@

Name: python-%{pypi_name}
Version: 0.20.1
Release: 5%{?dist}
Release: 6%{?dist}
Summary: Highly concurrent networking library
License: MIT
URL: http://eventlet.net
Expand All @@ -23,6 +23,7 @@ Patch3: 0001-Fix-bad-ipv6-comparison.patch
Patch4: 0002-greendns-udp-Fix-infinite-loop-when-source-address-m.patch
Patch5: 0003-tests-Add-ipv6-tests-for-greendns-udp-function.patch
Patch6: 0004-tests-Add-ipv4-udp-tests-for-greendns.patch
Patch7: 0001-greendns-Treat-etc-hosts-entries-case-insensitive.patch

BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
BuildArch: noarch
Expand Down Expand Up @@ -109,6 +110,7 @@ rm -rf *.egg-info
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1

# generate html docs
export PYTHONPATH="$( pwd ):$PYTHONPATH"
Expand Down Expand Up @@ -184,6 +186,7 @@ rm -rf %{buildroot}/%{python2_sitelib}/%{pypi_name}/green/http/{cookiejar,client
%changelog
* Fri Aug 10 2018 Lon Hohberger <lon@redhat.com> 0.20.1-6
- Add ipv4 tests for bz1607967
- Treat names as case-insensitive (rhbz#1612541)

* Wed Aug 08 2018 Lon Hohberger <lon@redhat.com> 0.20.1-5
- Fix ipv6 address handling (rhbz#1607967)
Expand Down

0 comments on commit b918a46

Please sign in to comment.