Title: Use of set_tunnel with default port results in incorrect post value in host header
Type: behavior Stage: resolved
Components: Library (Lib) Versions: Python 3.5, Python 3.4, Python 2.7
Status: closed Resolution: fixed
Dependencies: Superseder:
Assigned To: serhiy.storchaka Nosy List: berker.peksag, demian.brecht, nikratio, orsenthil, python-dev, serhiy.storchaka
Priority: normal Keywords: patch

Created on 2014-07-28 18:09 by demian.brecht, last changed 2015-05-28 19:44 by serhiy.storchaka. This issue is now closed.

File name Uploaded Description Edit
issue22095.patch demian.brecht, 2014-07-28 18:11 review
issue22095_1.patch demian.brecht, 2014-11-28 22:37 review
issue22095_2.patch demian.brecht, 2014-12-12 05:20 review
Messages (10)
msg224175 - (view) Author: Demian Brecht (demian.brecht) * Date: 2014-07-28 18:09
Creating this bug for clarity, but was encountered while investigating 22041 (now set as not a bug).

When using set_tunnel with default port, the port value in the host header is set to "None":

"send: b'POST [PATH] HTTP/1.1\r\nHost: [HOST]:None\r\nAccept-Encoding: identity\r\nContent-Length: 41\r\nAccept: text/plain\r\nContent-type: application/x-www-form-urlencoded\r\n\r\n[FORM_DATA]'"

This issue seems to have been introduced in 3.4 when _tunnel_host and _tunnel_port were introduced to decouple the destination host and port from the proxy host and port.
msg224991 - (view) Author: Demian Brecht (demian.brecht) * Date: 2014-08-07 04:42
Bump for review
msg231308 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2014-11-18 08:49
If call _get_hostport() in set_tunnel() then it should be removed in _tunnel().

As for tests, it would be better do not rely on implementation details. Instead you can monkey-patch the send() method of of HTTPConnection instance and check passed argument.
msg231834 - (view) Author: Demian Brecht (demian.brecht) * Date: 2014-11-28 22:37
Thanks Serhiy, new patch addresses your comments.
msg232502 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2014-12-11 22:39
See also comments on Rietveld (e-mail notification likely fell in spam).
msg232508 - (view) Author: Demian Brecht (demian.brecht) * Date: 2014-12-12 05:20
Thanks for the ping Serhiy, indeed the review notification email was sitting in spam. New patch addressing review comments as well as rectifying my own silliness.
msg232513 - (view) Author: Roundup Robot (python-dev) Date: 2014-12-12 07:36
New changeset 676d6bcfc031 by Serhiy Storchaka in branch '3.4':
Issue #22095: Fixed HTTPConnection.set_tunnel with default port.  The port

New changeset ebe2072e5472 by Serhiy Storchaka in branch 'default':
Issue #22095: Fixed HTTPConnection.set_tunnel with default port.  The port
msg232514 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2014-12-12 07:47
Thank you for your contribution Demian.
msg244341 - (view) Author: Roundup Robot (python-dev) Date: 2015-05-28 19:38
New changeset 3b6e0720a69d by Serhiy Storchaka in branch '2.7':
Issue #22095: Fixed HTTPConnection.set_tunnel with default port.  The port
msg244342 - (view) Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) Date: 2015-05-28 19:44
Backported to 2.7 because this is needed to support proxy with a port in urllib/urllib2 as documented. See issue24311.
Date User Action Args
2015-05-28 19:45:54serhiy.storchakalinkissue24311 superseder
2015-05-28 19:44:32serhiy.storchakasetmessages: + msg244342
versions: + Python 2.7
2015-05-28 19:38:00python-devsetmessages: + msg244341
2014-12-12 07:47:00serhiy.storchakasetstatus: open -> closed
resolution: fixed
messages: + msg232514

stage: patch review -> resolved
2014-12-12 07:36:55python-devsetnosy: + python-dev
messages: + msg232513
2014-12-12 05:32:07berker.peksagsetnosy: + berker.peksag
2014-12-12 05:20:38demian.brechtsetfiles: + issue22095_2.patch

messages: + msg232508
2014-12-11 22:39:42serhiy.storchakasetmessages: + msg232502
2014-11-30 16:51:35serhiy.storchakasetassignee: serhiy.storchaka
2014-11-28 22:37:40demian.brechtsetmessages: + msg231834
2014-11-28 22:37:01demian.brechtsetfiles: + issue22095_1.patch
2014-11-18 08:49:04serhiy.storchakasetnosy: + nikratio, serhiy.storchaka, orsenthil

messages: + msg231308
stage: patch review
2014-08-07 04:42:28demian.brechtsetmessages: + msg224991
2014-07-28 18:11:43demian.brechtsetfiles: + issue22095.patch
keywords: + patch
2014-07-28 18:09:43demian.brechtcreate