@@ -51,6 +51,7 @@ static void check_eq(const char *s, const char *exp_s, const char *name)
5151struct tcase {
5252 const char * * input ;
5353 const char * default_scheme ;
54+ const char * custom_method ;
5455 const char * method ;
5556 const char * scheme ;
5657 const char * authority ;
@@ -74,7 +75,7 @@ static void parse_success(const struct tcase *t)
7475 buflen = strlen (buf );
7576 in_len += buflen ;
7677 nread = Curl_h1_req_parse_read (& p , buf , buflen , t -> default_scheme ,
77- 0 , & err );
78+ t -> custom_method , 0 , & err );
7879 if (nread < 0 ) {
7980 curl_mfprintf (stderr , "got err %d parsing: '%s'\n" , err , buf );
8081 fail ("error consuming" );
@@ -122,10 +123,10 @@ static CURLcode test_unit2603(const char *arg)
122123 NULL ,
123124 };
124125 static const struct tcase TEST1a = {
125- T1_INPUT , NULL , "GET" , NULL , NULL , "/path" , 1 , 0
126+ T1_INPUT , NULL , NULL , "GET" , NULL , NULL , "/path" , 1 , 0
126127 };
127128 static const struct tcase TEST1b = {
128- T1_INPUT , "https" , "GET" , "https" , NULL , "/path" , 1 , 0
129+ T1_INPUT , "https" , NULL , "GET" , "https" , NULL , "/path" , 1 , 0
129130 };
130131
131132 static const char * T2_INPUT [] = {
@@ -136,7 +137,7 @@ static CURLcode test_unit2603(const char *arg)
136137 NULL ,
137138 };
138139 static const struct tcase TEST2 = {
139- T2_INPUT , NULL , "GET" , NULL , NULL , "/path" , 1 , 8
140+ T2_INPUT , NULL , NULL , "GET" , NULL , NULL , "/path" , 1 , 8
140141 };
141142
142143 static const char * T3_INPUT [] = {
@@ -145,7 +146,7 @@ static CURLcode test_unit2603(const char *arg)
145146 NULL ,
146147 };
147148 static const struct tcase TEST3a = {
148- T3_INPUT , NULL , "GET" , "ftp" , "ftp.curl.se" , "/xxx?a=2" , 2 , 0
149+ T3_INPUT , NULL , NULL , "GET" , "ftp" , "ftp.curl.se" , "/xxx?a=2" , 2 , 0
149150 };
150151
151152 static const char * T4_INPUT [] = {
@@ -155,7 +156,7 @@ static CURLcode test_unit2603(const char *arg)
155156 NULL ,
156157 };
157158 static const struct tcase TEST4a = {
158- T4_INPUT , NULL , "CONNECT" , NULL , "ftp.curl.se:123" , NULL , 3 , 2
159+ T4_INPUT , NULL , NULL , "CONNECT" , NULL , "ftp.curl.se:123" , NULL , 3 , 2
159160 };
160161
161162 static const char * T5_INPUT [] = {
@@ -165,15 +166,27 @@ static CURLcode test_unit2603(const char *arg)
165166 NULL ,
166167 };
167168 static const struct tcase TEST5a = {
168- T5_INPUT , NULL , "OPTIONS" , NULL , NULL , "*" , 2 , 3
169+ T5_INPUT , NULL , NULL , "OPTIONS" , NULL , NULL , "*" , 2 , 3
169170 };
170171
171172 static const char * T6_INPUT [] = {
172173 "PUT /path HTTP/1.1\nHost: test.curl.se\n\n123" ,
173174 NULL ,
174175 };
175176 static const struct tcase TEST6a = {
176- T6_INPUT , NULL , "PUT" , NULL , NULL , "/path" , 1 , 3
177+ T6_INPUT , NULL , NULL , "PUT" , NULL , NULL , "/path" , 1 , 3
178+ };
179+
180+ /* test a custom method with space, #19543 */
181+ static const char * T7_INPUT [] = {
182+ "IN SANE /path HTTP/1.1\r\nContent-Length: 0\r\n\r\n" ,
183+ NULL ,
184+ };
185+ static const struct tcase TEST7a = {
186+ T7_INPUT , NULL , NULL , "IN" , NULL , NULL , "SANE /path" , 1 , 0
187+ };
188+ static const struct tcase TEST7b = {
189+ T7_INPUT , NULL , "IN SANE" , "IN SANE" , NULL , NULL , "/path" , 1 , 0
177190 };
178191
179192 parse_success (& TEST1a );
@@ -183,6 +196,8 @@ static CURLcode test_unit2603(const char *arg)
183196 parse_success (& TEST4a );
184197 parse_success (& TEST5a );
185198 parse_success (& TEST6a );
199+ parse_success (& TEST7a );
200+ parse_success (& TEST7b );
186201#endif
187202
188203 UNITTEST_END_SIMPLE
0 commit comments