Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
b75a0e9f
Commit
b75a0e9f
authored
Sep 07, 2015
by
Martin Panter
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Issue #17849: Raise sensible exception for invalid HTTP tunnel response
Initial patch from Cory Benfield.
parent
04861dc8
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
20 additions
and
0 deletions
+20
-0
Lib/httplib.py
Lib/httplib.py
+5
-0
Lib/test/test_httplib.py
Lib/test/test_httplib.py
+10
-0
Misc/ACKS
Misc/ACKS
+1
-0
Misc/NEWS
Misc/NEWS
+4
-0
No files found.
Lib/httplib.py
View file @
b75a0e9f
...
...
@@ -810,6 +810,11 @@ class HTTPConnection:
method
=
self
.
_method
)
(
version
,
code
,
message
)
=
response
.
_read_status
()
if
version
==
"HTTP/0.9"
:
# HTTP/0.9 doesn't support the CONNECT verb, so if httplib has
# concluded HTTP/0.9 is being used something has gone wrong.
self
.
close
()
raise
socket
.
error
(
"Invalid response from tunnel request"
)
if
code
!=
200
:
self
.
close
()
raise
socket
.
error
(
"Tunnel connection failed: %d %s"
%
(
code
,
...
...
Lib/test/test_httplib.py
View file @
b75a0e9f
...
...
@@ -578,6 +578,16 @@ class BasicTest(TestCase):
#self.assertTrue(response[0].closed)
self
.
assertTrue
(
conn
.
sock
.
file_closed
)
def
test_proxy_tunnel_without_status_line
(
self
):
# Issue 17849: If a proxy tunnel is created that does not return
# a status code, fail.
body
=
'hello world'
conn
=
httplib
.
HTTPConnection
(
'example.com'
,
strict
=
False
)
conn
.
set_tunnel
(
'foo'
)
conn
.
sock
=
FakeSocket
(
body
)
with
self
.
assertRaisesRegexp
(
socket
.
error
,
"Invalid response"
):
conn
.
_tunnel
()
class
OfflineTest
(
TestCase
):
def
test_responses
(
self
):
self
.
assertEqual
(
httplib
.
responses
[
httplib
.
NOT_FOUND
],
"Not Found"
)
...
...
Misc/ACKS
View file @
b75a0e9f
...
...
@@ -107,6 +107,7 @@ Ben Bell
Thomas Bellman
Alexander “Саша” Belopolsky
Eli Bendersky
Cory Benfield
David Benjamin
Oscar Benjamin
Andrew Bennetts
...
...
Misc/NEWS
View file @
b75a0e9f
...
...
@@ -37,6 +37,10 @@ Core and Builtins
Library
-------
-
Issue
#
17849
:
Raise
a
sensible
exception
if
an
invalid
response
is
received
for
a
HTTP
tunnel
request
,
as
seen
with
some
servers
that
do
not
support
tunnelling
.
Initial
patch
from
Cory
Benfield
.
-
Issue
#
16180
:
Exit
pdb
if
file
has
syntax
error
,
instead
of
trapping
user
in
an
infinite
loop
.
Patch
by
Xavier
de
Gaye
.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment