File tree 3 files changed +12
-1
lines changed
3 files changed +12
-1
lines changed Original file line number Diff line number Diff line change
1
+ Fixed messages being reported as upgraded without an Upgrade header in Python parser. -- by :user:`Dreamsorcerer`
Original file line number Diff line number Diff line change @@ -503,7 +503,8 @@ def parse_headers(
503
503
close_conn = True
504
504
elif v == "keep-alive" :
505
505
close_conn = False
506
- elif v == "upgrade" :
506
+ # https://www.rfc-editor.org/rfc/rfc9110.html#name-101-switching-protocols
507
+ elif v == "upgrade" and headers .get (hdrs .UPGRADE ):
507
508
upgrade = True
508
509
509
510
# encoding
Original file line number Diff line number Diff line change @@ -473,6 +473,15 @@ def test_conn_upgrade(parser: Any) -> None:
473
473
assert upgrade
474
474
475
475
476
+ def test_bad_upgrade (parser : Any ) -> None :
477
+ """Test not upgraded if missing Upgrade header."""
478
+ text = b"GET /test HTTP/1.1\r \n connection: upgrade\r \n \r \n "
479
+ messages , upgrade , tail = parser .feed_data (text )
480
+ msg = messages [0 ][0 ]
481
+ assert not msg .upgrade
482
+ assert not upgrade
483
+
484
+
476
485
def test_compression_empty (parser : Any ) -> None :
477
486
text = b"GET /test HTTP/1.1\r \n " b"content-encoding: \r \n \r \n "
478
487
messages , upgrade , tail = parser .feed_data (text )
You can’t perform that action at this time.
0 commit comments