diff options
author | Jack Wearden <jack@jackwearden.co.uk> | 2018-05-21 10:26:33 -0700 |
---|---|---|
committer | Jack Wearden <jack@jackwearden.co.uk> | 2018-05-21 10:26:39 -0700 |
commit | a3aafa58111631a4b04a28f671b8bd7e57533e48 (patch) | |
tree | 836a6b17fb8a77af744cfa4b8123b7ab7fe120cb | |
parent | 66e256b042226e63378f32a9dbe5dcfd1dad52d3 (diff) | |
download | waitress-a3aafa58111631a4b04a28f671b8bd7e57533e48.tar.gz |
Add more cases of removed server header & tests
-rw-r--r-- | CHANGES.txt | 10 | ||||
-rw-r--r-- | waitress/adjustments.py | 8 | ||||
-rw-r--r-- | waitress/task.py | 8 | ||||
-rw-r--r-- | waitress/tests/test_adjustments.py | 11 | ||||
-rw-r--r-- | waitress/tests/test_init.py | 6 |
5 files changed, 28 insertions, 15 deletions
diff --git a/CHANGES.txt b/CHANGES.txt index e1726c6..184473a 100644 --- a/CHANGES.txt +++ b/CHANGES.txt @@ -1,3 +1,13 @@ +Unreleased (2018-05-21) +----------------------- + +Features +~~~~~~~~ + +- Server header can be omitted by specifying `ident=None` or `ident=''`. + See https://github.com/Pylons/waitress/pull/187 + + 1.1.0 (2017-10-10) ------------------ diff --git a/waitress/adjustments.py b/waitress/adjustments.py index db6291b..9b8ac1a 100644 --- a/waitress/adjustments.py +++ b/waitress/adjustments.py @@ -66,10 +66,8 @@ def slash_fixed_str(s): s = '/' + s.lstrip('/').rstrip('/') return s -def str_ifnotnone(s): - if s is None: - return None - return str(s) +def str_iftruthy(s): + return str(s) if s else s class _str_marker(str): pass @@ -103,7 +101,7 @@ class Adjustments(object): ('max_request_header_size', int), ('max_request_body_size', int), ('expose_tracebacks', asbool), - ('ident', str_ifnotnone), + ('ident', str_iftruthy), ('asyncore_loop_timeout', int), ('asyncore_use_poll', asbool), ('unix_socket', str), diff --git a/waitress/task.py b/waitress/task.py index eaeba56..17483a0 100644 --- a/waitress/task.py +++ b/waitress/task.py @@ -250,11 +250,11 @@ class Task(object): # Set the Server and Date field, if not yet specified. This is needed # if the server is used as a proxy. ident = self.channel.server.adj.ident - if ident is not None: - if not server_header: + if not server_header: + if ident: response_headers.append(('Server', ident)) - else: - response_headers.append(('Via', ident)) + else: + response_headers.append(('Via', ident)) if not date_header: response_headers.append(('Date', build_http_date(self.start_time))) diff --git a/waitress/tests/test_adjustments.py b/waitress/tests/test_adjustments.py index 9446705..9aa2c2b 100644 --- a/waitress/tests/test_adjustments.py +++ b/waitress/tests/test_adjustments.py @@ -219,6 +219,17 @@ class TestAdjustments(unittest.TestCase): def test_ipv6_disabled(self): self.assertRaises(ValueError, self._makeOne, ipv6=False, listen="[::]:8080") + def test_server_header_removable(self): + inst = self._makeOne(ident=None) + self.assertEqual(inst.ident, None) + + inst = self._makeOne(ident='') + self.assertEqual(inst.ident, '') + + inst = self._makeOne(ident='specific_headaer') + self.assertEqual(inst.ident, 'specific_header') + + class TestCLI(unittest.TestCase): def parse(self, argv): diff --git a/waitress/tests/test_init.py b/waitress/tests/test_init.py index 56adf0d..9fbd31a 100644 --- a/waitress/tests/test_init.py +++ b/waitress/tests/test_init.py @@ -14,12 +14,6 @@ class Test_serve(unittest.TestCase): self.assertEqual(result, None) self.assertEqual(server.ran, True) - def test_empty_server_header(self): - server = DummyServerFactory() - app = object() - result = self._callFUT(app, _server=server, _quiet=True, ident=None) - self.assertIsNone(server.adj.ident) - class Test_serve_paste(unittest.TestCase): |