@@ -1772,6 +1772,167 @@ const struct message responses[] =
1772
1772
,.chunk_lengths = { 2 }
1773
1773
}
1774
1774
1775
+ #define HTTP_101_RESPONSE_WITH_UPGRADE_HEADER 22
1776
+ , {.name = "HTTP 101 response with Upgrade header"
1777
+ ,.type = HTTP_RESPONSE
1778
+ ,.raw = "HTTP/1.1 101 Switching Protocols\r\n"
1779
+ "Connection: upgrade\r\n"
1780
+ "Upgrade: h2c\r\n"
1781
+ "\r\n"
1782
+ "proto"
1783
+ ,.should_keep_alive = TRUE
1784
+ ,.message_complete_on_eof = FALSE
1785
+ ,.http_major = 1
1786
+ ,.http_minor = 1
1787
+ ,.status_code = 101
1788
+ ,.response_status = "Switching Protocols"
1789
+ ,.upgrade = "proto"
1790
+ ,.num_headers = 2
1791
+ ,.headers =
1792
+ { { "Connection" , "upgrade" }
1793
+ , { "Upgrade" , "h2c" }
1794
+ }
1795
+ }
1796
+
1797
+ #define HTTP_101_RESPONSE_WITH_UPGRADE_HEADER_AND_CONTENT_LENGTH 23
1798
+ , {.name = "HTTP 101 response with Upgrade and Content-Length header"
1799
+ ,.type = HTTP_RESPONSE
1800
+ ,.raw = "HTTP/1.1 101 Switching Protocols\r\n"
1801
+ "Connection: upgrade\r\n"
1802
+ "Upgrade: h2c\r\n"
1803
+ "Content-Length: 4\r\n"
1804
+ "\r\n"
1805
+ "body"
1806
+ "proto"
1807
+ ,.should_keep_alive = TRUE
1808
+ ,.message_complete_on_eof = FALSE
1809
+ ,.http_major = 1
1810
+ ,.http_minor = 1
1811
+ ,.status_code = 101
1812
+ ,.response_status = "Switching Protocols"
1813
+ ,.body = "body"
1814
+ ,.upgrade = "proto"
1815
+ ,.num_headers = 3
1816
+ ,.headers =
1817
+ { { "Connection" , "upgrade" }
1818
+ , { "Upgrade" , "h2c" }
1819
+ , { "Content-Length" , "4" }
1820
+ }
1821
+ }
1822
+
1823
+ #define HTTP_101_RESPONSE_WITH_UPGRADE_HEADER_AND_TRANSFER_ENCODING 24
1824
+ , {.name = "HTTP 101 response with Upgrade and Transfer-Encoding header"
1825
+ ,.type = HTTP_RESPONSE
1826
+ ,.raw = "HTTP/1.1 101 Switching Protocols\r\n"
1827
+ "Connection: upgrade\r\n"
1828
+ "Upgrade: h2c\r\n"
1829
+ "Transfer-Encoding: chunked\r\n"
1830
+ "\r\n"
1831
+ "2\r\n"
1832
+ "bo\r\n"
1833
+ "2\r\n"
1834
+ "dy\r\n"
1835
+ "0\r\n"
1836
+ "\r\n"
1837
+ "proto"
1838
+ ,.should_keep_alive = TRUE
1839
+ ,.message_complete_on_eof = FALSE
1840
+ ,.http_major = 1
1841
+ ,.http_minor = 1
1842
+ ,.status_code = 101
1843
+ ,.response_status = "Switching Protocols"
1844
+ ,.body = "body"
1845
+ ,.upgrade = "proto"
1846
+ ,.num_headers = 3
1847
+ ,.headers =
1848
+ { { "Connection" , "upgrade" }
1849
+ , { "Upgrade" , "h2c" }
1850
+ , { "Transfer-Encoding" , "chunked" }
1851
+ }
1852
+ ,.num_chunks_complete = 3
1853
+ ,.chunk_lengths = { 2 , 2 }
1854
+ }
1855
+
1856
+ #define HTTP_200_RESPONSE_WITH_UPGRADE_HEADER 25
1857
+ , {.name = "HTTP 200 response with Upgrade header"
1858
+ ,.type = HTTP_RESPONSE
1859
+ ,.raw = "HTTP/1.1 200 OK\r\n"
1860
+ "Connection: upgrade\r\n"
1861
+ "Upgrade: h2c\r\n"
1862
+ "\r\n"
1863
+ "body"
1864
+ ,.should_keep_alive = FALSE
1865
+ ,.message_complete_on_eof = TRUE
1866
+ ,.http_major = 1
1867
+ ,.http_minor = 1
1868
+ ,.status_code = 200
1869
+ ,.response_status = "OK"
1870
+ ,.body = "body"
1871
+ ,.upgrade = NULL
1872
+ ,.num_headers = 2
1873
+ ,.headers =
1874
+ { { "Connection" , "upgrade" }
1875
+ , { "Upgrade" , "h2c" }
1876
+ }
1877
+ }
1878
+
1879
+ #define HTTP_200_RESPONSE_WITH_UPGRADE_HEADER_AND_CONTENT_LENGTH 26
1880
+ , {.name = "HTTP 200 response with Upgrade and Content-Length header"
1881
+ ,.type = HTTP_RESPONSE
1882
+ ,.raw = "HTTP/1.1 200 OK\r\n"
1883
+ "Connection: upgrade\r\n"
1884
+ "Upgrade: h2c\r\n"
1885
+ "Content-Length: 4\r\n"
1886
+ "\r\n"
1887
+ "body"
1888
+ ,.should_keep_alive = TRUE
1889
+ ,.message_complete_on_eof = FALSE
1890
+ ,.http_major = 1
1891
+ ,.http_minor = 1
1892
+ ,.status_code = 200
1893
+ ,.response_status = "OK"
1894
+ ,.num_headers = 3
1895
+ ,.body = "body"
1896
+ ,.upgrade = NULL
1897
+ ,.headers =
1898
+ { { "Connection" , "upgrade" }
1899
+ , { "Upgrade" , "h2c" }
1900
+ , { "Content-Length" , "4" }
1901
+ }
1902
+ }
1903
+
1904
+ #define HTTP_200_RESPONSE_WITH_UPGRADE_HEADER_AND_TRANSFER_ENCODING 27
1905
+ , {.name = "HTTP 200 response with Upgrade and Transfer-Encoding header"
1906
+ ,.type = HTTP_RESPONSE
1907
+ ,.raw = "HTTP/1.1 200 OK\r\n"
1908
+ "Connection: upgrade\r\n"
1909
+ "Upgrade: h2c\r\n"
1910
+ "Transfer-Encoding: chunked\r\n"
1911
+ "\r\n"
1912
+ "2\r\n"
1913
+ "bo\r\n"
1914
+ "2\r\n"
1915
+ "dy\r\n"
1916
+ "0\r\n"
1917
+ "\r\n"
1918
+ ,.should_keep_alive = TRUE
1919
+ ,.message_complete_on_eof = FALSE
1920
+ ,.http_major = 1
1921
+ ,.http_minor = 1
1922
+ ,.status_code = 200
1923
+ ,.response_status = "OK"
1924
+ ,.num_headers = 3
1925
+ ,.body = "body"
1926
+ ,.upgrade = NULL
1927
+ ,.headers =
1928
+ { { "Connection" , "upgrade" }
1929
+ , { "Upgrade" , "h2c" }
1930
+ , { "Transfer-Encoding" , "chunked" }
1931
+ }
1932
+ ,.num_chunks_complete = 3
1933
+ ,.chunk_lengths = { 2 , 2 }
1934
+ }
1935
+
1775
1936
, {.name = NULL } /* sentinel */
1776
1937
};
1777
1938
@@ -2481,7 +2642,9 @@ message_eq (int index, int connect, const struct message *expected)
2481
2642
if (!r ) return 0 ;
2482
2643
}
2483
2644
2484
- MESSAGE_CHECK_STR_EQ (expected , m , upgrade );
2645
+ if (!connect ) {
2646
+ MESSAGE_CHECK_STR_EQ (expected , m , upgrade );
2647
+ }
2485
2648
2486
2649
return 1 ;
2487
2650
}
0 commit comments