From 9cc7d455718456dd88daf829c29bec9527530b11 Mon Sep 17 00:00:00 2001 From: R David Murray Date: Wed, 20 Mar 2013 00:10:51 -0400 Subject: [PATCH] #17485: Delete the Content-Length header if the data attribute is deleted. This is a follow on to issue 16464. Original patch by Daniel Wozniak. --- Lib/test/test_urllib2.py | 13 +++++++++++-- Lib/urllib/request.py | 2 +- Misc/ACKS | 1 + Misc/NEWS | 3 +++ 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/Lib/test/test_urllib2.py b/Lib/test/test_urllib2.py index 3e19ecff090..0e0572383d3 100644 --- a/Lib/test/test_urllib2.py +++ b/Lib/test/test_urllib2.py @@ -1488,11 +1488,20 @@ def test_data(self): # if we change data we need to remove content-length header # (cause it's most probably calculated for previous value) def test_setting_data_should_remove_content_length(self): - self.assertFalse("Content-length" in self.get.unredirected_hdrs) + self.assertNotIn("Content-length", self.get.unredirected_hdrs) self.get.add_unredirected_header("Content-length", 42) self.assertEqual(42, self.get.unredirected_hdrs["Content-length"]) self.get.data = "spam" - self.assertFalse("Content-length" in self.get.unredirected_hdrs) + self.assertNotIn("Content-length", self.get.unredirected_hdrs) + + # issue 17485 same for deleting data. + def test_deleting_data_should_remove_content_length(self): + self.assertNotIn("Content-length", self.get.unredirected_hdrs) + self.get.data = 'foo' + self.get.add_unredirected_header("Content-length", 3) + self.assertEqual(3, self.get.unredirected_hdrs["Content-length"]) + del self.get.data + self.assertNotIn("Content-length", self.get.unredirected_hdrs) def test_get_full_url(self): self.assertEqual("http://www.python.org/~jeremy/", diff --git a/Lib/urllib/request.py b/Lib/urllib/request.py index 90731cb0593..8b3cdf9d2cc 100644 --- a/Lib/urllib/request.py +++ b/Lib/urllib/request.py @@ -296,7 +296,7 @@ def data(self, data): @data.deleter def data(self): - self._data = None + self.data = None def _parse(self): self.type, rest = splittype(self.full_url) diff --git a/Misc/ACKS b/Misc/ACKS index 600e0bf03c5..21f2cd57f25 100644 --- a/Misc/ACKS +++ b/Misc/ACKS @@ -1341,6 +1341,7 @@ Steven Work Gordon Worley Darren Worrall Thomas Wouters +Daniel Wozniak Heiko Wundram Doug Wyatt Robert Xiao diff --git a/Misc/NEWS b/Misc/NEWS index e7c59b18b5e..8e46c60e9ee 100644 --- a/Misc/NEWS +++ b/Misc/NEWS @@ -292,6 +292,9 @@ Core and Builtins Library ------- +- Issue #17485: Also delete the Request Content-Length header if the data + attribute is deleted. (Follow on to issue 16464). + - Issue #15927: CVS now correctly parses escaped newlines and carriage when parsing with quoting turned off.