1 #if LLHTTP_STRICT_MODE
2
3 #include <stdlib.h>
4 #include <stdint.h>
5 #include <string.h>
6
7 #ifdef __SSE4_2__
8 #ifdef _MSC_VER
9 #include <nmmintrin.h>
10 #else /* !_MSC_VER */
11 #include <x86intrin.h>
12 #endif /* _MSC_VER */
13 #endif /* __SSE4_2__ */
14
15 #ifdef _MSC_VER
16 #define ALIGN(n) _declspec(align(n))
17 #else /* !_MSC_VER */
18 #define ALIGN(n) __attribute__((aligned(n)))
19 #endif /* _MSC_VER */
20
21 #include "llhttp.h"
22
23 typedef int (*llhttp__internal__span_cb)(
24 llhttp__internal_t*, const char*, const char*);
25
26 static const unsigned char llparse_blob0[] = {
27 'C', 'L'
28 };
29 static const unsigned char llparse_blob1[] = {
30 0xd, 0xa
31 };
32 static const unsigned char llparse_blob2[] = {
33 'o', 'n'
34 };
35 static const unsigned char llparse_blob3[] = {
36 'e', 'c', 't', 'i', 'o', 'n'
37 };
38 static const unsigned char llparse_blob4[] = {
39 'l', 'o', 's', 'e'
40 };
41 static const unsigned char llparse_blob5[] = {
42 'e', 'e', 'p', '-', 'a', 'l', 'i', 'v', 'e'
43 };
44 static const unsigned char llparse_blob6[] = {
45 'p', 'g', 'r', 'a', 'd', 'e'
46 };
47 static const unsigned char llparse_blob7[] = {
48 'c', 'h', 'u', 'n', 'k', 'e', 'd'
49 };
50 #ifdef __SSE4_2__
51 static const unsigned char ALIGN(16) llparse_blob8[] = {
52 0x9, 0x9, ' ', '~', 0x80, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0,
53 0x0, 0x0, 0x0, 0x0, 0x0
54 };
55 #endif /* __SSE4_2__ */
56 #ifdef __SSE4_2__
57 static const unsigned char ALIGN(16) llparse_blob9[] = {
58 '!', '!', '#', '\'', '*', '+', '-', '.', '0', '9', 'A',
59 'Z', '^', 'z', '|', '|'
60 };
61 #endif /* __SSE4_2__ */
62 #ifdef __SSE4_2__
63 static const unsigned char ALIGN(16) llparse_blob10[] = {
64 '~', '~', 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
65 0x0, 0x0, 0x0, 0x0, 0x0
66 };
67 #endif /* __SSE4_2__ */
68 static const unsigned char llparse_blob11[] = {
69 'e', 'n', 't', '-', 'l', 'e', 'n', 'g', 't', 'h'
70 };
71 static const unsigned char llparse_blob12[] = {
72 'r', 'o', 'x', 'y', '-', 'c', 'o', 'n', 'n', 'e', 'c',
73 't', 'i', 'o', 'n'
74 };
75 static const unsigned char llparse_blob13[] = {
76 'r', 'a', 'n', 's', 'f', 'e', 'r', '-', 'e', 'n', 'c',
77 'o', 'd', 'i', 'n', 'g'
78 };
79 static const unsigned char llparse_blob14[] = {
80 'p', 'g', 'r', 'a', 'd', 'e'
81 };
82 static const unsigned char llparse_blob15[] = {
83 'T', 'T', 'P', '/'
84 };
85 static const unsigned char llparse_blob16[] = {
86 'C', 'E', '/'
87 };
88 static const unsigned char llparse_blob17[] = {
89 'I', 'N', 'D'
90 };
91 static const unsigned char llparse_blob18[] = {
92 'E', 'C', 'K', 'O', 'U', 'T'
93 };
94 static const unsigned char llparse_blob19[] = {
95 'N', 'E', 'C', 'T'
96 };
97 static const unsigned char llparse_blob20[] = {
98 'E', 'L', 'E', 'T', 'E'
99 };
100 static const unsigned char llparse_blob21[] = {
101 'E', 'T'
102 };
103 static const unsigned char llparse_blob22[] = {
104 'E', 'A', 'D'
105 };
106 static const unsigned char llparse_blob23[] = {
107 'N', 'K'
108 };
109 static const unsigned char llparse_blob24[] = {
110 'C', 'K'
111 };
112 static const unsigned char llparse_blob25[] = {
113 'S', 'E', 'A', 'R', 'C', 'H'
114 };
115 static const unsigned char llparse_blob26[] = {
116 'R', 'G', 'E'
117 };
118 static const unsigned char llparse_blob27[] = {
119 'C', 'T', 'I', 'V', 'I', 'T', 'Y'
120 };
121 static const unsigned char llparse_blob28[] = {
122 'L', 'E', 'N', 'D', 'A', 'R'
123 };
124 static const unsigned char llparse_blob29[] = {
125 'V', 'E'
126 };
127 static const unsigned char llparse_blob30[] = {
128 'O', 'T', 'I', 'F', 'Y'
129 };
130 static const unsigned char llparse_blob31[] = {
131 'P', 'T', 'I', 'O', 'N', 'S'
132 };
133 static const unsigned char llparse_blob32[] = {
134 'T', 'C', 'H'
135 };
136 static const unsigned char llparse_blob33[] = {
137 'S', 'T'
138 };
139 static const unsigned char llparse_blob34[] = {
140 'I', 'N', 'D'
141 };
142 static const unsigned char llparse_blob35[] = {
143 'A', 'T', 'C', 'H'
144 };
145 static const unsigned char llparse_blob36[] = {
146 'G', 'E'
147 };
148 static const unsigned char llparse_blob37[] = {
149 'I', 'N', 'D'
150 };
151 static const unsigned char llparse_blob38[] = {
152 'O', 'R', 'T'
153 };
154 static const unsigned char llparse_blob39[] = {
155 'A', 'R', 'C', 'H'
156 };
157 static const unsigned char llparse_blob40[] = {
158 'U', 'R', 'C', 'E'
159 };
160 static const unsigned char llparse_blob41[] = {
161 'B', 'S', 'C', 'R', 'I', 'B', 'E'
162 };
163 static const unsigned char llparse_blob42[] = {
164 'R', 'A', 'C', 'E'
165 };
166 static const unsigned char llparse_blob43[] = {
167 'I', 'N', 'D'
168 };
169 static const unsigned char llparse_blob44[] = {
170 'N', 'K'
171 };
172 static const unsigned char llparse_blob45[] = {
173 'C', 'K'
174 };
175 static const unsigned char llparse_blob46[] = {
176 'U', 'B', 'S', 'C', 'R', 'I', 'B', 'E'
177 };
178 static const unsigned char llparse_blob47[] = {
179 'H', 'T', 'T', 'P', '/'
180 };
181 static const unsigned char llparse_blob48[] = {
182 'A', 'D'
183 };
184 static const unsigned char llparse_blob49[] = {
185 'T', 'P', '/'
186 };
187
188 enum llparse_match_status_e {
189 kMatchComplete,
190 kMatchPause,
191 kMatchMismatch
192 };
193 typedef enum llparse_match_status_e llparse_match_status_t;
194
195 struct llparse_match_s {
196 llparse_match_status_t status;
197 const unsigned char* current;
198 };
199 typedef struct llparse_match_s llparse_match_t;
200
llparse__match_sequence_id(llhttp__internal_t * s,const unsigned char * p,const unsigned char * endp,const unsigned char * seq,uint32_t seq_len)201 static llparse_match_t llparse__match_sequence_id(
202 llhttp__internal_t* s, const unsigned char* p,
203 const unsigned char* endp,
204 const unsigned char* seq, uint32_t seq_len) {
205 uint32_t index;
206 llparse_match_t res;
207
208 index = s->_index;
209 for (; p != endp; p++) {
210 unsigned char current;
211
212 current = *p;
213 if (current == seq[index]) {
214 if (++index == seq_len) {
215 res.status = kMatchComplete;
216 goto reset;
217 }
218 } else {
219 res.status = kMatchMismatch;
220 goto reset;
221 }
222 }
223 s->_index = index;
224 res.status = kMatchPause;
225 res.current = p;
226 return res;
227 reset:
228 s->_index = 0;
229 res.current = p;
230 return res;
231 }
232
llparse__match_sequence_to_lower(llhttp__internal_t * s,const unsigned char * p,const unsigned char * endp,const unsigned char * seq,uint32_t seq_len)233 static llparse_match_t llparse__match_sequence_to_lower(
234 llhttp__internal_t* s, const unsigned char* p,
235 const unsigned char* endp,
236 const unsigned char* seq, uint32_t seq_len) {
237 uint32_t index;
238 llparse_match_t res;
239
240 index = s->_index;
241 for (; p != endp; p++) {
242 unsigned char current;
243
244 current = ((*p) >= 'A' && (*p) <= 'Z' ? (*p | 0x20) : (*p));
245 if (current == seq[index]) {
246 if (++index == seq_len) {
247 res.status = kMatchComplete;
248 goto reset;
249 }
250 } else {
251 res.status = kMatchMismatch;
252 goto reset;
253 }
254 }
255 s->_index = index;
256 res.status = kMatchPause;
257 res.current = p;
258 return res;
259 reset:
260 s->_index = 0;
261 res.current = p;
262 return res;
263 }
264
llparse__match_sequence_to_lower_unsafe(llhttp__internal_t * s,const unsigned char * p,const unsigned char * endp,const unsigned char * seq,uint32_t seq_len)265 static llparse_match_t llparse__match_sequence_to_lower_unsafe(
266 llhttp__internal_t* s, const unsigned char* p,
267 const unsigned char* endp,
268 const unsigned char* seq, uint32_t seq_len) {
269 uint32_t index;
270 llparse_match_t res;
271
272 index = s->_index;
273 for (; p != endp; p++) {
274 unsigned char current;
275
276 current = ((*p) | 0x20);
277 if (current == seq[index]) {
278 if (++index == seq_len) {
279 res.status = kMatchComplete;
280 goto reset;
281 }
282 } else {
283 res.status = kMatchMismatch;
284 goto reset;
285 }
286 }
287 s->_index = index;
288 res.status = kMatchPause;
289 res.current = p;
290 return res;
291 reset:
292 s->_index = 0;
293 res.current = p;
294 return res;
295 }
296
297 enum llparse_state_e {
298 s_error,
299 s_n_llhttp__internal__n_closed,
300 s_n_llhttp__internal__n_invoke_llhttp__after_message_complete,
301 s_n_llhttp__internal__n_pause_1,
302 s_n_llhttp__internal__n_invoke_is_equal_upgrade,
303 s_n_llhttp__internal__n_invoke_llhttp__on_message_complete_2,
304 s_n_llhttp__internal__n_chunk_data_almost_done,
305 s_n_llhttp__internal__n_consume_content_length,
306 s_n_llhttp__internal__n_span_start_llhttp__on_body,
307 s_n_llhttp__internal__n_invoke_is_equal_content_length,
308 s_n_llhttp__internal__n_chunk_size_almost_done,
309 s_n_llhttp__internal__n_chunk_parameters,
310 s_n_llhttp__internal__n_chunk_size_otherwise,
311 s_n_llhttp__internal__n_chunk_size,
312 s_n_llhttp__internal__n_chunk_size_digit,
313 s_n_llhttp__internal__n_invoke_update_content_length,
314 s_n_llhttp__internal__n_consume_content_length_1,
315 s_n_llhttp__internal__n_span_start_llhttp__on_body_1,
316 s_n_llhttp__internal__n_eof,
317 s_n_llhttp__internal__n_span_start_llhttp__on_body_2,
318 s_n_llhttp__internal__n_invoke_llhttp__after_headers_complete,
319 s_n_llhttp__internal__n_headers_almost_done,
320 s_n_llhttp__internal__n_span_start_llhttp__on_header_value,
321 s_n_llhttp__internal__n_header_value_discard_lws,
322 s_n_llhttp__internal__n_header_value_discard_ws_almost_done,
323 s_n_llhttp__internal__n_header_value_lws,
324 s_n_llhttp__internal__n_header_value_almost_done,
325 s_n_llhttp__internal__n_header_value_lenient,
326 s_n_llhttp__internal__n_header_value_otherwise,
327 s_n_llhttp__internal__n_header_value_connection_token,
328 s_n_llhttp__internal__n_header_value_connection_ws,
329 s_n_llhttp__internal__n_header_value_connection_1,
330 s_n_llhttp__internal__n_header_value_connection_2,
331 s_n_llhttp__internal__n_header_value_connection_3,
332 s_n_llhttp__internal__n_header_value_connection,
333 s_n_llhttp__internal__n_error_24,
334 s_n_llhttp__internal__n_error_25,
335 s_n_llhttp__internal__n_header_value_content_length_ws,
336 s_n_llhttp__internal__n_header_value_content_length,
337 s_n_llhttp__internal__n_header_value_te_chunked_last,
338 s_n_llhttp__internal__n_header_value_te_token_ows,
339 s_n_llhttp__internal__n_header_value,
340 s_n_llhttp__internal__n_header_value_te_token,
341 s_n_llhttp__internal__n_header_value_te_chunked,
342 s_n_llhttp__internal__n_span_start_llhttp__on_header_value_1,
343 s_n_llhttp__internal__n_header_value_discard_ws,
344 s_n_llhttp__internal__n_header_field_general_otherwise,
345 s_n_llhttp__internal__n_header_field_general,
346 s_n_llhttp__internal__n_header_field_colon,
347 s_n_llhttp__internal__n_header_field_3,
348 s_n_llhttp__internal__n_header_field_4,
349 s_n_llhttp__internal__n_header_field_2,
350 s_n_llhttp__internal__n_header_field_1,
351 s_n_llhttp__internal__n_header_field_5,
352 s_n_llhttp__internal__n_header_field_6,
353 s_n_llhttp__internal__n_header_field_7,
354 s_n_llhttp__internal__n_header_field,
355 s_n_llhttp__internal__n_span_start_llhttp__on_header_field,
356 s_n_llhttp__internal__n_header_field_start,
357 s_n_llhttp__internal__n_url_to_http_09,
358 s_n_llhttp__internal__n_url_skip_to_http09,
359 s_n_llhttp__internal__n_url_skip_lf_to_http09_1,
360 s_n_llhttp__internal__n_url_skip_lf_to_http09,
361 s_n_llhttp__internal__n_req_http_end_1,
362 s_n_llhttp__internal__n_req_http_end,
363 s_n_llhttp__internal__n_req_http_minor,
364 s_n_llhttp__internal__n_req_http_dot,
365 s_n_llhttp__internal__n_req_http_major,
366 s_n_llhttp__internal__n_req_http_start_1,
367 s_n_llhttp__internal__n_req_http_start_2,
368 s_n_llhttp__internal__n_req_http_start,
369 s_n_llhttp__internal__n_url_to_http,
370 s_n_llhttp__internal__n_url_skip_to_http,
371 s_n_llhttp__internal__n_url_fragment,
372 s_n_llhttp__internal__n_span_end_stub_query_3,
373 s_n_llhttp__internal__n_url_query,
374 s_n_llhttp__internal__n_url_query_or_fragment,
375 s_n_llhttp__internal__n_url_path,
376 s_n_llhttp__internal__n_span_start_stub_path_2,
377 s_n_llhttp__internal__n_span_start_stub_path,
378 s_n_llhttp__internal__n_span_start_stub_path_1,
379 s_n_llhttp__internal__n_url_server_with_at,
380 s_n_llhttp__internal__n_url_server,
381 s_n_llhttp__internal__n_url_schema_delim_1,
382 s_n_llhttp__internal__n_url_schema_delim,
383 s_n_llhttp__internal__n_span_end_stub_schema,
384 s_n_llhttp__internal__n_url_schema,
385 s_n_llhttp__internal__n_url_start,
386 s_n_llhttp__internal__n_span_start_llhttp__on_url_1,
387 s_n_llhttp__internal__n_url_entry_normal,
388 s_n_llhttp__internal__n_span_start_llhttp__on_url,
389 s_n_llhttp__internal__n_url_entry_connect,
390 s_n_llhttp__internal__n_req_spaces_before_url,
391 s_n_llhttp__internal__n_req_first_space_before_url,
392 s_n_llhttp__internal__n_start_req_1,
393 s_n_llhttp__internal__n_start_req_2,
394 s_n_llhttp__internal__n_start_req_4,
395 s_n_llhttp__internal__n_start_req_6,
396 s_n_llhttp__internal__n_start_req_7,
397 s_n_llhttp__internal__n_start_req_5,
398 s_n_llhttp__internal__n_start_req_3,
399 s_n_llhttp__internal__n_start_req_8,
400 s_n_llhttp__internal__n_start_req_9,
401 s_n_llhttp__internal__n_start_req_10,
402 s_n_llhttp__internal__n_start_req_12,
403 s_n_llhttp__internal__n_start_req_13,
404 s_n_llhttp__internal__n_start_req_11,
405 s_n_llhttp__internal__n_start_req_15,
406 s_n_llhttp__internal__n_start_req_16,
407 s_n_llhttp__internal__n_start_req_18,
408 s_n_llhttp__internal__n_start_req_20,
409 s_n_llhttp__internal__n_start_req_21,
410 s_n_llhttp__internal__n_start_req_19,
411 s_n_llhttp__internal__n_start_req_17,
412 s_n_llhttp__internal__n_start_req_22,
413 s_n_llhttp__internal__n_start_req_14,
414 s_n_llhttp__internal__n_start_req_23,
415 s_n_llhttp__internal__n_start_req_24,
416 s_n_llhttp__internal__n_start_req_26,
417 s_n_llhttp__internal__n_start_req_27,
418 s_n_llhttp__internal__n_start_req_31,
419 s_n_llhttp__internal__n_start_req_32,
420 s_n_llhttp__internal__n_start_req_30,
421 s_n_llhttp__internal__n_start_req_29,
422 s_n_llhttp__internal__n_start_req_28,
423 s_n_llhttp__internal__n_start_req_34,
424 s_n_llhttp__internal__n_start_req_33,
425 s_n_llhttp__internal__n_start_req_25,
426 s_n_llhttp__internal__n_start_req_37,
427 s_n_llhttp__internal__n_start_req_38,
428 s_n_llhttp__internal__n_start_req_36,
429 s_n_llhttp__internal__n_start_req_35,
430 s_n_llhttp__internal__n_start_req_40,
431 s_n_llhttp__internal__n_start_req_41,
432 s_n_llhttp__internal__n_start_req_42,
433 s_n_llhttp__internal__n_start_req_39,
434 s_n_llhttp__internal__n_start_req_43,
435 s_n_llhttp__internal__n_start_req_46,
436 s_n_llhttp__internal__n_start_req_48,
437 s_n_llhttp__internal__n_start_req_49,
438 s_n_llhttp__internal__n_start_req_47,
439 s_n_llhttp__internal__n_start_req_50,
440 s_n_llhttp__internal__n_start_req_45,
441 s_n_llhttp__internal__n_start_req_44,
442 s_n_llhttp__internal__n_start_req,
443 s_n_llhttp__internal__n_res_line_almost_done,
444 s_n_llhttp__internal__n_res_status,
445 s_n_llhttp__internal__n_span_start_llhttp__on_status,
446 s_n_llhttp__internal__n_res_status_start,
447 s_n_llhttp__internal__n_res_status_code_otherwise,
448 s_n_llhttp__internal__n_res_status_code,
449 s_n_llhttp__internal__n_res_http_end,
450 s_n_llhttp__internal__n_res_http_minor,
451 s_n_llhttp__internal__n_res_http_dot,
452 s_n_llhttp__internal__n_res_http_major,
453 s_n_llhttp__internal__n_start_res,
454 s_n_llhttp__internal__n_req_or_res_method_2,
455 s_n_llhttp__internal__n_req_or_res_method_3,
456 s_n_llhttp__internal__n_req_or_res_method_1,
457 s_n_llhttp__internal__n_req_or_res_method,
458 s_n_llhttp__internal__n_start_req_or_res,
459 s_n_llhttp__internal__n_invoke_load_type,
460 s_n_llhttp__internal__n_start,
461 };
462 typedef enum llparse_state_e llparse_state_t;
463
464 int llhttp__on_url(
465 llhttp__internal_t* s, const unsigned char* p,
466 const unsigned char* endp);
467
468 int llhttp__on_header_field(
469 llhttp__internal_t* s, const unsigned char* p,
470 const unsigned char* endp);
471
472 int llhttp__on_header_value(
473 llhttp__internal_t* s, const unsigned char* p,
474 const unsigned char* endp);
475
476 int llhttp__on_body(
477 llhttp__internal_t* s, const unsigned char* p,
478 const unsigned char* endp);
479
480 int llhttp__on_status(
481 llhttp__internal_t* s, const unsigned char* p,
482 const unsigned char* endp);
483
llhttp__internal__c_update_finish(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)484 int llhttp__internal__c_update_finish(
485 llhttp__internal_t* state,
486 const unsigned char* p,
487 const unsigned char* endp) {
488 state->finish = 2;
489 return 0;
490 }
491
492 int llhttp__on_message_begin(
493 llhttp__internal_t* s, const unsigned char* p,
494 const unsigned char* endp);
495
llhttp__internal__c_load_type(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)496 int llhttp__internal__c_load_type(
497 llhttp__internal_t* state,
498 const unsigned char* p,
499 const unsigned char* endp) {
500 return state->type;
501 }
502
llhttp__internal__c_store_method(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp,int match)503 int llhttp__internal__c_store_method(
504 llhttp__internal_t* state,
505 const unsigned char* p,
506 const unsigned char* endp,
507 int match) {
508 state->method = match;
509 return 0;
510 }
511
llhttp__internal__c_is_equal_method(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)512 int llhttp__internal__c_is_equal_method(
513 llhttp__internal_t* state,
514 const unsigned char* p,
515 const unsigned char* endp) {
516 return state->method == 5;
517 }
518
llhttp__internal__c_update_http_major(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)519 int llhttp__internal__c_update_http_major(
520 llhttp__internal_t* state,
521 const unsigned char* p,
522 const unsigned char* endp) {
523 state->http_major = 0;
524 return 0;
525 }
526
llhttp__internal__c_update_http_minor(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)527 int llhttp__internal__c_update_http_minor(
528 llhttp__internal_t* state,
529 const unsigned char* p,
530 const unsigned char* endp) {
531 state->http_minor = 9;
532 return 0;
533 }
534
llhttp__internal__c_test_flags(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)535 int llhttp__internal__c_test_flags(
536 llhttp__internal_t* state,
537 const unsigned char* p,
538 const unsigned char* endp) {
539 return (state->flags & 128) == 128;
540 }
541
542 int llhttp__on_chunk_complete(
543 llhttp__internal_t* s, const unsigned char* p,
544 const unsigned char* endp);
545
546 int llhttp__on_message_complete(
547 llhttp__internal_t* s, const unsigned char* p,
548 const unsigned char* endp);
549
llhttp__internal__c_is_equal_upgrade(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)550 int llhttp__internal__c_is_equal_upgrade(
551 llhttp__internal_t* state,
552 const unsigned char* p,
553 const unsigned char* endp) {
554 return state->upgrade == 1;
555 }
556
557 int llhttp__after_message_complete(
558 llhttp__internal_t* s, const unsigned char* p,
559 const unsigned char* endp);
560
llhttp__internal__c_update_finish_1(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)561 int llhttp__internal__c_update_finish_1(
562 llhttp__internal_t* state,
563 const unsigned char* p,
564 const unsigned char* endp) {
565 state->finish = 0;
566 return 0;
567 }
568
llhttp__internal__c_test_flags_1(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)569 int llhttp__internal__c_test_flags_1(
570 llhttp__internal_t* state,
571 const unsigned char* p,
572 const unsigned char* endp) {
573 return (state->flags & 544) == 544;
574 }
575
llhttp__internal__c_test_flags_2(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)576 int llhttp__internal__c_test_flags_2(
577 llhttp__internal_t* state,
578 const unsigned char* p,
579 const unsigned char* endp) {
580 return (state->flags & 256) == 256;
581 }
582
llhttp__internal__c_test_flags_3(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)583 int llhttp__internal__c_test_flags_3(
584 llhttp__internal_t* state,
585 const unsigned char* p,
586 const unsigned char* endp) {
587 return (state->flags & 40) == 40;
588 }
589
590 int llhttp__before_headers_complete(
591 llhttp__internal_t* s, const unsigned char* p,
592 const unsigned char* endp);
593
594 int llhttp__on_headers_complete(
595 llhttp__internal_t* s, const unsigned char* p,
596 const unsigned char* endp);
597
598 int llhttp__after_headers_complete(
599 llhttp__internal_t* s, const unsigned char* p,
600 const unsigned char* endp);
601
llhttp__internal__c_update_content_length(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)602 int llhttp__internal__c_update_content_length(
603 llhttp__internal_t* state,
604 const unsigned char* p,
605 const unsigned char* endp) {
606 state->content_length = 0;
607 return 0;
608 }
609
llhttp__internal__c_mul_add_content_length(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp,int match)610 int llhttp__internal__c_mul_add_content_length(
611 llhttp__internal_t* state,
612 const unsigned char* p,
613 const unsigned char* endp,
614 int match) {
615 /* Multiplication overflow */
616 if (state->content_length > 0xffffffffffffffffULL / 16) {
617 return 1;
618 }
619
620 state->content_length *= 16;
621
622 /* Addition overflow */
623 if (match >= 0) {
624 if (state->content_length > 0xffffffffffffffffULL - match) {
625 return 1;
626 }
627 } else {
628 if (state->content_length < 0ULL - match) {
629 return 1;
630 }
631 }
632 state->content_length += match;
633 return 0;
634 }
635
636 int llhttp__on_chunk_header(
637 llhttp__internal_t* s, const unsigned char* p,
638 const unsigned char* endp);
639
llhttp__internal__c_is_equal_content_length(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)640 int llhttp__internal__c_is_equal_content_length(
641 llhttp__internal_t* state,
642 const unsigned char* p,
643 const unsigned char* endp) {
644 return state->content_length == 0;
645 }
646
llhttp__internal__c_or_flags(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)647 int llhttp__internal__c_or_flags(
648 llhttp__internal_t* state,
649 const unsigned char* p,
650 const unsigned char* endp) {
651 state->flags |= 128;
652 return 0;
653 }
654
llhttp__internal__c_update_finish_3(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)655 int llhttp__internal__c_update_finish_3(
656 llhttp__internal_t* state,
657 const unsigned char* p,
658 const unsigned char* endp) {
659 state->finish = 1;
660 return 0;
661 }
662
llhttp__internal__c_or_flags_1(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)663 int llhttp__internal__c_or_flags_1(
664 llhttp__internal_t* state,
665 const unsigned char* p,
666 const unsigned char* endp) {
667 state->flags |= 64;
668 return 0;
669 }
670
llhttp__internal__c_update_upgrade(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)671 int llhttp__internal__c_update_upgrade(
672 llhttp__internal_t* state,
673 const unsigned char* p,
674 const unsigned char* endp) {
675 state->upgrade = 1;
676 return 0;
677 }
678
llhttp__internal__c_store_header_state(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp,int match)679 int llhttp__internal__c_store_header_state(
680 llhttp__internal_t* state,
681 const unsigned char* p,
682 const unsigned char* endp,
683 int match) {
684 state->header_state = match;
685 return 0;
686 }
687
llhttp__internal__c_load_header_state(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)688 int llhttp__internal__c_load_header_state(
689 llhttp__internal_t* state,
690 const unsigned char* p,
691 const unsigned char* endp) {
692 return state->header_state;
693 }
694
llhttp__internal__c_or_flags_3(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)695 int llhttp__internal__c_or_flags_3(
696 llhttp__internal_t* state,
697 const unsigned char* p,
698 const unsigned char* endp) {
699 state->flags |= 1;
700 return 0;
701 }
702
llhttp__internal__c_update_header_state(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)703 int llhttp__internal__c_update_header_state(
704 llhttp__internal_t* state,
705 const unsigned char* p,
706 const unsigned char* endp) {
707 state->header_state = 1;
708 return 0;
709 }
710
llhttp__internal__c_or_flags_4(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)711 int llhttp__internal__c_or_flags_4(
712 llhttp__internal_t* state,
713 const unsigned char* p,
714 const unsigned char* endp) {
715 state->flags |= 2;
716 return 0;
717 }
718
llhttp__internal__c_or_flags_5(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)719 int llhttp__internal__c_or_flags_5(
720 llhttp__internal_t* state,
721 const unsigned char* p,
722 const unsigned char* endp) {
723 state->flags |= 4;
724 return 0;
725 }
726
llhttp__internal__c_or_flags_6(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)727 int llhttp__internal__c_or_flags_6(
728 llhttp__internal_t* state,
729 const unsigned char* p,
730 const unsigned char* endp) {
731 state->flags |= 8;
732 return 0;
733 }
734
llhttp__internal__c_update_header_state_2(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)735 int llhttp__internal__c_update_header_state_2(
736 llhttp__internal_t* state,
737 const unsigned char* p,
738 const unsigned char* endp) {
739 state->header_state = 6;
740 return 0;
741 }
742
llhttp__internal__c_update_header_state_4(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)743 int llhttp__internal__c_update_header_state_4(
744 llhttp__internal_t* state,
745 const unsigned char* p,
746 const unsigned char* endp) {
747 state->header_state = 0;
748 return 0;
749 }
750
llhttp__internal__c_update_header_state_5(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)751 int llhttp__internal__c_update_header_state_5(
752 llhttp__internal_t* state,
753 const unsigned char* p,
754 const unsigned char* endp) {
755 state->header_state = 5;
756 return 0;
757 }
758
llhttp__internal__c_update_header_state_6(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)759 int llhttp__internal__c_update_header_state_6(
760 llhttp__internal_t* state,
761 const unsigned char* p,
762 const unsigned char* endp) {
763 state->header_state = 7;
764 return 0;
765 }
766
llhttp__internal__c_test_flags_5(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)767 int llhttp__internal__c_test_flags_5(
768 llhttp__internal_t* state,
769 const unsigned char* p,
770 const unsigned char* endp) {
771 return (state->flags & 32) == 32;
772 }
773
llhttp__internal__c_mul_add_content_length_1(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp,int match)774 int llhttp__internal__c_mul_add_content_length_1(
775 llhttp__internal_t* state,
776 const unsigned char* p,
777 const unsigned char* endp,
778 int match) {
779 /* Multiplication overflow */
780 if (state->content_length > 0xffffffffffffffffULL / 10) {
781 return 1;
782 }
783
784 state->content_length *= 10;
785
786 /* Addition overflow */
787 if (match >= 0) {
788 if (state->content_length > 0xffffffffffffffffULL - match) {
789 return 1;
790 }
791 } else {
792 if (state->content_length < 0ULL - match) {
793 return 1;
794 }
795 }
796 state->content_length += match;
797 return 0;
798 }
799
llhttp__internal__c_or_flags_15(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)800 int llhttp__internal__c_or_flags_15(
801 llhttp__internal_t* state,
802 const unsigned char* p,
803 const unsigned char* endp) {
804 state->flags |= 32;
805 return 0;
806 }
807
llhttp__internal__c_or_flags_16(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)808 int llhttp__internal__c_or_flags_16(
809 llhttp__internal_t* state,
810 const unsigned char* p,
811 const unsigned char* endp) {
812 state->flags |= 512;
813 return 0;
814 }
815
llhttp__internal__c_and_flags(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)816 int llhttp__internal__c_and_flags(
817 llhttp__internal_t* state,
818 const unsigned char* p,
819 const unsigned char* endp) {
820 state->flags &= -9;
821 return 0;
822 }
823
llhttp__internal__c_update_header_state_7(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)824 int llhttp__internal__c_update_header_state_7(
825 llhttp__internal_t* state,
826 const unsigned char* p,
827 const unsigned char* endp) {
828 state->header_state = 8;
829 return 0;
830 }
831
llhttp__internal__c_or_flags_17(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)832 int llhttp__internal__c_or_flags_17(
833 llhttp__internal_t* state,
834 const unsigned char* p,
835 const unsigned char* endp) {
836 state->flags |= 16;
837 return 0;
838 }
839
llhttp__internal__c_store_http_major(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp,int match)840 int llhttp__internal__c_store_http_major(
841 llhttp__internal_t* state,
842 const unsigned char* p,
843 const unsigned char* endp,
844 int match) {
845 state->http_major = match;
846 return 0;
847 }
848
llhttp__internal__c_store_http_minor(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp,int match)849 int llhttp__internal__c_store_http_minor(
850 llhttp__internal_t* state,
851 const unsigned char* p,
852 const unsigned char* endp,
853 int match) {
854 state->http_minor = match;
855 return 0;
856 }
857
llhttp__internal__c_is_equal_method_1(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)858 int llhttp__internal__c_is_equal_method_1(
859 llhttp__internal_t* state,
860 const unsigned char* p,
861 const unsigned char* endp) {
862 return state->method == 33;
863 }
864
llhttp__internal__c_update_status_code(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)865 int llhttp__internal__c_update_status_code(
866 llhttp__internal_t* state,
867 const unsigned char* p,
868 const unsigned char* endp) {
869 state->status_code = 0;
870 return 0;
871 }
872
llhttp__internal__c_mul_add_status_code(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp,int match)873 int llhttp__internal__c_mul_add_status_code(
874 llhttp__internal_t* state,
875 const unsigned char* p,
876 const unsigned char* endp,
877 int match) {
878 /* Multiplication overflow */
879 if (state->status_code > 0xffff / 10) {
880 return 1;
881 }
882
883 state->status_code *= 10;
884
885 /* Addition overflow */
886 if (match >= 0) {
887 if (state->status_code > 0xffff - match) {
888 return 1;
889 }
890 } else {
891 if (state->status_code < 0 - match) {
892 return 1;
893 }
894 }
895 state->status_code += match;
896
897 /* Enforce maximum */
898 if (state->status_code > 999) {
899 return 1;
900 }
901 return 0;
902 }
903
llhttp__internal__c_update_type(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)904 int llhttp__internal__c_update_type(
905 llhttp__internal_t* state,
906 const unsigned char* p,
907 const unsigned char* endp) {
908 state->type = 1;
909 return 0;
910 }
911
llhttp__internal__c_update_type_1(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)912 int llhttp__internal__c_update_type_1(
913 llhttp__internal_t* state,
914 const unsigned char* p,
915 const unsigned char* endp) {
916 state->type = 2;
917 return 0;
918 }
919
llhttp__internal_init(llhttp__internal_t * state)920 int llhttp__internal_init(llhttp__internal_t* state) {
921 memset(state, 0, sizeof(*state));
922 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_start;
923 return 0;
924 }
925
llhttp__internal__run(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)926 static llparse_state_t llhttp__internal__run(
927 llhttp__internal_t* state,
928 const unsigned char* p,
929 const unsigned char* endp) {
930 int match;
931 switch ((llparse_state_t) (intptr_t) state->_current) {
932 case s_n_llhttp__internal__n_closed:
933 s_n_llhttp__internal__n_closed: {
934 if (p == endp) {
935 return s_n_llhttp__internal__n_closed;
936 }
937 switch (*p) {
938 case 10: {
939 p++;
940 goto s_n_llhttp__internal__n_closed;
941 }
942 case 13: {
943 p++;
944 goto s_n_llhttp__internal__n_closed;
945 }
946 default: {
947 p++;
948 goto s_n_llhttp__internal__n_error_4;
949 }
950 }
951 /* UNREACHABLE */;
952 abort();
953 }
954 case s_n_llhttp__internal__n_invoke_llhttp__after_message_complete:
955 s_n_llhttp__internal__n_invoke_llhttp__after_message_complete: {
956 switch (llhttp__after_message_complete(state, p, endp)) {
957 case 1:
958 goto s_n_llhttp__internal__n_invoke_update_finish_2;
959 default:
960 goto s_n_llhttp__internal__n_invoke_update_finish_1;
961 }
962 /* UNREACHABLE */;
963 abort();
964 }
965 case s_n_llhttp__internal__n_pause_1:
966 s_n_llhttp__internal__n_pause_1: {
967 state->error = 0x16;
968 state->reason = "Pause on CONNECT/Upgrade";
969 state->error_pos = (const char*) p;
970 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_invoke_llhttp__after_message_complete;
971 return s_error;
972 /* UNREACHABLE */;
973 abort();
974 }
975 case s_n_llhttp__internal__n_invoke_is_equal_upgrade:
976 s_n_llhttp__internal__n_invoke_is_equal_upgrade: {
977 switch (llhttp__internal__c_is_equal_upgrade(state, p, endp)) {
978 case 0:
979 goto s_n_llhttp__internal__n_invoke_llhttp__after_message_complete;
980 default:
981 goto s_n_llhttp__internal__n_pause_1;
982 }
983 /* UNREACHABLE */;
984 abort();
985 }
986 case s_n_llhttp__internal__n_invoke_llhttp__on_message_complete_2:
987 s_n_llhttp__internal__n_invoke_llhttp__on_message_complete_2: {
988 switch (llhttp__on_message_complete(state, p, endp)) {
989 case 0:
990 goto s_n_llhttp__internal__n_invoke_is_equal_upgrade;
991 case 21:
992 goto s_n_llhttp__internal__n_pause_5;
993 default:
994 goto s_n_llhttp__internal__n_error_13;
995 }
996 /* UNREACHABLE */;
997 abort();
998 }
999 case s_n_llhttp__internal__n_chunk_data_almost_done:
1000 s_n_llhttp__internal__n_chunk_data_almost_done: {
1001 llparse_match_t match_seq;
1002
1003 if (p == endp) {
1004 return s_n_llhttp__internal__n_chunk_data_almost_done;
1005 }
1006 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob1, 2);
1007 p = match_seq.current;
1008 switch (match_seq.status) {
1009 case kMatchComplete: {
1010 p++;
1011 goto s_n_llhttp__internal__n_invoke_llhttp__on_chunk_complete;
1012 }
1013 case kMatchPause: {
1014 return s_n_llhttp__internal__n_chunk_data_almost_done;
1015 }
1016 case kMatchMismatch: {
1017 goto s_n_llhttp__internal__n_error_8;
1018 }
1019 }
1020 /* UNREACHABLE */;
1021 abort();
1022 }
1023 case s_n_llhttp__internal__n_consume_content_length:
1024 s_n_llhttp__internal__n_consume_content_length: {
1025 size_t avail;
1026 size_t need;
1027
1028 avail = endp - p;
1029 need = state->content_length;
1030 if (avail >= need) {
1031 p += need;
1032 state->content_length = 0;
1033 goto s_n_llhttp__internal__n_span_end_llhttp__on_body;
1034 }
1035
1036 state->content_length -= avail;
1037 return s_n_llhttp__internal__n_consume_content_length;
1038 /* UNREACHABLE */;
1039 abort();
1040 }
1041 case s_n_llhttp__internal__n_span_start_llhttp__on_body:
1042 s_n_llhttp__internal__n_span_start_llhttp__on_body: {
1043 if (p == endp) {
1044 return s_n_llhttp__internal__n_span_start_llhttp__on_body;
1045 }
1046 state->_span_pos0 = (void*) p;
1047 state->_span_cb0 = llhttp__on_body;
1048 goto s_n_llhttp__internal__n_consume_content_length;
1049 /* UNREACHABLE */;
1050 abort();
1051 }
1052 case s_n_llhttp__internal__n_invoke_is_equal_content_length:
1053 s_n_llhttp__internal__n_invoke_is_equal_content_length: {
1054 switch (llhttp__internal__c_is_equal_content_length(state, p, endp)) {
1055 case 0:
1056 goto s_n_llhttp__internal__n_span_start_llhttp__on_body;
1057 default:
1058 goto s_n_llhttp__internal__n_invoke_or_flags;
1059 }
1060 /* UNREACHABLE */;
1061 abort();
1062 }
1063 case s_n_llhttp__internal__n_chunk_size_almost_done:
1064 s_n_llhttp__internal__n_chunk_size_almost_done: {
1065 if (p == endp) {
1066 return s_n_llhttp__internal__n_chunk_size_almost_done;
1067 }
1068 switch (*p) {
1069 case 10: {
1070 p++;
1071 goto s_n_llhttp__internal__n_invoke_llhttp__on_chunk_header;
1072 }
1073 default: {
1074 goto s_n_llhttp__internal__n_error_9;
1075 }
1076 }
1077 /* UNREACHABLE */;
1078 abort();
1079 }
1080 case s_n_llhttp__internal__n_chunk_parameters:
1081 s_n_llhttp__internal__n_chunk_parameters: {
1082 if (p == endp) {
1083 return s_n_llhttp__internal__n_chunk_parameters;
1084 }
1085 switch (*p) {
1086 case 13: {
1087 p++;
1088 goto s_n_llhttp__internal__n_chunk_size_almost_done;
1089 }
1090 default: {
1091 p++;
1092 goto s_n_llhttp__internal__n_chunk_parameters;
1093 }
1094 }
1095 /* UNREACHABLE */;
1096 abort();
1097 }
1098 case s_n_llhttp__internal__n_chunk_size_otherwise:
1099 s_n_llhttp__internal__n_chunk_size_otherwise: {
1100 if (p == endp) {
1101 return s_n_llhttp__internal__n_chunk_size_otherwise;
1102 }
1103 switch (*p) {
1104 case 13: {
1105 p++;
1106 goto s_n_llhttp__internal__n_chunk_size_almost_done;
1107 }
1108 case ' ': {
1109 p++;
1110 goto s_n_llhttp__internal__n_chunk_parameters;
1111 }
1112 case ';': {
1113 p++;
1114 goto s_n_llhttp__internal__n_chunk_parameters;
1115 }
1116 default: {
1117 goto s_n_llhttp__internal__n_error_10;
1118 }
1119 }
1120 /* UNREACHABLE */;
1121 abort();
1122 }
1123 case s_n_llhttp__internal__n_chunk_size:
1124 s_n_llhttp__internal__n_chunk_size: {
1125 if (p == endp) {
1126 return s_n_llhttp__internal__n_chunk_size;
1127 }
1128 switch (*p) {
1129 case '0': {
1130 p++;
1131 match = 0;
1132 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1133 }
1134 case '1': {
1135 p++;
1136 match = 1;
1137 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1138 }
1139 case '2': {
1140 p++;
1141 match = 2;
1142 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1143 }
1144 case '3': {
1145 p++;
1146 match = 3;
1147 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1148 }
1149 case '4': {
1150 p++;
1151 match = 4;
1152 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1153 }
1154 case '5': {
1155 p++;
1156 match = 5;
1157 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1158 }
1159 case '6': {
1160 p++;
1161 match = 6;
1162 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1163 }
1164 case '7': {
1165 p++;
1166 match = 7;
1167 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1168 }
1169 case '8': {
1170 p++;
1171 match = 8;
1172 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1173 }
1174 case '9': {
1175 p++;
1176 match = 9;
1177 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1178 }
1179 case 'A': {
1180 p++;
1181 match = 10;
1182 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1183 }
1184 case 'B': {
1185 p++;
1186 match = 11;
1187 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1188 }
1189 case 'C': {
1190 p++;
1191 match = 12;
1192 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1193 }
1194 case 'D': {
1195 p++;
1196 match = 13;
1197 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1198 }
1199 case 'E': {
1200 p++;
1201 match = 14;
1202 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1203 }
1204 case 'F': {
1205 p++;
1206 match = 15;
1207 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1208 }
1209 case 'a': {
1210 p++;
1211 match = 10;
1212 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1213 }
1214 case 'b': {
1215 p++;
1216 match = 11;
1217 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1218 }
1219 case 'c': {
1220 p++;
1221 match = 12;
1222 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1223 }
1224 case 'd': {
1225 p++;
1226 match = 13;
1227 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1228 }
1229 case 'e': {
1230 p++;
1231 match = 14;
1232 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1233 }
1234 case 'f': {
1235 p++;
1236 match = 15;
1237 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1238 }
1239 default: {
1240 goto s_n_llhttp__internal__n_chunk_size_otherwise;
1241 }
1242 }
1243 /* UNREACHABLE */;
1244 abort();
1245 }
1246 case s_n_llhttp__internal__n_chunk_size_digit:
1247 s_n_llhttp__internal__n_chunk_size_digit: {
1248 if (p == endp) {
1249 return s_n_llhttp__internal__n_chunk_size_digit;
1250 }
1251 switch (*p) {
1252 case '0': {
1253 p++;
1254 match = 0;
1255 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1256 }
1257 case '1': {
1258 p++;
1259 match = 1;
1260 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1261 }
1262 case '2': {
1263 p++;
1264 match = 2;
1265 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1266 }
1267 case '3': {
1268 p++;
1269 match = 3;
1270 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1271 }
1272 case '4': {
1273 p++;
1274 match = 4;
1275 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1276 }
1277 case '5': {
1278 p++;
1279 match = 5;
1280 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1281 }
1282 case '6': {
1283 p++;
1284 match = 6;
1285 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1286 }
1287 case '7': {
1288 p++;
1289 match = 7;
1290 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1291 }
1292 case '8': {
1293 p++;
1294 match = 8;
1295 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1296 }
1297 case '9': {
1298 p++;
1299 match = 9;
1300 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1301 }
1302 case 'A': {
1303 p++;
1304 match = 10;
1305 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1306 }
1307 case 'B': {
1308 p++;
1309 match = 11;
1310 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1311 }
1312 case 'C': {
1313 p++;
1314 match = 12;
1315 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1316 }
1317 case 'D': {
1318 p++;
1319 match = 13;
1320 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1321 }
1322 case 'E': {
1323 p++;
1324 match = 14;
1325 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1326 }
1327 case 'F': {
1328 p++;
1329 match = 15;
1330 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1331 }
1332 case 'a': {
1333 p++;
1334 match = 10;
1335 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1336 }
1337 case 'b': {
1338 p++;
1339 match = 11;
1340 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1341 }
1342 case 'c': {
1343 p++;
1344 match = 12;
1345 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1346 }
1347 case 'd': {
1348 p++;
1349 match = 13;
1350 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1351 }
1352 case 'e': {
1353 p++;
1354 match = 14;
1355 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1356 }
1357 case 'f': {
1358 p++;
1359 match = 15;
1360 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
1361 }
1362 default: {
1363 goto s_n_llhttp__internal__n_error_12;
1364 }
1365 }
1366 /* UNREACHABLE */;
1367 abort();
1368 }
1369 case s_n_llhttp__internal__n_invoke_update_content_length:
1370 s_n_llhttp__internal__n_invoke_update_content_length: {
1371 switch (llhttp__internal__c_update_content_length(state, p, endp)) {
1372 default:
1373 goto s_n_llhttp__internal__n_chunk_size_digit;
1374 }
1375 /* UNREACHABLE */;
1376 abort();
1377 }
1378 case s_n_llhttp__internal__n_consume_content_length_1:
1379 s_n_llhttp__internal__n_consume_content_length_1: {
1380 size_t avail;
1381 size_t need;
1382
1383 avail = endp - p;
1384 need = state->content_length;
1385 if (avail >= need) {
1386 p += need;
1387 state->content_length = 0;
1388 goto s_n_llhttp__internal__n_span_end_llhttp__on_body_1;
1389 }
1390
1391 state->content_length -= avail;
1392 return s_n_llhttp__internal__n_consume_content_length_1;
1393 /* UNREACHABLE */;
1394 abort();
1395 }
1396 case s_n_llhttp__internal__n_span_start_llhttp__on_body_1:
1397 s_n_llhttp__internal__n_span_start_llhttp__on_body_1: {
1398 if (p == endp) {
1399 return s_n_llhttp__internal__n_span_start_llhttp__on_body_1;
1400 }
1401 state->_span_pos0 = (void*) p;
1402 state->_span_cb0 = llhttp__on_body;
1403 goto s_n_llhttp__internal__n_consume_content_length_1;
1404 /* UNREACHABLE */;
1405 abort();
1406 }
1407 case s_n_llhttp__internal__n_eof:
1408 s_n_llhttp__internal__n_eof: {
1409 if (p == endp) {
1410 return s_n_llhttp__internal__n_eof;
1411 }
1412 p++;
1413 goto s_n_llhttp__internal__n_eof;
1414 /* UNREACHABLE */;
1415 abort();
1416 }
1417 case s_n_llhttp__internal__n_span_start_llhttp__on_body_2:
1418 s_n_llhttp__internal__n_span_start_llhttp__on_body_2: {
1419 if (p == endp) {
1420 return s_n_llhttp__internal__n_span_start_llhttp__on_body_2;
1421 }
1422 state->_span_pos0 = (void*) p;
1423 state->_span_cb0 = llhttp__on_body;
1424 goto s_n_llhttp__internal__n_eof;
1425 /* UNREACHABLE */;
1426 abort();
1427 }
1428 case s_n_llhttp__internal__n_invoke_llhttp__after_headers_complete:
1429 s_n_llhttp__internal__n_invoke_llhttp__after_headers_complete: {
1430 switch (llhttp__after_headers_complete(state, p, endp)) {
1431 case 1:
1432 goto s_n_llhttp__internal__n_invoke_llhttp__on_message_complete_1;
1433 case 2:
1434 goto s_n_llhttp__internal__n_invoke_update_content_length;
1435 case 3:
1436 goto s_n_llhttp__internal__n_span_start_llhttp__on_body_1;
1437 case 4:
1438 goto s_n_llhttp__internal__n_invoke_update_finish_3;
1439 case 5:
1440 goto s_n_llhttp__internal__n_error_14;
1441 default:
1442 goto s_n_llhttp__internal__n_invoke_llhttp__on_message_complete;
1443 }
1444 /* UNREACHABLE */;
1445 abort();
1446 }
1447 case s_n_llhttp__internal__n_headers_almost_done:
1448 s_n_llhttp__internal__n_headers_almost_done: {
1449 if (p == endp) {
1450 return s_n_llhttp__internal__n_headers_almost_done;
1451 }
1452 switch (*p) {
1453 case 10: {
1454 p++;
1455 goto s_n_llhttp__internal__n_invoke_test_flags;
1456 }
1457 default: {
1458 goto s_n_llhttp__internal__n_error_18;
1459 }
1460 }
1461 /* UNREACHABLE */;
1462 abort();
1463 }
1464 case s_n_llhttp__internal__n_span_start_llhttp__on_header_value:
1465 s_n_llhttp__internal__n_span_start_llhttp__on_header_value: {
1466 if (p == endp) {
1467 return s_n_llhttp__internal__n_span_start_llhttp__on_header_value;
1468 }
1469 state->_span_pos0 = (void*) p;
1470 state->_span_cb0 = llhttp__on_header_value;
1471 goto s_n_llhttp__internal__n_span_end_llhttp__on_header_value;
1472 /* UNREACHABLE */;
1473 abort();
1474 }
1475 case s_n_llhttp__internal__n_header_value_discard_lws:
1476 s_n_llhttp__internal__n_header_value_discard_lws: {
1477 if (p == endp) {
1478 return s_n_llhttp__internal__n_header_value_discard_lws;
1479 }
1480 switch (*p) {
1481 case 9: {
1482 p++;
1483 goto s_n_llhttp__internal__n_header_value_discard_ws;
1484 }
1485 case ' ': {
1486 p++;
1487 goto s_n_llhttp__internal__n_header_value_discard_ws;
1488 }
1489 default: {
1490 goto s_n_llhttp__internal__n_invoke_load_header_state;
1491 }
1492 }
1493 /* UNREACHABLE */;
1494 abort();
1495 }
1496 case s_n_llhttp__internal__n_header_value_discard_ws_almost_done:
1497 s_n_llhttp__internal__n_header_value_discard_ws_almost_done: {
1498 if (p == endp) {
1499 return s_n_llhttp__internal__n_header_value_discard_ws_almost_done;
1500 }
1501 switch (*p) {
1502 case 10: {
1503 p++;
1504 goto s_n_llhttp__internal__n_header_value_discard_lws;
1505 }
1506 default: {
1507 goto s_n_llhttp__internal__n_error_20;
1508 }
1509 }
1510 /* UNREACHABLE */;
1511 abort();
1512 }
1513 case s_n_llhttp__internal__n_header_value_lws:
1514 s_n_llhttp__internal__n_header_value_lws: {
1515 if (p == endp) {
1516 return s_n_llhttp__internal__n_header_value_lws;
1517 }
1518 switch (*p) {
1519 case 9: {
1520 goto s_n_llhttp__internal__n_span_start_llhttp__on_header_value_1;
1521 }
1522 case ' ': {
1523 goto s_n_llhttp__internal__n_span_start_llhttp__on_header_value_1;
1524 }
1525 default: {
1526 goto s_n_llhttp__internal__n_invoke_load_header_state_3;
1527 }
1528 }
1529 /* UNREACHABLE */;
1530 abort();
1531 }
1532 case s_n_llhttp__internal__n_header_value_almost_done:
1533 s_n_llhttp__internal__n_header_value_almost_done: {
1534 if (p == endp) {
1535 return s_n_llhttp__internal__n_header_value_almost_done;
1536 }
1537 switch (*p) {
1538 case 10: {
1539 p++;
1540 goto s_n_llhttp__internal__n_header_value_lws;
1541 }
1542 default: {
1543 goto s_n_llhttp__internal__n_error_21;
1544 }
1545 }
1546 /* UNREACHABLE */;
1547 abort();
1548 }
1549 case s_n_llhttp__internal__n_header_value_lenient:
1550 s_n_llhttp__internal__n_header_value_lenient: {
1551 if (p == endp) {
1552 return s_n_llhttp__internal__n_header_value_lenient;
1553 }
1554 switch (*p) {
1555 case 10: {
1556 goto s_n_llhttp__internal__n_span_end_llhttp__on_header_value_1;
1557 }
1558 case 13: {
1559 goto s_n_llhttp__internal__n_span_end_llhttp__on_header_value_3;
1560 }
1561 default: {
1562 p++;
1563 goto s_n_llhttp__internal__n_header_value_lenient;
1564 }
1565 }
1566 /* UNREACHABLE */;
1567 abort();
1568 }
1569 case s_n_llhttp__internal__n_header_value_otherwise:
1570 s_n_llhttp__internal__n_header_value_otherwise: {
1571 if (p == endp) {
1572 return s_n_llhttp__internal__n_header_value_otherwise;
1573 }
1574 switch (*p) {
1575 case 10: {
1576 goto s_n_llhttp__internal__n_span_end_llhttp__on_header_value_1;
1577 }
1578 case 13: {
1579 goto s_n_llhttp__internal__n_span_end_llhttp__on_header_value_2;
1580 }
1581 default: {
1582 goto s_n_llhttp__internal__n_invoke_test_flags_4;
1583 }
1584 }
1585 /* UNREACHABLE */;
1586 abort();
1587 }
1588 case s_n_llhttp__internal__n_header_value_connection_token:
1589 s_n_llhttp__internal__n_header_value_connection_token: {
1590 static uint8_t lookup_table[] = {
1591 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
1592 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1593 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1,
1594 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1595 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1596 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1597 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1598 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
1599 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1600 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1601 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1602 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1603 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1604 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1605 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1606 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
1607 };
1608 if (p == endp) {
1609 return s_n_llhttp__internal__n_header_value_connection_token;
1610 }
1611 switch (lookup_table[(uint8_t) *p]) {
1612 case 1: {
1613 p++;
1614 goto s_n_llhttp__internal__n_header_value_connection_token;
1615 }
1616 case 2: {
1617 p++;
1618 goto s_n_llhttp__internal__n_header_value_connection;
1619 }
1620 default: {
1621 goto s_n_llhttp__internal__n_header_value_otherwise;
1622 }
1623 }
1624 /* UNREACHABLE */;
1625 abort();
1626 }
1627 case s_n_llhttp__internal__n_header_value_connection_ws:
1628 s_n_llhttp__internal__n_header_value_connection_ws: {
1629 if (p == endp) {
1630 return s_n_llhttp__internal__n_header_value_connection_ws;
1631 }
1632 switch (*p) {
1633 case 10: {
1634 goto s_n_llhttp__internal__n_header_value_otherwise;
1635 }
1636 case 13: {
1637 goto s_n_llhttp__internal__n_header_value_otherwise;
1638 }
1639 case ' ': {
1640 p++;
1641 goto s_n_llhttp__internal__n_header_value_connection_ws;
1642 }
1643 case ',': {
1644 p++;
1645 goto s_n_llhttp__internal__n_invoke_load_header_state_4;
1646 }
1647 default: {
1648 goto s_n_llhttp__internal__n_invoke_update_header_state_4;
1649 }
1650 }
1651 /* UNREACHABLE */;
1652 abort();
1653 }
1654 case s_n_llhttp__internal__n_header_value_connection_1:
1655 s_n_llhttp__internal__n_header_value_connection_1: {
1656 llparse_match_t match_seq;
1657
1658 if (p == endp) {
1659 return s_n_llhttp__internal__n_header_value_connection_1;
1660 }
1661 match_seq = llparse__match_sequence_to_lower(state, p, endp, llparse_blob4, 4);
1662 p = match_seq.current;
1663 switch (match_seq.status) {
1664 case kMatchComplete: {
1665 p++;
1666 goto s_n_llhttp__internal__n_invoke_update_header_state_2;
1667 }
1668 case kMatchPause: {
1669 return s_n_llhttp__internal__n_header_value_connection_1;
1670 }
1671 case kMatchMismatch: {
1672 goto s_n_llhttp__internal__n_header_value_connection_token;
1673 }
1674 }
1675 /* UNREACHABLE */;
1676 abort();
1677 }
1678 case s_n_llhttp__internal__n_header_value_connection_2:
1679 s_n_llhttp__internal__n_header_value_connection_2: {
1680 llparse_match_t match_seq;
1681
1682 if (p == endp) {
1683 return s_n_llhttp__internal__n_header_value_connection_2;
1684 }
1685 match_seq = llparse__match_sequence_to_lower(state, p, endp, llparse_blob5, 9);
1686 p = match_seq.current;
1687 switch (match_seq.status) {
1688 case kMatchComplete: {
1689 p++;
1690 goto s_n_llhttp__internal__n_invoke_update_header_state_5;
1691 }
1692 case kMatchPause: {
1693 return s_n_llhttp__internal__n_header_value_connection_2;
1694 }
1695 case kMatchMismatch: {
1696 goto s_n_llhttp__internal__n_header_value_connection_token;
1697 }
1698 }
1699 /* UNREACHABLE */;
1700 abort();
1701 }
1702 case s_n_llhttp__internal__n_header_value_connection_3:
1703 s_n_llhttp__internal__n_header_value_connection_3: {
1704 llparse_match_t match_seq;
1705
1706 if (p == endp) {
1707 return s_n_llhttp__internal__n_header_value_connection_3;
1708 }
1709 match_seq = llparse__match_sequence_to_lower(state, p, endp, llparse_blob6, 6);
1710 p = match_seq.current;
1711 switch (match_seq.status) {
1712 case kMatchComplete: {
1713 p++;
1714 goto s_n_llhttp__internal__n_invoke_update_header_state_6;
1715 }
1716 case kMatchPause: {
1717 return s_n_llhttp__internal__n_header_value_connection_3;
1718 }
1719 case kMatchMismatch: {
1720 goto s_n_llhttp__internal__n_header_value_connection_token;
1721 }
1722 }
1723 /* UNREACHABLE */;
1724 abort();
1725 }
1726 case s_n_llhttp__internal__n_header_value_connection:
1727 s_n_llhttp__internal__n_header_value_connection: {
1728 if (p == endp) {
1729 return s_n_llhttp__internal__n_header_value_connection;
1730 }
1731 switch (((*p) >= 'A' && (*p) <= 'Z' ? (*p | 0x20) : (*p))) {
1732 case 9: {
1733 p++;
1734 goto s_n_llhttp__internal__n_header_value_connection;
1735 }
1736 case ' ': {
1737 p++;
1738 goto s_n_llhttp__internal__n_header_value_connection;
1739 }
1740 case 'c': {
1741 p++;
1742 goto s_n_llhttp__internal__n_header_value_connection_1;
1743 }
1744 case 'k': {
1745 p++;
1746 goto s_n_llhttp__internal__n_header_value_connection_2;
1747 }
1748 case 'u': {
1749 p++;
1750 goto s_n_llhttp__internal__n_header_value_connection_3;
1751 }
1752 default: {
1753 goto s_n_llhttp__internal__n_header_value_connection_token;
1754 }
1755 }
1756 /* UNREACHABLE */;
1757 abort();
1758 }
1759 case s_n_llhttp__internal__n_error_24:
1760 s_n_llhttp__internal__n_error_24: {
1761 state->error = 0xb;
1762 state->reason = "Content-Length overflow";
1763 state->error_pos = (const char*) p;
1764 state->_current = (void*) (intptr_t) s_error;
1765 return s_error;
1766 /* UNREACHABLE */;
1767 abort();
1768 }
1769 case s_n_llhttp__internal__n_error_25:
1770 s_n_llhttp__internal__n_error_25: {
1771 state->error = 0xb;
1772 state->reason = "Invalid character in Content-Length";
1773 state->error_pos = (const char*) p;
1774 state->_current = (void*) (intptr_t) s_error;
1775 return s_error;
1776 /* UNREACHABLE */;
1777 abort();
1778 }
1779 case s_n_llhttp__internal__n_header_value_content_length_ws:
1780 s_n_llhttp__internal__n_header_value_content_length_ws: {
1781 if (p == endp) {
1782 return s_n_llhttp__internal__n_header_value_content_length_ws;
1783 }
1784 switch (*p) {
1785 case 10: {
1786 goto s_n_llhttp__internal__n_invoke_or_flags_15;
1787 }
1788 case 13: {
1789 goto s_n_llhttp__internal__n_invoke_or_flags_15;
1790 }
1791 case ' ': {
1792 p++;
1793 goto s_n_llhttp__internal__n_header_value_content_length_ws;
1794 }
1795 default: {
1796 goto s_n_llhttp__internal__n_span_end_llhttp__on_header_value_5;
1797 }
1798 }
1799 /* UNREACHABLE */;
1800 abort();
1801 }
1802 case s_n_llhttp__internal__n_header_value_content_length:
1803 s_n_llhttp__internal__n_header_value_content_length: {
1804 if (p == endp) {
1805 return s_n_llhttp__internal__n_header_value_content_length;
1806 }
1807 switch (*p) {
1808 case '0': {
1809 p++;
1810 match = 0;
1811 goto s_n_llhttp__internal__n_invoke_mul_add_content_length_1;
1812 }
1813 case '1': {
1814 p++;
1815 match = 1;
1816 goto s_n_llhttp__internal__n_invoke_mul_add_content_length_1;
1817 }
1818 case '2': {
1819 p++;
1820 match = 2;
1821 goto s_n_llhttp__internal__n_invoke_mul_add_content_length_1;
1822 }
1823 case '3': {
1824 p++;
1825 match = 3;
1826 goto s_n_llhttp__internal__n_invoke_mul_add_content_length_1;
1827 }
1828 case '4': {
1829 p++;
1830 match = 4;
1831 goto s_n_llhttp__internal__n_invoke_mul_add_content_length_1;
1832 }
1833 case '5': {
1834 p++;
1835 match = 5;
1836 goto s_n_llhttp__internal__n_invoke_mul_add_content_length_1;
1837 }
1838 case '6': {
1839 p++;
1840 match = 6;
1841 goto s_n_llhttp__internal__n_invoke_mul_add_content_length_1;
1842 }
1843 case '7': {
1844 p++;
1845 match = 7;
1846 goto s_n_llhttp__internal__n_invoke_mul_add_content_length_1;
1847 }
1848 case '8': {
1849 p++;
1850 match = 8;
1851 goto s_n_llhttp__internal__n_invoke_mul_add_content_length_1;
1852 }
1853 case '9': {
1854 p++;
1855 match = 9;
1856 goto s_n_llhttp__internal__n_invoke_mul_add_content_length_1;
1857 }
1858 default: {
1859 goto s_n_llhttp__internal__n_header_value_content_length_ws;
1860 }
1861 }
1862 /* UNREACHABLE */;
1863 abort();
1864 }
1865 case s_n_llhttp__internal__n_header_value_te_chunked_last:
1866 s_n_llhttp__internal__n_header_value_te_chunked_last: {
1867 if (p == endp) {
1868 return s_n_llhttp__internal__n_header_value_te_chunked_last;
1869 }
1870 switch (*p) {
1871 case 10: {
1872 goto s_n_llhttp__internal__n_invoke_update_header_state_7;
1873 }
1874 case 13: {
1875 goto s_n_llhttp__internal__n_invoke_update_header_state_7;
1876 }
1877 case ' ': {
1878 p++;
1879 goto s_n_llhttp__internal__n_header_value_te_chunked_last;
1880 }
1881 default: {
1882 goto s_n_llhttp__internal__n_header_value_te_chunked;
1883 }
1884 }
1885 /* UNREACHABLE */;
1886 abort();
1887 }
1888 case s_n_llhttp__internal__n_header_value_te_token_ows:
1889 s_n_llhttp__internal__n_header_value_te_token_ows: {
1890 if (p == endp) {
1891 return s_n_llhttp__internal__n_header_value_te_token_ows;
1892 }
1893 switch (*p) {
1894 case 9: {
1895 p++;
1896 goto s_n_llhttp__internal__n_header_value_te_token_ows;
1897 }
1898 case ' ': {
1899 p++;
1900 goto s_n_llhttp__internal__n_header_value_te_token_ows;
1901 }
1902 default: {
1903 goto s_n_llhttp__internal__n_header_value_te_chunked;
1904 }
1905 }
1906 /* UNREACHABLE */;
1907 abort();
1908 }
1909 case s_n_llhttp__internal__n_header_value:
1910 s_n_llhttp__internal__n_header_value: {
1911 static uint8_t lookup_table[] = {
1912 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
1913 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1914 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1915 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1916 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1917 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1918 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1919 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
1920 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1921 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1922 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1923 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1924 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1925 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1926 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1927 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
1928 };
1929 if (p == endp) {
1930 return s_n_llhttp__internal__n_header_value;
1931 }
1932 #ifdef __SSE4_2__
1933 if (endp - p >= 16) {
1934 __m128i ranges;
1935 __m128i input;
1936 int avail;
1937 int match_len;
1938
1939 /* Load input */
1940 input = _mm_loadu_si128((__m128i const*) p);
1941 ranges = _mm_loadu_si128((__m128i const*) llparse_blob8);
1942
1943 /* Find first character that does not match `ranges` */
1944 match_len = _mm_cmpestri(ranges, 6,
1945 input, 16,
1946 _SIDD_UBYTE_OPS | _SIDD_CMP_RANGES |
1947 _SIDD_NEGATIVE_POLARITY);
1948
1949 if (match_len != 0) {
1950 p += match_len;
1951 goto s_n_llhttp__internal__n_header_value;
1952 }
1953 goto s_n_llhttp__internal__n_header_value_otherwise;
1954 }
1955 #endif /* __SSE4_2__ */
1956 switch (lookup_table[(uint8_t) *p]) {
1957 case 1: {
1958 p++;
1959 goto s_n_llhttp__internal__n_header_value;
1960 }
1961 default: {
1962 goto s_n_llhttp__internal__n_header_value_otherwise;
1963 }
1964 }
1965 /* UNREACHABLE */;
1966 abort();
1967 }
1968 case s_n_llhttp__internal__n_header_value_te_token:
1969 s_n_llhttp__internal__n_header_value_te_token: {
1970 static uint8_t lookup_table[] = {
1971 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
1972 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1973 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1,
1974 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1975 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1976 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1977 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1978 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
1979 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1980 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1981 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1982 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1983 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1984 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1985 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1986 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
1987 };
1988 if (p == endp) {
1989 return s_n_llhttp__internal__n_header_value_te_token;
1990 }
1991 switch (lookup_table[(uint8_t) *p]) {
1992 case 1: {
1993 p++;
1994 goto s_n_llhttp__internal__n_header_value_te_token;
1995 }
1996 case 2: {
1997 p++;
1998 goto s_n_llhttp__internal__n_header_value_te_token_ows;
1999 }
2000 default: {
2001 goto s_n_llhttp__internal__n_invoke_update_header_state_8;
2002 }
2003 }
2004 /* UNREACHABLE */;
2005 abort();
2006 }
2007 case s_n_llhttp__internal__n_header_value_te_chunked:
2008 s_n_llhttp__internal__n_header_value_te_chunked: {
2009 llparse_match_t match_seq;
2010
2011 if (p == endp) {
2012 return s_n_llhttp__internal__n_header_value_te_chunked;
2013 }
2014 match_seq = llparse__match_sequence_to_lower_unsafe(state, p, endp, llparse_blob7, 7);
2015 p = match_seq.current;
2016 switch (match_seq.status) {
2017 case kMatchComplete: {
2018 p++;
2019 goto s_n_llhttp__internal__n_header_value_te_chunked_last;
2020 }
2021 case kMatchPause: {
2022 return s_n_llhttp__internal__n_header_value_te_chunked;
2023 }
2024 case kMatchMismatch: {
2025 goto s_n_llhttp__internal__n_header_value_te_token;
2026 }
2027 }
2028 /* UNREACHABLE */;
2029 abort();
2030 }
2031 case s_n_llhttp__internal__n_span_start_llhttp__on_header_value_1:
2032 s_n_llhttp__internal__n_span_start_llhttp__on_header_value_1: {
2033 if (p == endp) {
2034 return s_n_llhttp__internal__n_span_start_llhttp__on_header_value_1;
2035 }
2036 state->_span_pos0 = (void*) p;
2037 state->_span_cb0 = llhttp__on_header_value;
2038 goto s_n_llhttp__internal__n_invoke_load_header_state_2;
2039 /* UNREACHABLE */;
2040 abort();
2041 }
2042 case s_n_llhttp__internal__n_header_value_discard_ws:
2043 s_n_llhttp__internal__n_header_value_discard_ws: {
2044 if (p == endp) {
2045 return s_n_llhttp__internal__n_header_value_discard_ws;
2046 }
2047 switch (*p) {
2048 case 9: {
2049 p++;
2050 goto s_n_llhttp__internal__n_header_value_discard_ws;
2051 }
2052 case 10: {
2053 p++;
2054 goto s_n_llhttp__internal__n_header_value_discard_lws;
2055 }
2056 case 13: {
2057 p++;
2058 goto s_n_llhttp__internal__n_header_value_discard_ws_almost_done;
2059 }
2060 case ' ': {
2061 p++;
2062 goto s_n_llhttp__internal__n_header_value_discard_ws;
2063 }
2064 default: {
2065 goto s_n_llhttp__internal__n_span_start_llhttp__on_header_value_1;
2066 }
2067 }
2068 /* UNREACHABLE */;
2069 abort();
2070 }
2071 case s_n_llhttp__internal__n_header_field_general_otherwise:
2072 s_n_llhttp__internal__n_header_field_general_otherwise: {
2073 if (p == endp) {
2074 return s_n_llhttp__internal__n_header_field_general_otherwise;
2075 }
2076 switch (*p) {
2077 case ':': {
2078 goto s_n_llhttp__internal__n_span_end_llhttp__on_header_field_1;
2079 }
2080 default: {
2081 goto s_n_llhttp__internal__n_error_26;
2082 }
2083 }
2084 /* UNREACHABLE */;
2085 abort();
2086 }
2087 case s_n_llhttp__internal__n_header_field_general:
2088 s_n_llhttp__internal__n_header_field_general: {
2089 static uint8_t lookup_table[] = {
2090 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2091 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2092 0, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0,
2093 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
2094 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2095 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1,
2096 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
2097 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0,
2098 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2099 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2100 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2101 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2102 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2103 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2104 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2105 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
2106 };
2107 if (p == endp) {
2108 return s_n_llhttp__internal__n_header_field_general;
2109 }
2110 #ifdef __SSE4_2__
2111 if (endp - p >= 16) {
2112 __m128i ranges;
2113 __m128i input;
2114 int avail;
2115 int match_len;
2116
2117 /* Load input */
2118 input = _mm_loadu_si128((__m128i const*) p);
2119 ranges = _mm_loadu_si128((__m128i const*) llparse_blob9);
2120
2121 /* Find first character that does not match `ranges` */
2122 match_len = _mm_cmpestri(ranges, 16,
2123 input, 16,
2124 _SIDD_UBYTE_OPS | _SIDD_CMP_RANGES |
2125 _SIDD_NEGATIVE_POLARITY);
2126
2127 if (match_len != 0) {
2128 p += match_len;
2129 goto s_n_llhttp__internal__n_header_field_general;
2130 }
2131 ranges = _mm_loadu_si128((__m128i const*) llparse_blob10);
2132
2133 /* Find first character that does not match `ranges` */
2134 match_len = _mm_cmpestri(ranges, 2,
2135 input, 16,
2136 _SIDD_UBYTE_OPS | _SIDD_CMP_RANGES |
2137 _SIDD_NEGATIVE_POLARITY);
2138
2139 if (match_len != 0) {
2140 p += match_len;
2141 goto s_n_llhttp__internal__n_header_field_general;
2142 }
2143 goto s_n_llhttp__internal__n_header_field_general_otherwise;
2144 }
2145 #endif /* __SSE4_2__ */
2146 switch (lookup_table[(uint8_t) *p]) {
2147 case 1: {
2148 p++;
2149 goto s_n_llhttp__internal__n_header_field_general;
2150 }
2151 default: {
2152 goto s_n_llhttp__internal__n_header_field_general_otherwise;
2153 }
2154 }
2155 /* UNREACHABLE */;
2156 abort();
2157 }
2158 case s_n_llhttp__internal__n_header_field_colon:
2159 s_n_llhttp__internal__n_header_field_colon: {
2160 if (p == endp) {
2161 return s_n_llhttp__internal__n_header_field_colon;
2162 }
2163 switch (*p) {
2164 case ' ': {
2165 p++;
2166 goto s_n_llhttp__internal__n_header_field_colon;
2167 }
2168 case ':': {
2169 goto s_n_llhttp__internal__n_span_end_llhttp__on_header_field;
2170 }
2171 default: {
2172 goto s_n_llhttp__internal__n_invoke_update_header_state_9;
2173 }
2174 }
2175 /* UNREACHABLE */;
2176 abort();
2177 }
2178 case s_n_llhttp__internal__n_header_field_3:
2179 s_n_llhttp__internal__n_header_field_3: {
2180 llparse_match_t match_seq;
2181
2182 if (p == endp) {
2183 return s_n_llhttp__internal__n_header_field_3;
2184 }
2185 match_seq = llparse__match_sequence_to_lower(state, p, endp, llparse_blob3, 6);
2186 p = match_seq.current;
2187 switch (match_seq.status) {
2188 case kMatchComplete: {
2189 p++;
2190 match = 1;
2191 goto s_n_llhttp__internal__n_invoke_store_header_state;
2192 }
2193 case kMatchPause: {
2194 return s_n_llhttp__internal__n_header_field_3;
2195 }
2196 case kMatchMismatch: {
2197 goto s_n_llhttp__internal__n_invoke_update_header_state_10;
2198 }
2199 }
2200 /* UNREACHABLE */;
2201 abort();
2202 }
2203 case s_n_llhttp__internal__n_header_field_4:
2204 s_n_llhttp__internal__n_header_field_4: {
2205 llparse_match_t match_seq;
2206
2207 if (p == endp) {
2208 return s_n_llhttp__internal__n_header_field_4;
2209 }
2210 match_seq = llparse__match_sequence_to_lower(state, p, endp, llparse_blob11, 10);
2211 p = match_seq.current;
2212 switch (match_seq.status) {
2213 case kMatchComplete: {
2214 p++;
2215 match = 2;
2216 goto s_n_llhttp__internal__n_invoke_store_header_state;
2217 }
2218 case kMatchPause: {
2219 return s_n_llhttp__internal__n_header_field_4;
2220 }
2221 case kMatchMismatch: {
2222 goto s_n_llhttp__internal__n_invoke_update_header_state_10;
2223 }
2224 }
2225 /* UNREACHABLE */;
2226 abort();
2227 }
2228 case s_n_llhttp__internal__n_header_field_2:
2229 s_n_llhttp__internal__n_header_field_2: {
2230 if (p == endp) {
2231 return s_n_llhttp__internal__n_header_field_2;
2232 }
2233 switch (((*p) >= 'A' && (*p) <= 'Z' ? (*p | 0x20) : (*p))) {
2234 case 'n': {
2235 p++;
2236 goto s_n_llhttp__internal__n_header_field_3;
2237 }
2238 case 't': {
2239 p++;
2240 goto s_n_llhttp__internal__n_header_field_4;
2241 }
2242 default: {
2243 goto s_n_llhttp__internal__n_invoke_update_header_state_10;
2244 }
2245 }
2246 /* UNREACHABLE */;
2247 abort();
2248 }
2249 case s_n_llhttp__internal__n_header_field_1:
2250 s_n_llhttp__internal__n_header_field_1: {
2251 llparse_match_t match_seq;
2252
2253 if (p == endp) {
2254 return s_n_llhttp__internal__n_header_field_1;
2255 }
2256 match_seq = llparse__match_sequence_to_lower(state, p, endp, llparse_blob2, 2);
2257 p = match_seq.current;
2258 switch (match_seq.status) {
2259 case kMatchComplete: {
2260 p++;
2261 goto s_n_llhttp__internal__n_header_field_2;
2262 }
2263 case kMatchPause: {
2264 return s_n_llhttp__internal__n_header_field_1;
2265 }
2266 case kMatchMismatch: {
2267 goto s_n_llhttp__internal__n_invoke_update_header_state_10;
2268 }
2269 }
2270 /* UNREACHABLE */;
2271 abort();
2272 }
2273 case s_n_llhttp__internal__n_header_field_5:
2274 s_n_llhttp__internal__n_header_field_5: {
2275 llparse_match_t match_seq;
2276
2277 if (p == endp) {
2278 return s_n_llhttp__internal__n_header_field_5;
2279 }
2280 match_seq = llparse__match_sequence_to_lower(state, p, endp, llparse_blob12, 15);
2281 p = match_seq.current;
2282 switch (match_seq.status) {
2283 case kMatchComplete: {
2284 p++;
2285 match = 1;
2286 goto s_n_llhttp__internal__n_invoke_store_header_state;
2287 }
2288 case kMatchPause: {
2289 return s_n_llhttp__internal__n_header_field_5;
2290 }
2291 case kMatchMismatch: {
2292 goto s_n_llhttp__internal__n_invoke_update_header_state_10;
2293 }
2294 }
2295 /* UNREACHABLE */;
2296 abort();
2297 }
2298 case s_n_llhttp__internal__n_header_field_6:
2299 s_n_llhttp__internal__n_header_field_6: {
2300 llparse_match_t match_seq;
2301
2302 if (p == endp) {
2303 return s_n_llhttp__internal__n_header_field_6;
2304 }
2305 match_seq = llparse__match_sequence_to_lower(state, p, endp, llparse_blob13, 16);
2306 p = match_seq.current;
2307 switch (match_seq.status) {
2308 case kMatchComplete: {
2309 p++;
2310 match = 3;
2311 goto s_n_llhttp__internal__n_invoke_store_header_state;
2312 }
2313 case kMatchPause: {
2314 return s_n_llhttp__internal__n_header_field_6;
2315 }
2316 case kMatchMismatch: {
2317 goto s_n_llhttp__internal__n_invoke_update_header_state_10;
2318 }
2319 }
2320 /* UNREACHABLE */;
2321 abort();
2322 }
2323 case s_n_llhttp__internal__n_header_field_7:
2324 s_n_llhttp__internal__n_header_field_7: {
2325 llparse_match_t match_seq;
2326
2327 if (p == endp) {
2328 return s_n_llhttp__internal__n_header_field_7;
2329 }
2330 match_seq = llparse__match_sequence_to_lower(state, p, endp, llparse_blob14, 6);
2331 p = match_seq.current;
2332 switch (match_seq.status) {
2333 case kMatchComplete: {
2334 p++;
2335 match = 4;
2336 goto s_n_llhttp__internal__n_invoke_store_header_state;
2337 }
2338 case kMatchPause: {
2339 return s_n_llhttp__internal__n_header_field_7;
2340 }
2341 case kMatchMismatch: {
2342 goto s_n_llhttp__internal__n_invoke_update_header_state_10;
2343 }
2344 }
2345 /* UNREACHABLE */;
2346 abort();
2347 }
2348 case s_n_llhttp__internal__n_header_field:
2349 s_n_llhttp__internal__n_header_field: {
2350 if (p == endp) {
2351 return s_n_llhttp__internal__n_header_field;
2352 }
2353 switch (((*p) >= 'A' && (*p) <= 'Z' ? (*p | 0x20) : (*p))) {
2354 case 'c': {
2355 p++;
2356 goto s_n_llhttp__internal__n_header_field_1;
2357 }
2358 case 'p': {
2359 p++;
2360 goto s_n_llhttp__internal__n_header_field_5;
2361 }
2362 case 't': {
2363 p++;
2364 goto s_n_llhttp__internal__n_header_field_6;
2365 }
2366 case 'u': {
2367 p++;
2368 goto s_n_llhttp__internal__n_header_field_7;
2369 }
2370 default: {
2371 goto s_n_llhttp__internal__n_invoke_update_header_state_10;
2372 }
2373 }
2374 /* UNREACHABLE */;
2375 abort();
2376 }
2377 case s_n_llhttp__internal__n_span_start_llhttp__on_header_field:
2378 s_n_llhttp__internal__n_span_start_llhttp__on_header_field: {
2379 if (p == endp) {
2380 return s_n_llhttp__internal__n_span_start_llhttp__on_header_field;
2381 }
2382 state->_span_pos0 = (void*) p;
2383 state->_span_cb0 = llhttp__on_header_field;
2384 goto s_n_llhttp__internal__n_header_field;
2385 /* UNREACHABLE */;
2386 abort();
2387 }
2388 case s_n_llhttp__internal__n_header_field_start:
2389 s_n_llhttp__internal__n_header_field_start: {
2390 if (p == endp) {
2391 return s_n_llhttp__internal__n_header_field_start;
2392 }
2393 switch (*p) {
2394 case 10: {
2395 goto s_n_llhttp__internal__n_headers_almost_done;
2396 }
2397 case 13: {
2398 p++;
2399 goto s_n_llhttp__internal__n_headers_almost_done;
2400 }
2401 default: {
2402 goto s_n_llhttp__internal__n_span_start_llhttp__on_header_field;
2403 }
2404 }
2405 /* UNREACHABLE */;
2406 abort();
2407 }
2408 case s_n_llhttp__internal__n_url_to_http_09:
2409 s_n_llhttp__internal__n_url_to_http_09: {
2410 if (p == endp) {
2411 return s_n_llhttp__internal__n_url_to_http_09;
2412 }
2413 switch (*p) {
2414 case 9: {
2415 p++;
2416 goto s_n_llhttp__internal__n_error_1;
2417 }
2418 case 12: {
2419 p++;
2420 goto s_n_llhttp__internal__n_error_1;
2421 }
2422 default: {
2423 goto s_n_llhttp__internal__n_invoke_update_http_major;
2424 }
2425 }
2426 /* UNREACHABLE */;
2427 abort();
2428 }
2429 case s_n_llhttp__internal__n_url_skip_to_http09:
2430 s_n_llhttp__internal__n_url_skip_to_http09: {
2431 if (p == endp) {
2432 return s_n_llhttp__internal__n_url_skip_to_http09;
2433 }
2434 switch (*p) {
2435 case 9: {
2436 p++;
2437 goto s_n_llhttp__internal__n_error_1;
2438 }
2439 case 12: {
2440 p++;
2441 goto s_n_llhttp__internal__n_error_1;
2442 }
2443 default: {
2444 p++;
2445 goto s_n_llhttp__internal__n_url_to_http_09;
2446 }
2447 }
2448 /* UNREACHABLE */;
2449 abort();
2450 }
2451 case s_n_llhttp__internal__n_url_skip_lf_to_http09_1:
2452 s_n_llhttp__internal__n_url_skip_lf_to_http09_1: {
2453 if (p == endp) {
2454 return s_n_llhttp__internal__n_url_skip_lf_to_http09_1;
2455 }
2456 switch (*p) {
2457 case 10: {
2458 p++;
2459 goto s_n_llhttp__internal__n_url_to_http_09;
2460 }
2461 default: {
2462 goto s_n_llhttp__internal__n_error_27;
2463 }
2464 }
2465 /* UNREACHABLE */;
2466 abort();
2467 }
2468 case s_n_llhttp__internal__n_url_skip_lf_to_http09:
2469 s_n_llhttp__internal__n_url_skip_lf_to_http09: {
2470 if (p == endp) {
2471 return s_n_llhttp__internal__n_url_skip_lf_to_http09;
2472 }
2473 switch (*p) {
2474 case 9: {
2475 p++;
2476 goto s_n_llhttp__internal__n_error_1;
2477 }
2478 case 12: {
2479 p++;
2480 goto s_n_llhttp__internal__n_error_1;
2481 }
2482 case 13: {
2483 p++;
2484 goto s_n_llhttp__internal__n_url_skip_lf_to_http09_1;
2485 }
2486 default: {
2487 goto s_n_llhttp__internal__n_error_27;
2488 }
2489 }
2490 /* UNREACHABLE */;
2491 abort();
2492 }
2493 case s_n_llhttp__internal__n_req_http_end_1:
2494 s_n_llhttp__internal__n_req_http_end_1: {
2495 if (p == endp) {
2496 return s_n_llhttp__internal__n_req_http_end_1;
2497 }
2498 switch (*p) {
2499 case 10: {
2500 p++;
2501 goto s_n_llhttp__internal__n_header_field_start;
2502 }
2503 default: {
2504 goto s_n_llhttp__internal__n_error_28;
2505 }
2506 }
2507 /* UNREACHABLE */;
2508 abort();
2509 }
2510 case s_n_llhttp__internal__n_req_http_end:
2511 s_n_llhttp__internal__n_req_http_end: {
2512 if (p == endp) {
2513 return s_n_llhttp__internal__n_req_http_end;
2514 }
2515 switch (*p) {
2516 case 10: {
2517 p++;
2518 goto s_n_llhttp__internal__n_header_field_start;
2519 }
2520 case 13: {
2521 p++;
2522 goto s_n_llhttp__internal__n_req_http_end_1;
2523 }
2524 default: {
2525 goto s_n_llhttp__internal__n_error_28;
2526 }
2527 }
2528 /* UNREACHABLE */;
2529 abort();
2530 }
2531 case s_n_llhttp__internal__n_req_http_minor:
2532 s_n_llhttp__internal__n_req_http_minor: {
2533 if (p == endp) {
2534 return s_n_llhttp__internal__n_req_http_minor;
2535 }
2536 switch (*p) {
2537 case '0': {
2538 p++;
2539 match = 0;
2540 goto s_n_llhttp__internal__n_invoke_store_http_minor;
2541 }
2542 case '1': {
2543 p++;
2544 match = 1;
2545 goto s_n_llhttp__internal__n_invoke_store_http_minor;
2546 }
2547 case '2': {
2548 p++;
2549 match = 2;
2550 goto s_n_llhttp__internal__n_invoke_store_http_minor;
2551 }
2552 case '3': {
2553 p++;
2554 match = 3;
2555 goto s_n_llhttp__internal__n_invoke_store_http_minor;
2556 }
2557 case '4': {
2558 p++;
2559 match = 4;
2560 goto s_n_llhttp__internal__n_invoke_store_http_minor;
2561 }
2562 case '5': {
2563 p++;
2564 match = 5;
2565 goto s_n_llhttp__internal__n_invoke_store_http_minor;
2566 }
2567 case '6': {
2568 p++;
2569 match = 6;
2570 goto s_n_llhttp__internal__n_invoke_store_http_minor;
2571 }
2572 case '7': {
2573 p++;
2574 match = 7;
2575 goto s_n_llhttp__internal__n_invoke_store_http_minor;
2576 }
2577 case '8': {
2578 p++;
2579 match = 8;
2580 goto s_n_llhttp__internal__n_invoke_store_http_minor;
2581 }
2582 case '9': {
2583 p++;
2584 match = 9;
2585 goto s_n_llhttp__internal__n_invoke_store_http_minor;
2586 }
2587 default: {
2588 goto s_n_llhttp__internal__n_error_29;
2589 }
2590 }
2591 /* UNREACHABLE */;
2592 abort();
2593 }
2594 case s_n_llhttp__internal__n_req_http_dot:
2595 s_n_llhttp__internal__n_req_http_dot: {
2596 if (p == endp) {
2597 return s_n_llhttp__internal__n_req_http_dot;
2598 }
2599 switch (*p) {
2600 case '.': {
2601 p++;
2602 goto s_n_llhttp__internal__n_req_http_minor;
2603 }
2604 default: {
2605 goto s_n_llhttp__internal__n_error_30;
2606 }
2607 }
2608 /* UNREACHABLE */;
2609 abort();
2610 }
2611 case s_n_llhttp__internal__n_req_http_major:
2612 s_n_llhttp__internal__n_req_http_major: {
2613 if (p == endp) {
2614 return s_n_llhttp__internal__n_req_http_major;
2615 }
2616 switch (*p) {
2617 case '0': {
2618 p++;
2619 match = 0;
2620 goto s_n_llhttp__internal__n_invoke_store_http_major;
2621 }
2622 case '1': {
2623 p++;
2624 match = 1;
2625 goto s_n_llhttp__internal__n_invoke_store_http_major;
2626 }
2627 case '2': {
2628 p++;
2629 match = 2;
2630 goto s_n_llhttp__internal__n_invoke_store_http_major;
2631 }
2632 case '3': {
2633 p++;
2634 match = 3;
2635 goto s_n_llhttp__internal__n_invoke_store_http_major;
2636 }
2637 case '4': {
2638 p++;
2639 match = 4;
2640 goto s_n_llhttp__internal__n_invoke_store_http_major;
2641 }
2642 case '5': {
2643 p++;
2644 match = 5;
2645 goto s_n_llhttp__internal__n_invoke_store_http_major;
2646 }
2647 case '6': {
2648 p++;
2649 match = 6;
2650 goto s_n_llhttp__internal__n_invoke_store_http_major;
2651 }
2652 case '7': {
2653 p++;
2654 match = 7;
2655 goto s_n_llhttp__internal__n_invoke_store_http_major;
2656 }
2657 case '8': {
2658 p++;
2659 match = 8;
2660 goto s_n_llhttp__internal__n_invoke_store_http_major;
2661 }
2662 case '9': {
2663 p++;
2664 match = 9;
2665 goto s_n_llhttp__internal__n_invoke_store_http_major;
2666 }
2667 default: {
2668 goto s_n_llhttp__internal__n_error_31;
2669 }
2670 }
2671 /* UNREACHABLE */;
2672 abort();
2673 }
2674 case s_n_llhttp__internal__n_req_http_start_1:
2675 s_n_llhttp__internal__n_req_http_start_1: {
2676 llparse_match_t match_seq;
2677
2678 if (p == endp) {
2679 return s_n_llhttp__internal__n_req_http_start_1;
2680 }
2681 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob15, 4);
2682 p = match_seq.current;
2683 switch (match_seq.status) {
2684 case kMatchComplete: {
2685 p++;
2686 goto s_n_llhttp__internal__n_req_http_major;
2687 }
2688 case kMatchPause: {
2689 return s_n_llhttp__internal__n_req_http_start_1;
2690 }
2691 case kMatchMismatch: {
2692 goto s_n_llhttp__internal__n_error_33;
2693 }
2694 }
2695 /* UNREACHABLE */;
2696 abort();
2697 }
2698 case s_n_llhttp__internal__n_req_http_start_2:
2699 s_n_llhttp__internal__n_req_http_start_2: {
2700 llparse_match_t match_seq;
2701
2702 if (p == endp) {
2703 return s_n_llhttp__internal__n_req_http_start_2;
2704 }
2705 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob16, 3);
2706 p = match_seq.current;
2707 switch (match_seq.status) {
2708 case kMatchComplete: {
2709 p++;
2710 goto s_n_llhttp__internal__n_invoke_is_equal_method_1;
2711 }
2712 case kMatchPause: {
2713 return s_n_llhttp__internal__n_req_http_start_2;
2714 }
2715 case kMatchMismatch: {
2716 goto s_n_llhttp__internal__n_error_33;
2717 }
2718 }
2719 /* UNREACHABLE */;
2720 abort();
2721 }
2722 case s_n_llhttp__internal__n_req_http_start:
2723 s_n_llhttp__internal__n_req_http_start: {
2724 if (p == endp) {
2725 return s_n_llhttp__internal__n_req_http_start;
2726 }
2727 switch (*p) {
2728 case ' ': {
2729 p++;
2730 goto s_n_llhttp__internal__n_req_http_start;
2731 }
2732 case 'H': {
2733 p++;
2734 goto s_n_llhttp__internal__n_req_http_start_1;
2735 }
2736 case 'I': {
2737 p++;
2738 goto s_n_llhttp__internal__n_req_http_start_2;
2739 }
2740 default: {
2741 goto s_n_llhttp__internal__n_error_33;
2742 }
2743 }
2744 /* UNREACHABLE */;
2745 abort();
2746 }
2747 case s_n_llhttp__internal__n_url_to_http:
2748 s_n_llhttp__internal__n_url_to_http: {
2749 if (p == endp) {
2750 return s_n_llhttp__internal__n_url_to_http;
2751 }
2752 switch (*p) {
2753 case 9: {
2754 p++;
2755 goto s_n_llhttp__internal__n_error_1;
2756 }
2757 case 12: {
2758 p++;
2759 goto s_n_llhttp__internal__n_error_1;
2760 }
2761 default: {
2762 goto s_n_llhttp__internal__n_req_http_start;
2763 }
2764 }
2765 /* UNREACHABLE */;
2766 abort();
2767 }
2768 case s_n_llhttp__internal__n_url_skip_to_http:
2769 s_n_llhttp__internal__n_url_skip_to_http: {
2770 if (p == endp) {
2771 return s_n_llhttp__internal__n_url_skip_to_http;
2772 }
2773 switch (*p) {
2774 case 9: {
2775 p++;
2776 goto s_n_llhttp__internal__n_error_1;
2777 }
2778 case 12: {
2779 p++;
2780 goto s_n_llhttp__internal__n_error_1;
2781 }
2782 default: {
2783 p++;
2784 goto s_n_llhttp__internal__n_url_to_http;
2785 }
2786 }
2787 /* UNREACHABLE */;
2788 abort();
2789 }
2790 case s_n_llhttp__internal__n_url_fragment:
2791 s_n_llhttp__internal__n_url_fragment: {
2792 static uint8_t lookup_table[] = {
2793 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 1, 3, 0, 0,
2794 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2795 4, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2796 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2797 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2798 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2799 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2800 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0,
2801 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2802 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2803 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2804 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2805 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2806 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2807 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2808 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
2809 };
2810 if (p == endp) {
2811 return s_n_llhttp__internal__n_url_fragment;
2812 }
2813 switch (lookup_table[(uint8_t) *p]) {
2814 case 1: {
2815 p++;
2816 goto s_n_llhttp__internal__n_error_1;
2817 }
2818 case 2: {
2819 goto s_n_llhttp__internal__n_span_end_llhttp__on_url_6;
2820 }
2821 case 3: {
2822 goto s_n_llhttp__internal__n_span_end_llhttp__on_url_7;
2823 }
2824 case 4: {
2825 goto s_n_llhttp__internal__n_span_end_llhttp__on_url_8;
2826 }
2827 case 5: {
2828 p++;
2829 goto s_n_llhttp__internal__n_url_fragment;
2830 }
2831 default: {
2832 goto s_n_llhttp__internal__n_error_34;
2833 }
2834 }
2835 /* UNREACHABLE */;
2836 abort();
2837 }
2838 case s_n_llhttp__internal__n_span_end_stub_query_3:
2839 s_n_llhttp__internal__n_span_end_stub_query_3: {
2840 if (p == endp) {
2841 return s_n_llhttp__internal__n_span_end_stub_query_3;
2842 }
2843 p++;
2844 goto s_n_llhttp__internal__n_url_fragment;
2845 /* UNREACHABLE */;
2846 abort();
2847 }
2848 case s_n_llhttp__internal__n_url_query:
2849 s_n_llhttp__internal__n_url_query: {
2850 static uint8_t lookup_table[] = {
2851 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 1, 3, 0, 0,
2852 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2853 4, 5, 5, 6, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2854 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2855 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2856 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2857 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
2858 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0,
2859 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2860 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2861 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2862 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2863 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2864 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2865 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2866 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
2867 };
2868 if (p == endp) {
2869 return s_n_llhttp__internal__n_url_query;
2870 }
2871 switch (lookup_table[(uint8_t) *p]) {
2872 case 1: {
2873 p++;
2874 goto s_n_llhttp__internal__n_error_1;
2875 }
2876 case 2: {
2877 goto s_n_llhttp__internal__n_span_end_llhttp__on_url_9;
2878 }
2879 case 3: {
2880 goto s_n_llhttp__internal__n_span_end_llhttp__on_url_10;
2881 }
2882 case 4: {
2883 goto s_n_llhttp__internal__n_span_end_llhttp__on_url_11;
2884 }
2885 case 5: {
2886 p++;
2887 goto s_n_llhttp__internal__n_url_query;
2888 }
2889 case 6: {
2890 goto s_n_llhttp__internal__n_span_end_stub_query_3;
2891 }
2892 default: {
2893 goto s_n_llhttp__internal__n_error_35;
2894 }
2895 }
2896 /* UNREACHABLE */;
2897 abort();
2898 }
2899 case s_n_llhttp__internal__n_url_query_or_fragment:
2900 s_n_llhttp__internal__n_url_query_or_fragment: {
2901 if (p == endp) {
2902 return s_n_llhttp__internal__n_url_query_or_fragment;
2903 }
2904 switch (*p) {
2905 case 9: {
2906 p++;
2907 goto s_n_llhttp__internal__n_error_1;
2908 }
2909 case 10: {
2910 goto s_n_llhttp__internal__n_span_end_llhttp__on_url_3;
2911 }
2912 case 12: {
2913 p++;
2914 goto s_n_llhttp__internal__n_error_1;
2915 }
2916 case 13: {
2917 goto s_n_llhttp__internal__n_span_end_llhttp__on_url_4;
2918 }
2919 case ' ': {
2920 goto s_n_llhttp__internal__n_span_end_llhttp__on_url_5;
2921 }
2922 case '#': {
2923 p++;
2924 goto s_n_llhttp__internal__n_url_fragment;
2925 }
2926 case '?': {
2927 p++;
2928 goto s_n_llhttp__internal__n_url_query;
2929 }
2930 default: {
2931 goto s_n_llhttp__internal__n_error_36;
2932 }
2933 }
2934 /* UNREACHABLE */;
2935 abort();
2936 }
2937 case s_n_llhttp__internal__n_url_path:
2938 s_n_llhttp__internal__n_url_path: {
2939 static uint8_t lookup_table[] = {
2940 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0,
2941 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2942 0, 2, 2, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2943 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0,
2944 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2945 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2946 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
2947 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 0,
2948 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2949 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2950 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2951 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2952 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2953 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2954 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
2955 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
2956 };
2957 if (p == endp) {
2958 return s_n_llhttp__internal__n_url_path;
2959 }
2960 switch (lookup_table[(uint8_t) *p]) {
2961 case 1: {
2962 p++;
2963 goto s_n_llhttp__internal__n_error_1;
2964 }
2965 case 2: {
2966 p++;
2967 goto s_n_llhttp__internal__n_url_path;
2968 }
2969 default: {
2970 goto s_n_llhttp__internal__n_url_query_or_fragment;
2971 }
2972 }
2973 /* UNREACHABLE */;
2974 abort();
2975 }
2976 case s_n_llhttp__internal__n_span_start_stub_path_2:
2977 s_n_llhttp__internal__n_span_start_stub_path_2: {
2978 if (p == endp) {
2979 return s_n_llhttp__internal__n_span_start_stub_path_2;
2980 }
2981 p++;
2982 goto s_n_llhttp__internal__n_url_path;
2983 /* UNREACHABLE */;
2984 abort();
2985 }
2986 case s_n_llhttp__internal__n_span_start_stub_path:
2987 s_n_llhttp__internal__n_span_start_stub_path: {
2988 if (p == endp) {
2989 return s_n_llhttp__internal__n_span_start_stub_path;
2990 }
2991 p++;
2992 goto s_n_llhttp__internal__n_url_path;
2993 /* UNREACHABLE */;
2994 abort();
2995 }
2996 case s_n_llhttp__internal__n_span_start_stub_path_1:
2997 s_n_llhttp__internal__n_span_start_stub_path_1: {
2998 if (p == endp) {
2999 return s_n_llhttp__internal__n_span_start_stub_path_1;
3000 }
3001 p++;
3002 goto s_n_llhttp__internal__n_url_path;
3003 /* UNREACHABLE */;
3004 abort();
3005 }
3006 case s_n_llhttp__internal__n_url_server_with_at:
3007 s_n_llhttp__internal__n_url_server_with_at: {
3008 static uint8_t lookup_table[] = {
3009 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 1, 3, 0, 0,
3010 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3011 4, 5, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6,
3012 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 0, 7,
3013 8, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
3014 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 0, 5,
3015 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
3016 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 5, 0,
3017 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3018 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3019 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3020 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3021 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3022 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3023 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3024 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
3025 };
3026 if (p == endp) {
3027 return s_n_llhttp__internal__n_url_server_with_at;
3028 }
3029 switch (lookup_table[(uint8_t) *p]) {
3030 case 1: {
3031 p++;
3032 goto s_n_llhttp__internal__n_error_1;
3033 }
3034 case 2: {
3035 goto s_n_llhttp__internal__n_span_end_llhttp__on_url_12;
3036 }
3037 case 3: {
3038 goto s_n_llhttp__internal__n_span_end_llhttp__on_url_13;
3039 }
3040 case 4: {
3041 goto s_n_llhttp__internal__n_span_end_llhttp__on_url_14;
3042 }
3043 case 5: {
3044 p++;
3045 goto s_n_llhttp__internal__n_url_server;
3046 }
3047 case 6: {
3048 goto s_n_llhttp__internal__n_span_start_stub_path_1;
3049 }
3050 case 7: {
3051 p++;
3052 goto s_n_llhttp__internal__n_url_query;
3053 }
3054 case 8: {
3055 p++;
3056 goto s_n_llhttp__internal__n_error_37;
3057 }
3058 default: {
3059 goto s_n_llhttp__internal__n_error_38;
3060 }
3061 }
3062 /* UNREACHABLE */;
3063 abort();
3064 }
3065 case s_n_llhttp__internal__n_url_server:
3066 s_n_llhttp__internal__n_url_server: {
3067 static uint8_t lookup_table[] = {
3068 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 1, 3, 0, 0,
3069 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3070 4, 5, 0, 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 6,
3071 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 0, 7,
3072 8, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
3073 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 5, 0, 5,
3074 0, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5,
3075 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 0, 0, 0, 5, 0,
3076 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3077 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3078 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3079 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3080 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3081 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3082 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3083 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
3084 };
3085 if (p == endp) {
3086 return s_n_llhttp__internal__n_url_server;
3087 }
3088 switch (lookup_table[(uint8_t) *p]) {
3089 case 1: {
3090 p++;
3091 goto s_n_llhttp__internal__n_error_1;
3092 }
3093 case 2: {
3094 goto s_n_llhttp__internal__n_span_end_llhttp__on_url;
3095 }
3096 case 3: {
3097 goto s_n_llhttp__internal__n_span_end_llhttp__on_url_1;
3098 }
3099 case 4: {
3100 goto s_n_llhttp__internal__n_span_end_llhttp__on_url_2;
3101 }
3102 case 5: {
3103 p++;
3104 goto s_n_llhttp__internal__n_url_server;
3105 }
3106 case 6: {
3107 goto s_n_llhttp__internal__n_span_start_stub_path;
3108 }
3109 case 7: {
3110 p++;
3111 goto s_n_llhttp__internal__n_url_query;
3112 }
3113 case 8: {
3114 p++;
3115 goto s_n_llhttp__internal__n_url_server_with_at;
3116 }
3117 default: {
3118 goto s_n_llhttp__internal__n_error_39;
3119 }
3120 }
3121 /* UNREACHABLE */;
3122 abort();
3123 }
3124 case s_n_llhttp__internal__n_url_schema_delim_1:
3125 s_n_llhttp__internal__n_url_schema_delim_1: {
3126 if (p == endp) {
3127 return s_n_llhttp__internal__n_url_schema_delim_1;
3128 }
3129 switch (*p) {
3130 case '/': {
3131 p++;
3132 goto s_n_llhttp__internal__n_url_server;
3133 }
3134 default: {
3135 goto s_n_llhttp__internal__n_error_41;
3136 }
3137 }
3138 /* UNREACHABLE */;
3139 abort();
3140 }
3141 case s_n_llhttp__internal__n_url_schema_delim:
3142 s_n_llhttp__internal__n_url_schema_delim: {
3143 if (p == endp) {
3144 return s_n_llhttp__internal__n_url_schema_delim;
3145 }
3146 switch (*p) {
3147 case 9: {
3148 p++;
3149 goto s_n_llhttp__internal__n_error_1;
3150 }
3151 case 10: {
3152 p++;
3153 goto s_n_llhttp__internal__n_error_40;
3154 }
3155 case 12: {
3156 p++;
3157 goto s_n_llhttp__internal__n_error_1;
3158 }
3159 case 13: {
3160 p++;
3161 goto s_n_llhttp__internal__n_error_40;
3162 }
3163 case ' ': {
3164 p++;
3165 goto s_n_llhttp__internal__n_error_40;
3166 }
3167 case '/': {
3168 p++;
3169 goto s_n_llhttp__internal__n_url_schema_delim_1;
3170 }
3171 default: {
3172 goto s_n_llhttp__internal__n_error_41;
3173 }
3174 }
3175 /* UNREACHABLE */;
3176 abort();
3177 }
3178 case s_n_llhttp__internal__n_span_end_stub_schema:
3179 s_n_llhttp__internal__n_span_end_stub_schema: {
3180 if (p == endp) {
3181 return s_n_llhttp__internal__n_span_end_stub_schema;
3182 }
3183 p++;
3184 goto s_n_llhttp__internal__n_url_schema_delim;
3185 /* UNREACHABLE */;
3186 abort();
3187 }
3188 case s_n_llhttp__internal__n_url_schema:
3189 s_n_llhttp__internal__n_url_schema: {
3190 static uint8_t lookup_table[] = {
3191 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 1, 2, 0, 0,
3192 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3193 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3194 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0,
3195 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
3196 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0,
3197 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
3198 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0,
3199 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3200 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3201 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3202 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3203 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3204 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3205 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3206 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
3207 };
3208 if (p == endp) {
3209 return s_n_llhttp__internal__n_url_schema;
3210 }
3211 switch (lookup_table[(uint8_t) *p]) {
3212 case 1: {
3213 p++;
3214 goto s_n_llhttp__internal__n_error_1;
3215 }
3216 case 2: {
3217 p++;
3218 goto s_n_llhttp__internal__n_error_40;
3219 }
3220 case 3: {
3221 goto s_n_llhttp__internal__n_span_end_stub_schema;
3222 }
3223 case 4: {
3224 p++;
3225 goto s_n_llhttp__internal__n_url_schema;
3226 }
3227 default: {
3228 goto s_n_llhttp__internal__n_error_42;
3229 }
3230 }
3231 /* UNREACHABLE */;
3232 abort();
3233 }
3234 case s_n_llhttp__internal__n_url_start:
3235 s_n_llhttp__internal__n_url_start: {
3236 static uint8_t lookup_table[] = {
3237 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 1, 2, 0, 0,
3238 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3239 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 3,
3240 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3241 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
3242 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0,
3243 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
3244 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 0, 0,
3245 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3246 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3247 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3248 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3249 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3250 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3251 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
3252 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
3253 };
3254 if (p == endp) {
3255 return s_n_llhttp__internal__n_url_start;
3256 }
3257 switch (lookup_table[(uint8_t) *p]) {
3258 case 1: {
3259 p++;
3260 goto s_n_llhttp__internal__n_error_1;
3261 }
3262 case 2: {
3263 p++;
3264 goto s_n_llhttp__internal__n_error_40;
3265 }
3266 case 3: {
3267 goto s_n_llhttp__internal__n_span_start_stub_path_2;
3268 }
3269 case 4: {
3270 goto s_n_llhttp__internal__n_url_schema;
3271 }
3272 default: {
3273 goto s_n_llhttp__internal__n_error_43;
3274 }
3275 }
3276 /* UNREACHABLE */;
3277 abort();
3278 }
3279 case s_n_llhttp__internal__n_span_start_llhttp__on_url_1:
3280 s_n_llhttp__internal__n_span_start_llhttp__on_url_1: {
3281 if (p == endp) {
3282 return s_n_llhttp__internal__n_span_start_llhttp__on_url_1;
3283 }
3284 state->_span_pos0 = (void*) p;
3285 state->_span_cb0 = llhttp__on_url;
3286 goto s_n_llhttp__internal__n_url_start;
3287 /* UNREACHABLE */;
3288 abort();
3289 }
3290 case s_n_llhttp__internal__n_url_entry_normal:
3291 s_n_llhttp__internal__n_url_entry_normal: {
3292 if (p == endp) {
3293 return s_n_llhttp__internal__n_url_entry_normal;
3294 }
3295 switch (*p) {
3296 case 9: {
3297 p++;
3298 goto s_n_llhttp__internal__n_error_1;
3299 }
3300 case 12: {
3301 p++;
3302 goto s_n_llhttp__internal__n_error_1;
3303 }
3304 default: {
3305 goto s_n_llhttp__internal__n_span_start_llhttp__on_url_1;
3306 }
3307 }
3308 /* UNREACHABLE */;
3309 abort();
3310 }
3311 case s_n_llhttp__internal__n_span_start_llhttp__on_url:
3312 s_n_llhttp__internal__n_span_start_llhttp__on_url: {
3313 if (p == endp) {
3314 return s_n_llhttp__internal__n_span_start_llhttp__on_url;
3315 }
3316 state->_span_pos0 = (void*) p;
3317 state->_span_cb0 = llhttp__on_url;
3318 goto s_n_llhttp__internal__n_url_server;
3319 /* UNREACHABLE */;
3320 abort();
3321 }
3322 case s_n_llhttp__internal__n_url_entry_connect:
3323 s_n_llhttp__internal__n_url_entry_connect: {
3324 if (p == endp) {
3325 return s_n_llhttp__internal__n_url_entry_connect;
3326 }
3327 switch (*p) {
3328 case 9: {
3329 p++;
3330 goto s_n_llhttp__internal__n_error_1;
3331 }
3332 case 12: {
3333 p++;
3334 goto s_n_llhttp__internal__n_error_1;
3335 }
3336 default: {
3337 goto s_n_llhttp__internal__n_span_start_llhttp__on_url;
3338 }
3339 }
3340 /* UNREACHABLE */;
3341 abort();
3342 }
3343 case s_n_llhttp__internal__n_req_spaces_before_url:
3344 s_n_llhttp__internal__n_req_spaces_before_url: {
3345 if (p == endp) {
3346 return s_n_llhttp__internal__n_req_spaces_before_url;
3347 }
3348 switch (*p) {
3349 case ' ': {
3350 p++;
3351 goto s_n_llhttp__internal__n_req_spaces_before_url;
3352 }
3353 default: {
3354 goto s_n_llhttp__internal__n_invoke_is_equal_method;
3355 }
3356 }
3357 /* UNREACHABLE */;
3358 abort();
3359 }
3360 case s_n_llhttp__internal__n_req_first_space_before_url:
3361 s_n_llhttp__internal__n_req_first_space_before_url: {
3362 if (p == endp) {
3363 return s_n_llhttp__internal__n_req_first_space_before_url;
3364 }
3365 switch (*p) {
3366 case ' ': {
3367 p++;
3368 goto s_n_llhttp__internal__n_req_spaces_before_url;
3369 }
3370 default: {
3371 goto s_n_llhttp__internal__n_error_44;
3372 }
3373 }
3374 /* UNREACHABLE */;
3375 abort();
3376 }
3377 case s_n_llhttp__internal__n_start_req_1:
3378 s_n_llhttp__internal__n_start_req_1: {
3379 llparse_match_t match_seq;
3380
3381 if (p == endp) {
3382 return s_n_llhttp__internal__n_start_req_1;
3383 }
3384 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob0, 2);
3385 p = match_seq.current;
3386 switch (match_seq.status) {
3387 case kMatchComplete: {
3388 p++;
3389 match = 19;
3390 goto s_n_llhttp__internal__n_invoke_store_method_1;
3391 }
3392 case kMatchPause: {
3393 return s_n_llhttp__internal__n_start_req_1;
3394 }
3395 case kMatchMismatch: {
3396 goto s_n_llhttp__internal__n_error_53;
3397 }
3398 }
3399 /* UNREACHABLE */;
3400 abort();
3401 }
3402 case s_n_llhttp__internal__n_start_req_2:
3403 s_n_llhttp__internal__n_start_req_2: {
3404 llparse_match_t match_seq;
3405
3406 if (p == endp) {
3407 return s_n_llhttp__internal__n_start_req_2;
3408 }
3409 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob17, 3);
3410 p = match_seq.current;
3411 switch (match_seq.status) {
3412 case kMatchComplete: {
3413 p++;
3414 match = 16;
3415 goto s_n_llhttp__internal__n_invoke_store_method_1;
3416 }
3417 case kMatchPause: {
3418 return s_n_llhttp__internal__n_start_req_2;
3419 }
3420 case kMatchMismatch: {
3421 goto s_n_llhttp__internal__n_error_53;
3422 }
3423 }
3424 /* UNREACHABLE */;
3425 abort();
3426 }
3427 case s_n_llhttp__internal__n_start_req_4:
3428 s_n_llhttp__internal__n_start_req_4: {
3429 llparse_match_t match_seq;
3430
3431 if (p == endp) {
3432 return s_n_llhttp__internal__n_start_req_4;
3433 }
3434 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob18, 6);
3435 p = match_seq.current;
3436 switch (match_seq.status) {
3437 case kMatchComplete: {
3438 p++;
3439 match = 22;
3440 goto s_n_llhttp__internal__n_invoke_store_method_1;
3441 }
3442 case kMatchPause: {
3443 return s_n_llhttp__internal__n_start_req_4;
3444 }
3445 case kMatchMismatch: {
3446 goto s_n_llhttp__internal__n_error_53;
3447 }
3448 }
3449 /* UNREACHABLE */;
3450 abort();
3451 }
3452 case s_n_llhttp__internal__n_start_req_6:
3453 s_n_llhttp__internal__n_start_req_6: {
3454 llparse_match_t match_seq;
3455
3456 if (p == endp) {
3457 return s_n_llhttp__internal__n_start_req_6;
3458 }
3459 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob19, 4);
3460 p = match_seq.current;
3461 switch (match_seq.status) {
3462 case kMatchComplete: {
3463 p++;
3464 match = 5;
3465 goto s_n_llhttp__internal__n_invoke_store_method_1;
3466 }
3467 case kMatchPause: {
3468 return s_n_llhttp__internal__n_start_req_6;
3469 }
3470 case kMatchMismatch: {
3471 goto s_n_llhttp__internal__n_error_53;
3472 }
3473 }
3474 /* UNREACHABLE */;
3475 abort();
3476 }
3477 case s_n_llhttp__internal__n_start_req_7:
3478 s_n_llhttp__internal__n_start_req_7: {
3479 if (p == endp) {
3480 return s_n_llhttp__internal__n_start_req_7;
3481 }
3482 switch (*p) {
3483 case 'Y': {
3484 p++;
3485 match = 8;
3486 goto s_n_llhttp__internal__n_invoke_store_method_1;
3487 }
3488 default: {
3489 goto s_n_llhttp__internal__n_error_53;
3490 }
3491 }
3492 /* UNREACHABLE */;
3493 abort();
3494 }
3495 case s_n_llhttp__internal__n_start_req_5:
3496 s_n_llhttp__internal__n_start_req_5: {
3497 if (p == endp) {
3498 return s_n_llhttp__internal__n_start_req_5;
3499 }
3500 switch (*p) {
3501 case 'N': {
3502 p++;
3503 goto s_n_llhttp__internal__n_start_req_6;
3504 }
3505 case 'P': {
3506 p++;
3507 goto s_n_llhttp__internal__n_start_req_7;
3508 }
3509 default: {
3510 goto s_n_llhttp__internal__n_error_53;
3511 }
3512 }
3513 /* UNREACHABLE */;
3514 abort();
3515 }
3516 case s_n_llhttp__internal__n_start_req_3:
3517 s_n_llhttp__internal__n_start_req_3: {
3518 if (p == endp) {
3519 return s_n_llhttp__internal__n_start_req_3;
3520 }
3521 switch (*p) {
3522 case 'H': {
3523 p++;
3524 goto s_n_llhttp__internal__n_start_req_4;
3525 }
3526 case 'O': {
3527 p++;
3528 goto s_n_llhttp__internal__n_start_req_5;
3529 }
3530 default: {
3531 goto s_n_llhttp__internal__n_error_53;
3532 }
3533 }
3534 /* UNREACHABLE */;
3535 abort();
3536 }
3537 case s_n_llhttp__internal__n_start_req_8:
3538 s_n_llhttp__internal__n_start_req_8: {
3539 llparse_match_t match_seq;
3540
3541 if (p == endp) {
3542 return s_n_llhttp__internal__n_start_req_8;
3543 }
3544 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob20, 5);
3545 p = match_seq.current;
3546 switch (match_seq.status) {
3547 case kMatchComplete: {
3548 p++;
3549 match = 0;
3550 goto s_n_llhttp__internal__n_invoke_store_method_1;
3551 }
3552 case kMatchPause: {
3553 return s_n_llhttp__internal__n_start_req_8;
3554 }
3555 case kMatchMismatch: {
3556 goto s_n_llhttp__internal__n_error_53;
3557 }
3558 }
3559 /* UNREACHABLE */;
3560 abort();
3561 }
3562 case s_n_llhttp__internal__n_start_req_9:
3563 s_n_llhttp__internal__n_start_req_9: {
3564 llparse_match_t match_seq;
3565
3566 if (p == endp) {
3567 return s_n_llhttp__internal__n_start_req_9;
3568 }
3569 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob21, 2);
3570 p = match_seq.current;
3571 switch (match_seq.status) {
3572 case kMatchComplete: {
3573 p++;
3574 match = 1;
3575 goto s_n_llhttp__internal__n_invoke_store_method_1;
3576 }
3577 case kMatchPause: {
3578 return s_n_llhttp__internal__n_start_req_9;
3579 }
3580 case kMatchMismatch: {
3581 goto s_n_llhttp__internal__n_error_53;
3582 }
3583 }
3584 /* UNREACHABLE */;
3585 abort();
3586 }
3587 case s_n_llhttp__internal__n_start_req_10:
3588 s_n_llhttp__internal__n_start_req_10: {
3589 llparse_match_t match_seq;
3590
3591 if (p == endp) {
3592 return s_n_llhttp__internal__n_start_req_10;
3593 }
3594 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob22, 3);
3595 p = match_seq.current;
3596 switch (match_seq.status) {
3597 case kMatchComplete: {
3598 p++;
3599 match = 2;
3600 goto s_n_llhttp__internal__n_invoke_store_method_1;
3601 }
3602 case kMatchPause: {
3603 return s_n_llhttp__internal__n_start_req_10;
3604 }
3605 case kMatchMismatch: {
3606 goto s_n_llhttp__internal__n_error_53;
3607 }
3608 }
3609 /* UNREACHABLE */;
3610 abort();
3611 }
3612 case s_n_llhttp__internal__n_start_req_12:
3613 s_n_llhttp__internal__n_start_req_12: {
3614 llparse_match_t match_seq;
3615
3616 if (p == endp) {
3617 return s_n_llhttp__internal__n_start_req_12;
3618 }
3619 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob23, 2);
3620 p = match_seq.current;
3621 switch (match_seq.status) {
3622 case kMatchComplete: {
3623 p++;
3624 match = 31;
3625 goto s_n_llhttp__internal__n_invoke_store_method_1;
3626 }
3627 case kMatchPause: {
3628 return s_n_llhttp__internal__n_start_req_12;
3629 }
3630 case kMatchMismatch: {
3631 goto s_n_llhttp__internal__n_error_53;
3632 }
3633 }
3634 /* UNREACHABLE */;
3635 abort();
3636 }
3637 case s_n_llhttp__internal__n_start_req_13:
3638 s_n_llhttp__internal__n_start_req_13: {
3639 llparse_match_t match_seq;
3640
3641 if (p == endp) {
3642 return s_n_llhttp__internal__n_start_req_13;
3643 }
3644 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob24, 2);
3645 p = match_seq.current;
3646 switch (match_seq.status) {
3647 case kMatchComplete: {
3648 p++;
3649 match = 9;
3650 goto s_n_llhttp__internal__n_invoke_store_method_1;
3651 }
3652 case kMatchPause: {
3653 return s_n_llhttp__internal__n_start_req_13;
3654 }
3655 case kMatchMismatch: {
3656 goto s_n_llhttp__internal__n_error_53;
3657 }
3658 }
3659 /* UNREACHABLE */;
3660 abort();
3661 }
3662 case s_n_llhttp__internal__n_start_req_11:
3663 s_n_llhttp__internal__n_start_req_11: {
3664 if (p == endp) {
3665 return s_n_llhttp__internal__n_start_req_11;
3666 }
3667 switch (*p) {
3668 case 'I': {
3669 p++;
3670 goto s_n_llhttp__internal__n_start_req_12;
3671 }
3672 case 'O': {
3673 p++;
3674 goto s_n_llhttp__internal__n_start_req_13;
3675 }
3676 default: {
3677 goto s_n_llhttp__internal__n_error_53;
3678 }
3679 }
3680 /* UNREACHABLE */;
3681 abort();
3682 }
3683 case s_n_llhttp__internal__n_start_req_15:
3684 s_n_llhttp__internal__n_start_req_15: {
3685 llparse_match_t match_seq;
3686
3687 if (p == endp) {
3688 return s_n_llhttp__internal__n_start_req_15;
3689 }
3690 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob25, 6);
3691 p = match_seq.current;
3692 switch (match_seq.status) {
3693 case kMatchComplete: {
3694 p++;
3695 match = 24;
3696 goto s_n_llhttp__internal__n_invoke_store_method_1;
3697 }
3698 case kMatchPause: {
3699 return s_n_llhttp__internal__n_start_req_15;
3700 }
3701 case kMatchMismatch: {
3702 goto s_n_llhttp__internal__n_error_53;
3703 }
3704 }
3705 /* UNREACHABLE */;
3706 abort();
3707 }
3708 case s_n_llhttp__internal__n_start_req_16:
3709 s_n_llhttp__internal__n_start_req_16: {
3710 llparse_match_t match_seq;
3711
3712 if (p == endp) {
3713 return s_n_llhttp__internal__n_start_req_16;
3714 }
3715 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob26, 3);
3716 p = match_seq.current;
3717 switch (match_seq.status) {
3718 case kMatchComplete: {
3719 p++;
3720 match = 23;
3721 goto s_n_llhttp__internal__n_invoke_store_method_1;
3722 }
3723 case kMatchPause: {
3724 return s_n_llhttp__internal__n_start_req_16;
3725 }
3726 case kMatchMismatch: {
3727 goto s_n_llhttp__internal__n_error_53;
3728 }
3729 }
3730 /* UNREACHABLE */;
3731 abort();
3732 }
3733 case s_n_llhttp__internal__n_start_req_18:
3734 s_n_llhttp__internal__n_start_req_18: {
3735 llparse_match_t match_seq;
3736
3737 if (p == endp) {
3738 return s_n_llhttp__internal__n_start_req_18;
3739 }
3740 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob27, 7);
3741 p = match_seq.current;
3742 switch (match_seq.status) {
3743 case kMatchComplete: {
3744 p++;
3745 match = 21;
3746 goto s_n_llhttp__internal__n_invoke_store_method_1;
3747 }
3748 case kMatchPause: {
3749 return s_n_llhttp__internal__n_start_req_18;
3750 }
3751 case kMatchMismatch: {
3752 goto s_n_llhttp__internal__n_error_53;
3753 }
3754 }
3755 /* UNREACHABLE */;
3756 abort();
3757 }
3758 case s_n_llhttp__internal__n_start_req_20:
3759 s_n_llhttp__internal__n_start_req_20: {
3760 llparse_match_t match_seq;
3761
3762 if (p == endp) {
3763 return s_n_llhttp__internal__n_start_req_20;
3764 }
3765 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob28, 6);
3766 p = match_seq.current;
3767 switch (match_seq.status) {
3768 case kMatchComplete: {
3769 p++;
3770 match = 30;
3771 goto s_n_llhttp__internal__n_invoke_store_method_1;
3772 }
3773 case kMatchPause: {
3774 return s_n_llhttp__internal__n_start_req_20;
3775 }
3776 case kMatchMismatch: {
3777 goto s_n_llhttp__internal__n_error_53;
3778 }
3779 }
3780 /* UNREACHABLE */;
3781 abort();
3782 }
3783 case s_n_llhttp__internal__n_start_req_21:
3784 s_n_llhttp__internal__n_start_req_21: {
3785 if (p == endp) {
3786 return s_n_llhttp__internal__n_start_req_21;
3787 }
3788 switch (*p) {
3789 case 'L': {
3790 p++;
3791 match = 10;
3792 goto s_n_llhttp__internal__n_invoke_store_method_1;
3793 }
3794 default: {
3795 goto s_n_llhttp__internal__n_error_53;
3796 }
3797 }
3798 /* UNREACHABLE */;
3799 abort();
3800 }
3801 case s_n_llhttp__internal__n_start_req_19:
3802 s_n_llhttp__internal__n_start_req_19: {
3803 if (p == endp) {
3804 return s_n_llhttp__internal__n_start_req_19;
3805 }
3806 switch (*p) {
3807 case 'A': {
3808 p++;
3809 goto s_n_llhttp__internal__n_start_req_20;
3810 }
3811 case 'O': {
3812 p++;
3813 goto s_n_llhttp__internal__n_start_req_21;
3814 }
3815 default: {
3816 goto s_n_llhttp__internal__n_error_53;
3817 }
3818 }
3819 /* UNREACHABLE */;
3820 abort();
3821 }
3822 case s_n_llhttp__internal__n_start_req_17:
3823 s_n_llhttp__internal__n_start_req_17: {
3824 if (p == endp) {
3825 return s_n_llhttp__internal__n_start_req_17;
3826 }
3827 switch (*p) {
3828 case 'A': {
3829 p++;
3830 goto s_n_llhttp__internal__n_start_req_18;
3831 }
3832 case 'C': {
3833 p++;
3834 goto s_n_llhttp__internal__n_start_req_19;
3835 }
3836 default: {
3837 goto s_n_llhttp__internal__n_error_53;
3838 }
3839 }
3840 /* UNREACHABLE */;
3841 abort();
3842 }
3843 case s_n_llhttp__internal__n_start_req_22:
3844 s_n_llhttp__internal__n_start_req_22: {
3845 llparse_match_t match_seq;
3846
3847 if (p == endp) {
3848 return s_n_llhttp__internal__n_start_req_22;
3849 }
3850 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob29, 2);
3851 p = match_seq.current;
3852 switch (match_seq.status) {
3853 case kMatchComplete: {
3854 p++;
3855 match = 11;
3856 goto s_n_llhttp__internal__n_invoke_store_method_1;
3857 }
3858 case kMatchPause: {
3859 return s_n_llhttp__internal__n_start_req_22;
3860 }
3861 case kMatchMismatch: {
3862 goto s_n_llhttp__internal__n_error_53;
3863 }
3864 }
3865 /* UNREACHABLE */;
3866 abort();
3867 }
3868 case s_n_llhttp__internal__n_start_req_14:
3869 s_n_llhttp__internal__n_start_req_14: {
3870 if (p == endp) {
3871 return s_n_llhttp__internal__n_start_req_14;
3872 }
3873 switch (*p) {
3874 case '-': {
3875 p++;
3876 goto s_n_llhttp__internal__n_start_req_15;
3877 }
3878 case 'E': {
3879 p++;
3880 goto s_n_llhttp__internal__n_start_req_16;
3881 }
3882 case 'K': {
3883 p++;
3884 goto s_n_llhttp__internal__n_start_req_17;
3885 }
3886 case 'O': {
3887 p++;
3888 goto s_n_llhttp__internal__n_start_req_22;
3889 }
3890 default: {
3891 goto s_n_llhttp__internal__n_error_53;
3892 }
3893 }
3894 /* UNREACHABLE */;
3895 abort();
3896 }
3897 case s_n_llhttp__internal__n_start_req_23:
3898 s_n_llhttp__internal__n_start_req_23: {
3899 llparse_match_t match_seq;
3900
3901 if (p == endp) {
3902 return s_n_llhttp__internal__n_start_req_23;
3903 }
3904 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob30, 5);
3905 p = match_seq.current;
3906 switch (match_seq.status) {
3907 case kMatchComplete: {
3908 p++;
3909 match = 25;
3910 goto s_n_llhttp__internal__n_invoke_store_method_1;
3911 }
3912 case kMatchPause: {
3913 return s_n_llhttp__internal__n_start_req_23;
3914 }
3915 case kMatchMismatch: {
3916 goto s_n_llhttp__internal__n_error_53;
3917 }
3918 }
3919 /* UNREACHABLE */;
3920 abort();
3921 }
3922 case s_n_llhttp__internal__n_start_req_24:
3923 s_n_llhttp__internal__n_start_req_24: {
3924 llparse_match_t match_seq;
3925
3926 if (p == endp) {
3927 return s_n_llhttp__internal__n_start_req_24;
3928 }
3929 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob31, 6);
3930 p = match_seq.current;
3931 switch (match_seq.status) {
3932 case kMatchComplete: {
3933 p++;
3934 match = 6;
3935 goto s_n_llhttp__internal__n_invoke_store_method_1;
3936 }
3937 case kMatchPause: {
3938 return s_n_llhttp__internal__n_start_req_24;
3939 }
3940 case kMatchMismatch: {
3941 goto s_n_llhttp__internal__n_error_53;
3942 }
3943 }
3944 /* UNREACHABLE */;
3945 abort();
3946 }
3947 case s_n_llhttp__internal__n_start_req_26:
3948 s_n_llhttp__internal__n_start_req_26: {
3949 llparse_match_t match_seq;
3950
3951 if (p == endp) {
3952 return s_n_llhttp__internal__n_start_req_26;
3953 }
3954 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob32, 3);
3955 p = match_seq.current;
3956 switch (match_seq.status) {
3957 case kMatchComplete: {
3958 p++;
3959 match = 28;
3960 goto s_n_llhttp__internal__n_invoke_store_method_1;
3961 }
3962 case kMatchPause: {
3963 return s_n_llhttp__internal__n_start_req_26;
3964 }
3965 case kMatchMismatch: {
3966 goto s_n_llhttp__internal__n_error_53;
3967 }
3968 }
3969 /* UNREACHABLE */;
3970 abort();
3971 }
3972 case s_n_llhttp__internal__n_start_req_27:
3973 s_n_llhttp__internal__n_start_req_27: {
3974 llparse_match_t match_seq;
3975
3976 if (p == endp) {
3977 return s_n_llhttp__internal__n_start_req_27;
3978 }
3979 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob33, 2);
3980 p = match_seq.current;
3981 switch (match_seq.status) {
3982 case kMatchComplete: {
3983 p++;
3984 match = 3;
3985 goto s_n_llhttp__internal__n_invoke_store_method_1;
3986 }
3987 case kMatchPause: {
3988 return s_n_llhttp__internal__n_start_req_27;
3989 }
3990 case kMatchMismatch: {
3991 goto s_n_llhttp__internal__n_error_53;
3992 }
3993 }
3994 /* UNREACHABLE */;
3995 abort();
3996 }
3997 case s_n_llhttp__internal__n_start_req_31:
3998 s_n_llhttp__internal__n_start_req_31: {
3999 llparse_match_t match_seq;
4000
4001 if (p == endp) {
4002 return s_n_llhttp__internal__n_start_req_31;
4003 }
4004 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob34, 3);
4005 p = match_seq.current;
4006 switch (match_seq.status) {
4007 case kMatchComplete: {
4008 p++;
4009 match = 12;
4010 goto s_n_llhttp__internal__n_invoke_store_method_1;
4011 }
4012 case kMatchPause: {
4013 return s_n_llhttp__internal__n_start_req_31;
4014 }
4015 case kMatchMismatch: {
4016 goto s_n_llhttp__internal__n_error_53;
4017 }
4018 }
4019 /* UNREACHABLE */;
4020 abort();
4021 }
4022 case s_n_llhttp__internal__n_start_req_32:
4023 s_n_llhttp__internal__n_start_req_32: {
4024 llparse_match_t match_seq;
4025
4026 if (p == endp) {
4027 return s_n_llhttp__internal__n_start_req_32;
4028 }
4029 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob35, 4);
4030 p = match_seq.current;
4031 switch (match_seq.status) {
4032 case kMatchComplete: {
4033 p++;
4034 match = 13;
4035 goto s_n_llhttp__internal__n_invoke_store_method_1;
4036 }
4037 case kMatchPause: {
4038 return s_n_llhttp__internal__n_start_req_32;
4039 }
4040 case kMatchMismatch: {
4041 goto s_n_llhttp__internal__n_error_53;
4042 }
4043 }
4044 /* UNREACHABLE */;
4045 abort();
4046 }
4047 case s_n_llhttp__internal__n_start_req_30:
4048 s_n_llhttp__internal__n_start_req_30: {
4049 if (p == endp) {
4050 return s_n_llhttp__internal__n_start_req_30;
4051 }
4052 switch (*p) {
4053 case 'F': {
4054 p++;
4055 goto s_n_llhttp__internal__n_start_req_31;
4056 }
4057 case 'P': {
4058 p++;
4059 goto s_n_llhttp__internal__n_start_req_32;
4060 }
4061 default: {
4062 goto s_n_llhttp__internal__n_error_53;
4063 }
4064 }
4065 /* UNREACHABLE */;
4066 abort();
4067 }
4068 case s_n_llhttp__internal__n_start_req_29:
4069 s_n_llhttp__internal__n_start_req_29: {
4070 if (p == endp) {
4071 return s_n_llhttp__internal__n_start_req_29;
4072 }
4073 switch (*p) {
4074 case 'P': {
4075 p++;
4076 goto s_n_llhttp__internal__n_start_req_30;
4077 }
4078 default: {
4079 goto s_n_llhttp__internal__n_error_53;
4080 }
4081 }
4082 /* UNREACHABLE */;
4083 abort();
4084 }
4085 case s_n_llhttp__internal__n_start_req_28:
4086 s_n_llhttp__internal__n_start_req_28: {
4087 if (p == endp) {
4088 return s_n_llhttp__internal__n_start_req_28;
4089 }
4090 switch (*p) {
4091 case 'I': {
4092 p++;
4093 match = 34;
4094 goto s_n_llhttp__internal__n_invoke_store_method_1;
4095 }
4096 case 'O': {
4097 p++;
4098 goto s_n_llhttp__internal__n_start_req_29;
4099 }
4100 default: {
4101 goto s_n_llhttp__internal__n_error_53;
4102 }
4103 }
4104 /* UNREACHABLE */;
4105 abort();
4106 }
4107 case s_n_llhttp__internal__n_start_req_34:
4108 s_n_llhttp__internal__n_start_req_34: {
4109 llparse_match_t match_seq;
4110
4111 if (p == endp) {
4112 return s_n_llhttp__internal__n_start_req_34;
4113 }
4114 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob36, 2);
4115 p = match_seq.current;
4116 switch (match_seq.status) {
4117 case kMatchComplete: {
4118 p++;
4119 match = 29;
4120 goto s_n_llhttp__internal__n_invoke_store_method_1;
4121 }
4122 case kMatchPause: {
4123 return s_n_llhttp__internal__n_start_req_34;
4124 }
4125 case kMatchMismatch: {
4126 goto s_n_llhttp__internal__n_error_53;
4127 }
4128 }
4129 /* UNREACHABLE */;
4130 abort();
4131 }
4132 case s_n_llhttp__internal__n_start_req_33:
4133 s_n_llhttp__internal__n_start_req_33: {
4134 if (p == endp) {
4135 return s_n_llhttp__internal__n_start_req_33;
4136 }
4137 switch (*p) {
4138 case 'R': {
4139 p++;
4140 goto s_n_llhttp__internal__n_start_req_34;
4141 }
4142 case 'T': {
4143 p++;
4144 match = 4;
4145 goto s_n_llhttp__internal__n_invoke_store_method_1;
4146 }
4147 default: {
4148 goto s_n_llhttp__internal__n_error_53;
4149 }
4150 }
4151 /* UNREACHABLE */;
4152 abort();
4153 }
4154 case s_n_llhttp__internal__n_start_req_25:
4155 s_n_llhttp__internal__n_start_req_25: {
4156 if (p == endp) {
4157 return s_n_llhttp__internal__n_start_req_25;
4158 }
4159 switch (*p) {
4160 case 'A': {
4161 p++;
4162 goto s_n_llhttp__internal__n_start_req_26;
4163 }
4164 case 'O': {
4165 p++;
4166 goto s_n_llhttp__internal__n_start_req_27;
4167 }
4168 case 'R': {
4169 p++;
4170 goto s_n_llhttp__internal__n_start_req_28;
4171 }
4172 case 'U': {
4173 p++;
4174 goto s_n_llhttp__internal__n_start_req_33;
4175 }
4176 default: {
4177 goto s_n_llhttp__internal__n_error_53;
4178 }
4179 }
4180 /* UNREACHABLE */;
4181 abort();
4182 }
4183 case s_n_llhttp__internal__n_start_req_37:
4184 s_n_llhttp__internal__n_start_req_37: {
4185 llparse_match_t match_seq;
4186
4187 if (p == endp) {
4188 return s_n_llhttp__internal__n_start_req_37;
4189 }
4190 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob37, 3);
4191 p = match_seq.current;
4192 switch (match_seq.status) {
4193 case kMatchComplete: {
4194 p++;
4195 match = 17;
4196 goto s_n_llhttp__internal__n_invoke_store_method_1;
4197 }
4198 case kMatchPause: {
4199 return s_n_llhttp__internal__n_start_req_37;
4200 }
4201 case kMatchMismatch: {
4202 goto s_n_llhttp__internal__n_error_53;
4203 }
4204 }
4205 /* UNREACHABLE */;
4206 abort();
4207 }
4208 case s_n_llhttp__internal__n_start_req_38:
4209 s_n_llhttp__internal__n_start_req_38: {
4210 llparse_match_t match_seq;
4211
4212 if (p == endp) {
4213 return s_n_llhttp__internal__n_start_req_38;
4214 }
4215 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob38, 3);
4216 p = match_seq.current;
4217 switch (match_seq.status) {
4218 case kMatchComplete: {
4219 p++;
4220 match = 20;
4221 goto s_n_llhttp__internal__n_invoke_store_method_1;
4222 }
4223 case kMatchPause: {
4224 return s_n_llhttp__internal__n_start_req_38;
4225 }
4226 case kMatchMismatch: {
4227 goto s_n_llhttp__internal__n_error_53;
4228 }
4229 }
4230 /* UNREACHABLE */;
4231 abort();
4232 }
4233 case s_n_llhttp__internal__n_start_req_36:
4234 s_n_llhttp__internal__n_start_req_36: {
4235 if (p == endp) {
4236 return s_n_llhttp__internal__n_start_req_36;
4237 }
4238 switch (*p) {
4239 case 'B': {
4240 p++;
4241 goto s_n_llhttp__internal__n_start_req_37;
4242 }
4243 case 'P': {
4244 p++;
4245 goto s_n_llhttp__internal__n_start_req_38;
4246 }
4247 default: {
4248 goto s_n_llhttp__internal__n_error_53;
4249 }
4250 }
4251 /* UNREACHABLE */;
4252 abort();
4253 }
4254 case s_n_llhttp__internal__n_start_req_35:
4255 s_n_llhttp__internal__n_start_req_35: {
4256 if (p == endp) {
4257 return s_n_llhttp__internal__n_start_req_35;
4258 }
4259 switch (*p) {
4260 case 'E': {
4261 p++;
4262 goto s_n_llhttp__internal__n_start_req_36;
4263 }
4264 default: {
4265 goto s_n_llhttp__internal__n_error_53;
4266 }
4267 }
4268 /* UNREACHABLE */;
4269 abort();
4270 }
4271 case s_n_llhttp__internal__n_start_req_40:
4272 s_n_llhttp__internal__n_start_req_40: {
4273 llparse_match_t match_seq;
4274
4275 if (p == endp) {
4276 return s_n_llhttp__internal__n_start_req_40;
4277 }
4278 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob39, 4);
4279 p = match_seq.current;
4280 switch (match_seq.status) {
4281 case kMatchComplete: {
4282 p++;
4283 match = 14;
4284 goto s_n_llhttp__internal__n_invoke_store_method_1;
4285 }
4286 case kMatchPause: {
4287 return s_n_llhttp__internal__n_start_req_40;
4288 }
4289 case kMatchMismatch: {
4290 goto s_n_llhttp__internal__n_error_53;
4291 }
4292 }
4293 /* UNREACHABLE */;
4294 abort();
4295 }
4296 case s_n_llhttp__internal__n_start_req_41:
4297 s_n_llhttp__internal__n_start_req_41: {
4298 llparse_match_t match_seq;
4299
4300 if (p == endp) {
4301 return s_n_llhttp__internal__n_start_req_41;
4302 }
4303 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob40, 4);
4304 p = match_seq.current;
4305 switch (match_seq.status) {
4306 case kMatchComplete: {
4307 p++;
4308 match = 33;
4309 goto s_n_llhttp__internal__n_invoke_store_method_1;
4310 }
4311 case kMatchPause: {
4312 return s_n_llhttp__internal__n_start_req_41;
4313 }
4314 case kMatchMismatch: {
4315 goto s_n_llhttp__internal__n_error_53;
4316 }
4317 }
4318 /* UNREACHABLE */;
4319 abort();
4320 }
4321 case s_n_llhttp__internal__n_start_req_42:
4322 s_n_llhttp__internal__n_start_req_42: {
4323 llparse_match_t match_seq;
4324
4325 if (p == endp) {
4326 return s_n_llhttp__internal__n_start_req_42;
4327 }
4328 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob41, 7);
4329 p = match_seq.current;
4330 switch (match_seq.status) {
4331 case kMatchComplete: {
4332 p++;
4333 match = 26;
4334 goto s_n_llhttp__internal__n_invoke_store_method_1;
4335 }
4336 case kMatchPause: {
4337 return s_n_llhttp__internal__n_start_req_42;
4338 }
4339 case kMatchMismatch: {
4340 goto s_n_llhttp__internal__n_error_53;
4341 }
4342 }
4343 /* UNREACHABLE */;
4344 abort();
4345 }
4346 case s_n_llhttp__internal__n_start_req_39:
4347 s_n_llhttp__internal__n_start_req_39: {
4348 if (p == endp) {
4349 return s_n_llhttp__internal__n_start_req_39;
4350 }
4351 switch (*p) {
4352 case 'E': {
4353 p++;
4354 goto s_n_llhttp__internal__n_start_req_40;
4355 }
4356 case 'O': {
4357 p++;
4358 goto s_n_llhttp__internal__n_start_req_41;
4359 }
4360 case 'U': {
4361 p++;
4362 goto s_n_llhttp__internal__n_start_req_42;
4363 }
4364 default: {
4365 goto s_n_llhttp__internal__n_error_53;
4366 }
4367 }
4368 /* UNREACHABLE */;
4369 abort();
4370 }
4371 case s_n_llhttp__internal__n_start_req_43:
4372 s_n_llhttp__internal__n_start_req_43: {
4373 llparse_match_t match_seq;
4374
4375 if (p == endp) {
4376 return s_n_llhttp__internal__n_start_req_43;
4377 }
4378 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob42, 4);
4379 p = match_seq.current;
4380 switch (match_seq.status) {
4381 case kMatchComplete: {
4382 p++;
4383 match = 7;
4384 goto s_n_llhttp__internal__n_invoke_store_method_1;
4385 }
4386 case kMatchPause: {
4387 return s_n_llhttp__internal__n_start_req_43;
4388 }
4389 case kMatchMismatch: {
4390 goto s_n_llhttp__internal__n_error_53;
4391 }
4392 }
4393 /* UNREACHABLE */;
4394 abort();
4395 }
4396 case s_n_llhttp__internal__n_start_req_46:
4397 s_n_llhttp__internal__n_start_req_46: {
4398 llparse_match_t match_seq;
4399
4400 if (p == endp) {
4401 return s_n_llhttp__internal__n_start_req_46;
4402 }
4403 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob43, 3);
4404 p = match_seq.current;
4405 switch (match_seq.status) {
4406 case kMatchComplete: {
4407 p++;
4408 match = 18;
4409 goto s_n_llhttp__internal__n_invoke_store_method_1;
4410 }
4411 case kMatchPause: {
4412 return s_n_llhttp__internal__n_start_req_46;
4413 }
4414 case kMatchMismatch: {
4415 goto s_n_llhttp__internal__n_error_53;
4416 }
4417 }
4418 /* UNREACHABLE */;
4419 abort();
4420 }
4421 case s_n_llhttp__internal__n_start_req_48:
4422 s_n_llhttp__internal__n_start_req_48: {
4423 llparse_match_t match_seq;
4424
4425 if (p == endp) {
4426 return s_n_llhttp__internal__n_start_req_48;
4427 }
4428 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob44, 2);
4429 p = match_seq.current;
4430 switch (match_seq.status) {
4431 case kMatchComplete: {
4432 p++;
4433 match = 32;
4434 goto s_n_llhttp__internal__n_invoke_store_method_1;
4435 }
4436 case kMatchPause: {
4437 return s_n_llhttp__internal__n_start_req_48;
4438 }
4439 case kMatchMismatch: {
4440 goto s_n_llhttp__internal__n_error_53;
4441 }
4442 }
4443 /* UNREACHABLE */;
4444 abort();
4445 }
4446 case s_n_llhttp__internal__n_start_req_49:
4447 s_n_llhttp__internal__n_start_req_49: {
4448 llparse_match_t match_seq;
4449
4450 if (p == endp) {
4451 return s_n_llhttp__internal__n_start_req_49;
4452 }
4453 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob45, 2);
4454 p = match_seq.current;
4455 switch (match_seq.status) {
4456 case kMatchComplete: {
4457 p++;
4458 match = 15;
4459 goto s_n_llhttp__internal__n_invoke_store_method_1;
4460 }
4461 case kMatchPause: {
4462 return s_n_llhttp__internal__n_start_req_49;
4463 }
4464 case kMatchMismatch: {
4465 goto s_n_llhttp__internal__n_error_53;
4466 }
4467 }
4468 /* UNREACHABLE */;
4469 abort();
4470 }
4471 case s_n_llhttp__internal__n_start_req_47:
4472 s_n_llhttp__internal__n_start_req_47: {
4473 if (p == endp) {
4474 return s_n_llhttp__internal__n_start_req_47;
4475 }
4476 switch (*p) {
4477 case 'I': {
4478 p++;
4479 goto s_n_llhttp__internal__n_start_req_48;
4480 }
4481 case 'O': {
4482 p++;
4483 goto s_n_llhttp__internal__n_start_req_49;
4484 }
4485 default: {
4486 goto s_n_llhttp__internal__n_error_53;
4487 }
4488 }
4489 /* UNREACHABLE */;
4490 abort();
4491 }
4492 case s_n_llhttp__internal__n_start_req_50:
4493 s_n_llhttp__internal__n_start_req_50: {
4494 llparse_match_t match_seq;
4495
4496 if (p == endp) {
4497 return s_n_llhttp__internal__n_start_req_50;
4498 }
4499 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob46, 8);
4500 p = match_seq.current;
4501 switch (match_seq.status) {
4502 case kMatchComplete: {
4503 p++;
4504 match = 27;
4505 goto s_n_llhttp__internal__n_invoke_store_method_1;
4506 }
4507 case kMatchPause: {
4508 return s_n_llhttp__internal__n_start_req_50;
4509 }
4510 case kMatchMismatch: {
4511 goto s_n_llhttp__internal__n_error_53;
4512 }
4513 }
4514 /* UNREACHABLE */;
4515 abort();
4516 }
4517 case s_n_llhttp__internal__n_start_req_45:
4518 s_n_llhttp__internal__n_start_req_45: {
4519 if (p == endp) {
4520 return s_n_llhttp__internal__n_start_req_45;
4521 }
4522 switch (*p) {
4523 case 'B': {
4524 p++;
4525 goto s_n_llhttp__internal__n_start_req_46;
4526 }
4527 case 'L': {
4528 p++;
4529 goto s_n_llhttp__internal__n_start_req_47;
4530 }
4531 case 'S': {
4532 p++;
4533 goto s_n_llhttp__internal__n_start_req_50;
4534 }
4535 default: {
4536 goto s_n_llhttp__internal__n_error_53;
4537 }
4538 }
4539 /* UNREACHABLE */;
4540 abort();
4541 }
4542 case s_n_llhttp__internal__n_start_req_44:
4543 s_n_llhttp__internal__n_start_req_44: {
4544 if (p == endp) {
4545 return s_n_llhttp__internal__n_start_req_44;
4546 }
4547 switch (*p) {
4548 case 'N': {
4549 p++;
4550 goto s_n_llhttp__internal__n_start_req_45;
4551 }
4552 default: {
4553 goto s_n_llhttp__internal__n_error_53;
4554 }
4555 }
4556 /* UNREACHABLE */;
4557 abort();
4558 }
4559 case s_n_llhttp__internal__n_start_req:
4560 s_n_llhttp__internal__n_start_req: {
4561 if (p == endp) {
4562 return s_n_llhttp__internal__n_start_req;
4563 }
4564 switch (*p) {
4565 case 'A': {
4566 p++;
4567 goto s_n_llhttp__internal__n_start_req_1;
4568 }
4569 case 'B': {
4570 p++;
4571 goto s_n_llhttp__internal__n_start_req_2;
4572 }
4573 case 'C': {
4574 p++;
4575 goto s_n_llhttp__internal__n_start_req_3;
4576 }
4577 case 'D': {
4578 p++;
4579 goto s_n_llhttp__internal__n_start_req_8;
4580 }
4581 case 'G': {
4582 p++;
4583 goto s_n_llhttp__internal__n_start_req_9;
4584 }
4585 case 'H': {
4586 p++;
4587 goto s_n_llhttp__internal__n_start_req_10;
4588 }
4589 case 'L': {
4590 p++;
4591 goto s_n_llhttp__internal__n_start_req_11;
4592 }
4593 case 'M': {
4594 p++;
4595 goto s_n_llhttp__internal__n_start_req_14;
4596 }
4597 case 'N': {
4598 p++;
4599 goto s_n_llhttp__internal__n_start_req_23;
4600 }
4601 case 'O': {
4602 p++;
4603 goto s_n_llhttp__internal__n_start_req_24;
4604 }
4605 case 'P': {
4606 p++;
4607 goto s_n_llhttp__internal__n_start_req_25;
4608 }
4609 case 'R': {
4610 p++;
4611 goto s_n_llhttp__internal__n_start_req_35;
4612 }
4613 case 'S': {
4614 p++;
4615 goto s_n_llhttp__internal__n_start_req_39;
4616 }
4617 case 'T': {
4618 p++;
4619 goto s_n_llhttp__internal__n_start_req_43;
4620 }
4621 case 'U': {
4622 p++;
4623 goto s_n_llhttp__internal__n_start_req_44;
4624 }
4625 default: {
4626 goto s_n_llhttp__internal__n_error_53;
4627 }
4628 }
4629 /* UNREACHABLE */;
4630 abort();
4631 }
4632 case s_n_llhttp__internal__n_res_line_almost_done:
4633 s_n_llhttp__internal__n_res_line_almost_done: {
4634 if (p == endp) {
4635 return s_n_llhttp__internal__n_res_line_almost_done;
4636 }
4637 switch (*p) {
4638 case 10: {
4639 p++;
4640 goto s_n_llhttp__internal__n_header_field_start;
4641 }
4642 default: {
4643 goto s_n_llhttp__internal__n_error_46;
4644 }
4645 }
4646 /* UNREACHABLE */;
4647 abort();
4648 }
4649 case s_n_llhttp__internal__n_res_status:
4650 s_n_llhttp__internal__n_res_status: {
4651 if (p == endp) {
4652 return s_n_llhttp__internal__n_res_status;
4653 }
4654 switch (*p) {
4655 case 10: {
4656 goto s_n_llhttp__internal__n_span_end_llhttp__on_status;
4657 }
4658 case 13: {
4659 goto s_n_llhttp__internal__n_span_end_llhttp__on_status_1;
4660 }
4661 default: {
4662 p++;
4663 goto s_n_llhttp__internal__n_res_status;
4664 }
4665 }
4666 /* UNREACHABLE */;
4667 abort();
4668 }
4669 case s_n_llhttp__internal__n_span_start_llhttp__on_status:
4670 s_n_llhttp__internal__n_span_start_llhttp__on_status: {
4671 if (p == endp) {
4672 return s_n_llhttp__internal__n_span_start_llhttp__on_status;
4673 }
4674 state->_span_pos0 = (void*) p;
4675 state->_span_cb0 = llhttp__on_status;
4676 goto s_n_llhttp__internal__n_res_status;
4677 /* UNREACHABLE */;
4678 abort();
4679 }
4680 case s_n_llhttp__internal__n_res_status_start:
4681 s_n_llhttp__internal__n_res_status_start: {
4682 if (p == endp) {
4683 return s_n_llhttp__internal__n_res_status_start;
4684 }
4685 switch (*p) {
4686 case 10: {
4687 p++;
4688 goto s_n_llhttp__internal__n_header_field_start;
4689 }
4690 case 13: {
4691 p++;
4692 goto s_n_llhttp__internal__n_res_line_almost_done;
4693 }
4694 default: {
4695 goto s_n_llhttp__internal__n_span_start_llhttp__on_status;
4696 }
4697 }
4698 /* UNREACHABLE */;
4699 abort();
4700 }
4701 case s_n_llhttp__internal__n_res_status_code_otherwise:
4702 s_n_llhttp__internal__n_res_status_code_otherwise: {
4703 if (p == endp) {
4704 return s_n_llhttp__internal__n_res_status_code_otherwise;
4705 }
4706 switch (*p) {
4707 case 10: {
4708 goto s_n_llhttp__internal__n_res_status_start;
4709 }
4710 case 13: {
4711 goto s_n_llhttp__internal__n_res_status_start;
4712 }
4713 case ' ': {
4714 p++;
4715 goto s_n_llhttp__internal__n_res_status_start;
4716 }
4717 default: {
4718 goto s_n_llhttp__internal__n_error_47;
4719 }
4720 }
4721 /* UNREACHABLE */;
4722 abort();
4723 }
4724 case s_n_llhttp__internal__n_res_status_code:
4725 s_n_llhttp__internal__n_res_status_code: {
4726 if (p == endp) {
4727 return s_n_llhttp__internal__n_res_status_code;
4728 }
4729 switch (*p) {
4730 case '0': {
4731 p++;
4732 match = 0;
4733 goto s_n_llhttp__internal__n_invoke_mul_add_status_code;
4734 }
4735 case '1': {
4736 p++;
4737 match = 1;
4738 goto s_n_llhttp__internal__n_invoke_mul_add_status_code;
4739 }
4740 case '2': {
4741 p++;
4742 match = 2;
4743 goto s_n_llhttp__internal__n_invoke_mul_add_status_code;
4744 }
4745 case '3': {
4746 p++;
4747 match = 3;
4748 goto s_n_llhttp__internal__n_invoke_mul_add_status_code;
4749 }
4750 case '4': {
4751 p++;
4752 match = 4;
4753 goto s_n_llhttp__internal__n_invoke_mul_add_status_code;
4754 }
4755 case '5': {
4756 p++;
4757 match = 5;
4758 goto s_n_llhttp__internal__n_invoke_mul_add_status_code;
4759 }
4760 case '6': {
4761 p++;
4762 match = 6;
4763 goto s_n_llhttp__internal__n_invoke_mul_add_status_code;
4764 }
4765 case '7': {
4766 p++;
4767 match = 7;
4768 goto s_n_llhttp__internal__n_invoke_mul_add_status_code;
4769 }
4770 case '8': {
4771 p++;
4772 match = 8;
4773 goto s_n_llhttp__internal__n_invoke_mul_add_status_code;
4774 }
4775 case '9': {
4776 p++;
4777 match = 9;
4778 goto s_n_llhttp__internal__n_invoke_mul_add_status_code;
4779 }
4780 default: {
4781 goto s_n_llhttp__internal__n_res_status_code_otherwise;
4782 }
4783 }
4784 /* UNREACHABLE */;
4785 abort();
4786 }
4787 case s_n_llhttp__internal__n_res_http_end:
4788 s_n_llhttp__internal__n_res_http_end: {
4789 if (p == endp) {
4790 return s_n_llhttp__internal__n_res_http_end;
4791 }
4792 switch (*p) {
4793 case ' ': {
4794 p++;
4795 goto s_n_llhttp__internal__n_invoke_update_status_code;
4796 }
4797 default: {
4798 goto s_n_llhttp__internal__n_error_48;
4799 }
4800 }
4801 /* UNREACHABLE */;
4802 abort();
4803 }
4804 case s_n_llhttp__internal__n_res_http_minor:
4805 s_n_llhttp__internal__n_res_http_minor: {
4806 if (p == endp) {
4807 return s_n_llhttp__internal__n_res_http_minor;
4808 }
4809 switch (*p) {
4810 case '0': {
4811 p++;
4812 match = 0;
4813 goto s_n_llhttp__internal__n_invoke_store_http_minor_1;
4814 }
4815 case '1': {
4816 p++;
4817 match = 1;
4818 goto s_n_llhttp__internal__n_invoke_store_http_minor_1;
4819 }
4820 case '2': {
4821 p++;
4822 match = 2;
4823 goto s_n_llhttp__internal__n_invoke_store_http_minor_1;
4824 }
4825 case '3': {
4826 p++;
4827 match = 3;
4828 goto s_n_llhttp__internal__n_invoke_store_http_minor_1;
4829 }
4830 case '4': {
4831 p++;
4832 match = 4;
4833 goto s_n_llhttp__internal__n_invoke_store_http_minor_1;
4834 }
4835 case '5': {
4836 p++;
4837 match = 5;
4838 goto s_n_llhttp__internal__n_invoke_store_http_minor_1;
4839 }
4840 case '6': {
4841 p++;
4842 match = 6;
4843 goto s_n_llhttp__internal__n_invoke_store_http_minor_1;
4844 }
4845 case '7': {
4846 p++;
4847 match = 7;
4848 goto s_n_llhttp__internal__n_invoke_store_http_minor_1;
4849 }
4850 case '8': {
4851 p++;
4852 match = 8;
4853 goto s_n_llhttp__internal__n_invoke_store_http_minor_1;
4854 }
4855 case '9': {
4856 p++;
4857 match = 9;
4858 goto s_n_llhttp__internal__n_invoke_store_http_minor_1;
4859 }
4860 default: {
4861 goto s_n_llhttp__internal__n_error_49;
4862 }
4863 }
4864 /* UNREACHABLE */;
4865 abort();
4866 }
4867 case s_n_llhttp__internal__n_res_http_dot:
4868 s_n_llhttp__internal__n_res_http_dot: {
4869 if (p == endp) {
4870 return s_n_llhttp__internal__n_res_http_dot;
4871 }
4872 switch (*p) {
4873 case '.': {
4874 p++;
4875 goto s_n_llhttp__internal__n_res_http_minor;
4876 }
4877 default: {
4878 goto s_n_llhttp__internal__n_error_50;
4879 }
4880 }
4881 /* UNREACHABLE */;
4882 abort();
4883 }
4884 case s_n_llhttp__internal__n_res_http_major:
4885 s_n_llhttp__internal__n_res_http_major: {
4886 if (p == endp) {
4887 return s_n_llhttp__internal__n_res_http_major;
4888 }
4889 switch (*p) {
4890 case '0': {
4891 p++;
4892 match = 0;
4893 goto s_n_llhttp__internal__n_invoke_store_http_major_1;
4894 }
4895 case '1': {
4896 p++;
4897 match = 1;
4898 goto s_n_llhttp__internal__n_invoke_store_http_major_1;
4899 }
4900 case '2': {
4901 p++;
4902 match = 2;
4903 goto s_n_llhttp__internal__n_invoke_store_http_major_1;
4904 }
4905 case '3': {
4906 p++;
4907 match = 3;
4908 goto s_n_llhttp__internal__n_invoke_store_http_major_1;
4909 }
4910 case '4': {
4911 p++;
4912 match = 4;
4913 goto s_n_llhttp__internal__n_invoke_store_http_major_1;
4914 }
4915 case '5': {
4916 p++;
4917 match = 5;
4918 goto s_n_llhttp__internal__n_invoke_store_http_major_1;
4919 }
4920 case '6': {
4921 p++;
4922 match = 6;
4923 goto s_n_llhttp__internal__n_invoke_store_http_major_1;
4924 }
4925 case '7': {
4926 p++;
4927 match = 7;
4928 goto s_n_llhttp__internal__n_invoke_store_http_major_1;
4929 }
4930 case '8': {
4931 p++;
4932 match = 8;
4933 goto s_n_llhttp__internal__n_invoke_store_http_major_1;
4934 }
4935 case '9': {
4936 p++;
4937 match = 9;
4938 goto s_n_llhttp__internal__n_invoke_store_http_major_1;
4939 }
4940 default: {
4941 goto s_n_llhttp__internal__n_error_51;
4942 }
4943 }
4944 /* UNREACHABLE */;
4945 abort();
4946 }
4947 case s_n_llhttp__internal__n_start_res:
4948 s_n_llhttp__internal__n_start_res: {
4949 llparse_match_t match_seq;
4950
4951 if (p == endp) {
4952 return s_n_llhttp__internal__n_start_res;
4953 }
4954 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob47, 5);
4955 p = match_seq.current;
4956 switch (match_seq.status) {
4957 case kMatchComplete: {
4958 p++;
4959 goto s_n_llhttp__internal__n_res_http_major;
4960 }
4961 case kMatchPause: {
4962 return s_n_llhttp__internal__n_start_res;
4963 }
4964 case kMatchMismatch: {
4965 goto s_n_llhttp__internal__n_error_54;
4966 }
4967 }
4968 /* UNREACHABLE */;
4969 abort();
4970 }
4971 case s_n_llhttp__internal__n_req_or_res_method_2:
4972 s_n_llhttp__internal__n_req_or_res_method_2: {
4973 llparse_match_t match_seq;
4974
4975 if (p == endp) {
4976 return s_n_llhttp__internal__n_req_or_res_method_2;
4977 }
4978 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob48, 2);
4979 p = match_seq.current;
4980 switch (match_seq.status) {
4981 case kMatchComplete: {
4982 p++;
4983 match = 2;
4984 goto s_n_llhttp__internal__n_invoke_store_method;
4985 }
4986 case kMatchPause: {
4987 return s_n_llhttp__internal__n_req_or_res_method_2;
4988 }
4989 case kMatchMismatch: {
4990 goto s_n_llhttp__internal__n_error_52;
4991 }
4992 }
4993 /* UNREACHABLE */;
4994 abort();
4995 }
4996 case s_n_llhttp__internal__n_req_or_res_method_3:
4997 s_n_llhttp__internal__n_req_or_res_method_3: {
4998 llparse_match_t match_seq;
4999
5000 if (p == endp) {
5001 return s_n_llhttp__internal__n_req_or_res_method_3;
5002 }
5003 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob49, 3);
5004 p = match_seq.current;
5005 switch (match_seq.status) {
5006 case kMatchComplete: {
5007 p++;
5008 goto s_n_llhttp__internal__n_invoke_update_type_1;
5009 }
5010 case kMatchPause: {
5011 return s_n_llhttp__internal__n_req_or_res_method_3;
5012 }
5013 case kMatchMismatch: {
5014 goto s_n_llhttp__internal__n_error_52;
5015 }
5016 }
5017 /* UNREACHABLE */;
5018 abort();
5019 }
5020 case s_n_llhttp__internal__n_req_or_res_method_1:
5021 s_n_llhttp__internal__n_req_or_res_method_1: {
5022 if (p == endp) {
5023 return s_n_llhttp__internal__n_req_or_res_method_1;
5024 }
5025 switch (*p) {
5026 case 'E': {
5027 p++;
5028 goto s_n_llhttp__internal__n_req_or_res_method_2;
5029 }
5030 case 'T': {
5031 p++;
5032 goto s_n_llhttp__internal__n_req_or_res_method_3;
5033 }
5034 default: {
5035 goto s_n_llhttp__internal__n_error_52;
5036 }
5037 }
5038 /* UNREACHABLE */;
5039 abort();
5040 }
5041 case s_n_llhttp__internal__n_req_or_res_method:
5042 s_n_llhttp__internal__n_req_or_res_method: {
5043 if (p == endp) {
5044 return s_n_llhttp__internal__n_req_or_res_method;
5045 }
5046 switch (*p) {
5047 case 'H': {
5048 p++;
5049 goto s_n_llhttp__internal__n_req_or_res_method_1;
5050 }
5051 default: {
5052 goto s_n_llhttp__internal__n_error_52;
5053 }
5054 }
5055 /* UNREACHABLE */;
5056 abort();
5057 }
5058 case s_n_llhttp__internal__n_start_req_or_res:
5059 s_n_llhttp__internal__n_start_req_or_res: {
5060 if (p == endp) {
5061 return s_n_llhttp__internal__n_start_req_or_res;
5062 }
5063 switch (*p) {
5064 case 'H': {
5065 goto s_n_llhttp__internal__n_req_or_res_method;
5066 }
5067 default: {
5068 goto s_n_llhttp__internal__n_invoke_update_type_2;
5069 }
5070 }
5071 /* UNREACHABLE */;
5072 abort();
5073 }
5074 case s_n_llhttp__internal__n_invoke_load_type:
5075 s_n_llhttp__internal__n_invoke_load_type: {
5076 switch (llhttp__internal__c_load_type(state, p, endp)) {
5077 case 1:
5078 goto s_n_llhttp__internal__n_start_req;
5079 case 2:
5080 goto s_n_llhttp__internal__n_start_res;
5081 default:
5082 goto s_n_llhttp__internal__n_start_req_or_res;
5083 }
5084 /* UNREACHABLE */;
5085 abort();
5086 }
5087 case s_n_llhttp__internal__n_start:
5088 s_n_llhttp__internal__n_start: {
5089 if (p == endp) {
5090 return s_n_llhttp__internal__n_start;
5091 }
5092 switch (*p) {
5093 case 10: {
5094 p++;
5095 goto s_n_llhttp__internal__n_start;
5096 }
5097 case 13: {
5098 p++;
5099 goto s_n_llhttp__internal__n_start;
5100 }
5101 default: {
5102 goto s_n_llhttp__internal__n_invoke_update_finish;
5103 }
5104 }
5105 /* UNREACHABLE */;
5106 abort();
5107 }
5108 default:
5109 /* UNREACHABLE */
5110 abort();
5111 }
5112 s_n_llhttp__internal__n_error_1: {
5113 state->error = 0x7;
5114 state->reason = "Invalid characters in url (strict mode)";
5115 state->error_pos = (const char*) p;
5116 state->_current = (void*) (intptr_t) s_error;
5117 return s_error;
5118 /* UNREACHABLE */;
5119 abort();
5120 }
5121 s_n_llhttp__internal__n_error_40: {
5122 state->error = 0x7;
5123 state->reason = "Invalid characters in url";
5124 state->error_pos = (const char*) p;
5125 state->_current = (void*) (intptr_t) s_error;
5126 return s_error;
5127 /* UNREACHABLE */;
5128 abort();
5129 }
5130 s_n_llhttp__internal__n_invoke_update_finish_2: {
5131 switch (llhttp__internal__c_update_finish_1(state, p, endp)) {
5132 default:
5133 goto s_n_llhttp__internal__n_start;
5134 }
5135 /* UNREACHABLE */;
5136 abort();
5137 }
5138 s_n_llhttp__internal__n_error_4: {
5139 state->error = 0x5;
5140 state->reason = "Data after `Connection: close`";
5141 state->error_pos = (const char*) p;
5142 state->_current = (void*) (intptr_t) s_error;
5143 return s_error;
5144 /* UNREACHABLE */;
5145 abort();
5146 }
5147 s_n_llhttp__internal__n_invoke_update_finish_1: {
5148 switch (llhttp__internal__c_update_finish_1(state, p, endp)) {
5149 default:
5150 goto s_n_llhttp__internal__n_closed;
5151 }
5152 /* UNREACHABLE */;
5153 abort();
5154 }
5155 s_n_llhttp__internal__n_pause_5: {
5156 state->error = 0x15;
5157 state->reason = "on_message_complete pause";
5158 state->error_pos = (const char*) p;
5159 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_invoke_is_equal_upgrade;
5160 return s_error;
5161 /* UNREACHABLE */;
5162 abort();
5163 }
5164 s_n_llhttp__internal__n_error_13: {
5165 state->error = 0x12;
5166 state->reason = "`on_message_complete` callback error";
5167 state->error_pos = (const char*) p;
5168 state->_current = (void*) (intptr_t) s_error;
5169 return s_error;
5170 /* UNREACHABLE */;
5171 abort();
5172 }
5173 s_n_llhttp__internal__n_pause_7: {
5174 state->error = 0x15;
5175 state->reason = "on_chunk_complete pause";
5176 state->error_pos = (const char*) p;
5177 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_invoke_llhttp__on_message_complete_2;
5178 return s_error;
5179 /* UNREACHABLE */;
5180 abort();
5181 }
5182 s_n_llhttp__internal__n_error_17: {
5183 state->error = 0x14;
5184 state->reason = "`on_chunk_complete` callback error";
5185 state->error_pos = (const char*) p;
5186 state->_current = (void*) (intptr_t) s_error;
5187 return s_error;
5188 /* UNREACHABLE */;
5189 abort();
5190 }
5191 s_n_llhttp__internal__n_invoke_llhttp__on_chunk_complete_1: {
5192 switch (llhttp__on_chunk_complete(state, p, endp)) {
5193 case 0:
5194 goto s_n_llhttp__internal__n_invoke_llhttp__on_message_complete_2;
5195 case 21:
5196 goto s_n_llhttp__internal__n_pause_7;
5197 default:
5198 goto s_n_llhttp__internal__n_error_17;
5199 }
5200 /* UNREACHABLE */;
5201 abort();
5202 }
5203 s_n_llhttp__internal__n_error_15: {
5204 state->error = 0x4;
5205 state->reason = "Content-Length can't be present with Transfer-Encoding";
5206 state->error_pos = (const char*) p;
5207 state->_current = (void*) (intptr_t) s_error;
5208 return s_error;
5209 /* UNREACHABLE */;
5210 abort();
5211 }
5212 s_n_llhttp__internal__n_error_16: {
5213 state->error = 0x4;
5214 state->reason = "Content-Length can't be present with chunked encoding";
5215 state->error_pos = (const char*) p;
5216 state->_current = (void*) (intptr_t) s_error;
5217 return s_error;
5218 /* UNREACHABLE */;
5219 abort();
5220 }
5221 s_n_llhttp__internal__n_pause_2: {
5222 state->error = 0x15;
5223 state->reason = "on_message_complete pause";
5224 state->error_pos = (const char*) p;
5225 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_pause_1;
5226 return s_error;
5227 /* UNREACHABLE */;
5228 abort();
5229 }
5230 s_n_llhttp__internal__n_error_5: {
5231 state->error = 0x12;
5232 state->reason = "`on_message_complete` callback error";
5233 state->error_pos = (const char*) p;
5234 state->_current = (void*) (intptr_t) s_error;
5235 return s_error;
5236 /* UNREACHABLE */;
5237 abort();
5238 }
5239 s_n_llhttp__internal__n_invoke_llhttp__on_message_complete_1: {
5240 switch (llhttp__on_message_complete(state, p, endp)) {
5241 case 0:
5242 goto s_n_llhttp__internal__n_pause_1;
5243 case 21:
5244 goto s_n_llhttp__internal__n_pause_2;
5245 default:
5246 goto s_n_llhttp__internal__n_error_5;
5247 }
5248 /* UNREACHABLE */;
5249 abort();
5250 }
5251 s_n_llhttp__internal__n_error_11: {
5252 state->error = 0xc;
5253 state->reason = "Chunk size overflow";
5254 state->error_pos = (const char*) p;
5255 state->_current = (void*) (intptr_t) s_error;
5256 return s_error;
5257 /* UNREACHABLE */;
5258 abort();
5259 }
5260 s_n_llhttp__internal__n_pause_3: {
5261 state->error = 0x15;
5262 state->reason = "on_chunk_complete pause";
5263 state->error_pos = (const char*) p;
5264 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_invoke_update_content_length;
5265 return s_error;
5266 /* UNREACHABLE */;
5267 abort();
5268 }
5269 s_n_llhttp__internal__n_error_7: {
5270 state->error = 0x14;
5271 state->reason = "`on_chunk_complete` callback error";
5272 state->error_pos = (const char*) p;
5273 state->_current = (void*) (intptr_t) s_error;
5274 return s_error;
5275 /* UNREACHABLE */;
5276 abort();
5277 }
5278 s_n_llhttp__internal__n_invoke_llhttp__on_chunk_complete: {
5279 switch (llhttp__on_chunk_complete(state, p, endp)) {
5280 case 0:
5281 goto s_n_llhttp__internal__n_invoke_update_content_length;
5282 case 21:
5283 goto s_n_llhttp__internal__n_pause_3;
5284 default:
5285 goto s_n_llhttp__internal__n_error_7;
5286 }
5287 /* UNREACHABLE */;
5288 abort();
5289 }
5290 s_n_llhttp__internal__n_error_8: {
5291 state->error = 0x2;
5292 state->reason = "Expected CRLF after chunk";
5293 state->error_pos = (const char*) p;
5294 state->_current = (void*) (intptr_t) s_error;
5295 return s_error;
5296 /* UNREACHABLE */;
5297 abort();
5298 }
5299 s_n_llhttp__internal__n_span_end_llhttp__on_body: {
5300 const unsigned char* start;
5301 int err;
5302
5303 start = state->_span_pos0;
5304 state->_span_pos0 = NULL;
5305 err = llhttp__on_body(state, start, p);
5306 if (err != 0) {
5307 state->error = err;
5308 state->error_pos = (const char*) p;
5309 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_chunk_data_almost_done;
5310 return s_error;
5311 }
5312 goto s_n_llhttp__internal__n_chunk_data_almost_done;
5313 /* UNREACHABLE */;
5314 abort();
5315 }
5316 s_n_llhttp__internal__n_invoke_or_flags: {
5317 switch (llhttp__internal__c_or_flags(state, p, endp)) {
5318 default:
5319 goto s_n_llhttp__internal__n_header_field_start;
5320 }
5321 /* UNREACHABLE */;
5322 abort();
5323 }
5324 s_n_llhttp__internal__n_pause_4: {
5325 state->error = 0x15;
5326 state->reason = "on_chunk_header pause";
5327 state->error_pos = (const char*) p;
5328 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_invoke_is_equal_content_length;
5329 return s_error;
5330 /* UNREACHABLE */;
5331 abort();
5332 }
5333 s_n_llhttp__internal__n_error_6: {
5334 state->error = 0x13;
5335 state->reason = "`on_chunk_header` callback error";
5336 state->error_pos = (const char*) p;
5337 state->_current = (void*) (intptr_t) s_error;
5338 return s_error;
5339 /* UNREACHABLE */;
5340 abort();
5341 }
5342 s_n_llhttp__internal__n_invoke_llhttp__on_chunk_header: {
5343 switch (llhttp__on_chunk_header(state, p, endp)) {
5344 case 0:
5345 goto s_n_llhttp__internal__n_invoke_is_equal_content_length;
5346 case 21:
5347 goto s_n_llhttp__internal__n_pause_4;
5348 default:
5349 goto s_n_llhttp__internal__n_error_6;
5350 }
5351 /* UNREACHABLE */;
5352 abort();
5353 }
5354 s_n_llhttp__internal__n_error_9: {
5355 state->error = 0x2;
5356 state->reason = "Expected LF after chunk size";
5357 state->error_pos = (const char*) p;
5358 state->_current = (void*) (intptr_t) s_error;
5359 return s_error;
5360 /* UNREACHABLE */;
5361 abort();
5362 }
5363 s_n_llhttp__internal__n_error_10: {
5364 state->error = 0xc;
5365 state->reason = "Invalid character in chunk size";
5366 state->error_pos = (const char*) p;
5367 state->_current = (void*) (intptr_t) s_error;
5368 return s_error;
5369 /* UNREACHABLE */;
5370 abort();
5371 }
5372 s_n_llhttp__internal__n_invoke_mul_add_content_length: {
5373 switch (llhttp__internal__c_mul_add_content_length(state, p, endp, match)) {
5374 case 1:
5375 goto s_n_llhttp__internal__n_error_11;
5376 default:
5377 goto s_n_llhttp__internal__n_chunk_size;
5378 }
5379 /* UNREACHABLE */;
5380 abort();
5381 }
5382 s_n_llhttp__internal__n_error_12: {
5383 state->error = 0xc;
5384 state->reason = "Invalid character in chunk size";
5385 state->error_pos = (const char*) p;
5386 state->_current = (void*) (intptr_t) s_error;
5387 return s_error;
5388 /* UNREACHABLE */;
5389 abort();
5390 }
5391 s_n_llhttp__internal__n_span_end_llhttp__on_body_1: {
5392 const unsigned char* start;
5393 int err;
5394
5395 start = state->_span_pos0;
5396 state->_span_pos0 = NULL;
5397 err = llhttp__on_body(state, start, p);
5398 if (err != 0) {
5399 state->error = err;
5400 state->error_pos = (const char*) p;
5401 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_invoke_llhttp__on_message_complete_2;
5402 return s_error;
5403 }
5404 goto s_n_llhttp__internal__n_invoke_llhttp__on_message_complete_2;
5405 /* UNREACHABLE */;
5406 abort();
5407 }
5408 s_n_llhttp__internal__n_invoke_update_finish_3: {
5409 switch (llhttp__internal__c_update_finish_3(state, p, endp)) {
5410 default:
5411 goto s_n_llhttp__internal__n_span_start_llhttp__on_body_2;
5412 }
5413 /* UNREACHABLE */;
5414 abort();
5415 }
5416 s_n_llhttp__internal__n_error_14: {
5417 state->error = 0xf;
5418 state->reason = "Request has invalid `Transfer-Encoding`";
5419 state->error_pos = (const char*) p;
5420 state->_current = (void*) (intptr_t) s_error;
5421 return s_error;
5422 /* UNREACHABLE */;
5423 abort();
5424 }
5425 s_n_llhttp__internal__n_pause: {
5426 state->error = 0x15;
5427 state->reason = "on_message_complete pause";
5428 state->error_pos = (const char*) p;
5429 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_invoke_llhttp__after_message_complete;
5430 return s_error;
5431 /* UNREACHABLE */;
5432 abort();
5433 }
5434 s_n_llhttp__internal__n_error_3: {
5435 state->error = 0x12;
5436 state->reason = "`on_message_complete` callback error";
5437 state->error_pos = (const char*) p;
5438 state->_current = (void*) (intptr_t) s_error;
5439 return s_error;
5440 /* UNREACHABLE */;
5441 abort();
5442 }
5443 s_n_llhttp__internal__n_invoke_llhttp__on_message_complete: {
5444 switch (llhttp__on_message_complete(state, p, endp)) {
5445 case 0:
5446 goto s_n_llhttp__internal__n_invoke_llhttp__after_message_complete;
5447 case 21:
5448 goto s_n_llhttp__internal__n_pause;
5449 default:
5450 goto s_n_llhttp__internal__n_error_3;
5451 }
5452 /* UNREACHABLE */;
5453 abort();
5454 }
5455 s_n_llhttp__internal__n_invoke_or_flags_1: {
5456 switch (llhttp__internal__c_or_flags_1(state, p, endp)) {
5457 default:
5458 goto s_n_llhttp__internal__n_invoke_llhttp__after_headers_complete;
5459 }
5460 /* UNREACHABLE */;
5461 abort();
5462 }
5463 s_n_llhttp__internal__n_invoke_or_flags_2: {
5464 switch (llhttp__internal__c_or_flags_1(state, p, endp)) {
5465 default:
5466 goto s_n_llhttp__internal__n_invoke_llhttp__after_headers_complete;
5467 }
5468 /* UNREACHABLE */;
5469 abort();
5470 }
5471 s_n_llhttp__internal__n_invoke_update_upgrade: {
5472 switch (llhttp__internal__c_update_upgrade(state, p, endp)) {
5473 default:
5474 goto s_n_llhttp__internal__n_invoke_or_flags_2;
5475 }
5476 /* UNREACHABLE */;
5477 abort();
5478 }
5479 s_n_llhttp__internal__n_pause_6: {
5480 state->error = 0x15;
5481 state->reason = "Paused by on_headers_complete";
5482 state->error_pos = (const char*) p;
5483 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_invoke_llhttp__after_headers_complete;
5484 return s_error;
5485 /* UNREACHABLE */;
5486 abort();
5487 }
5488 s_n_llhttp__internal__n_error_2: {
5489 state->error = 0x11;
5490 state->reason = "User callback error";
5491 state->error_pos = (const char*) p;
5492 state->_current = (void*) (intptr_t) s_error;
5493 return s_error;
5494 /* UNREACHABLE */;
5495 abort();
5496 }
5497 s_n_llhttp__internal__n_invoke_llhttp__on_headers_complete: {
5498 switch (llhttp__on_headers_complete(state, p, endp)) {
5499 case 0:
5500 goto s_n_llhttp__internal__n_invoke_llhttp__after_headers_complete;
5501 case 1:
5502 goto s_n_llhttp__internal__n_invoke_or_flags_1;
5503 case 2:
5504 goto s_n_llhttp__internal__n_invoke_update_upgrade;
5505 case 21:
5506 goto s_n_llhttp__internal__n_pause_6;
5507 default:
5508 goto s_n_llhttp__internal__n_error_2;
5509 }
5510 /* UNREACHABLE */;
5511 abort();
5512 }
5513 s_n_llhttp__internal__n_invoke_llhttp__before_headers_complete: {
5514 switch (llhttp__before_headers_complete(state, p, endp)) {
5515 default:
5516 goto s_n_llhttp__internal__n_invoke_llhttp__on_headers_complete;
5517 }
5518 /* UNREACHABLE */;
5519 abort();
5520 }
5521 s_n_llhttp__internal__n_invoke_test_flags_3: {
5522 switch (llhttp__internal__c_test_flags_3(state, p, endp)) {
5523 case 1:
5524 goto s_n_llhttp__internal__n_error_16;
5525 default:
5526 goto s_n_llhttp__internal__n_invoke_llhttp__before_headers_complete;
5527 }
5528 /* UNREACHABLE */;
5529 abort();
5530 }
5531 s_n_llhttp__internal__n_invoke_test_flags_2: {
5532 switch (llhttp__internal__c_test_flags_2(state, p, endp)) {
5533 case 0:
5534 goto s_n_llhttp__internal__n_error_15;
5535 case 1:
5536 goto s_n_llhttp__internal__n_invoke_test_flags_3;
5537 default:
5538 goto s_n_llhttp__internal__n_invoke_llhttp__before_headers_complete;
5539 }
5540 /* UNREACHABLE */;
5541 abort();
5542 }
5543 s_n_llhttp__internal__n_invoke_test_flags_1: {
5544 switch (llhttp__internal__c_test_flags_1(state, p, endp)) {
5545 case 1:
5546 goto s_n_llhttp__internal__n_invoke_test_flags_2;
5547 default:
5548 goto s_n_llhttp__internal__n_invoke_llhttp__before_headers_complete;
5549 }
5550 /* UNREACHABLE */;
5551 abort();
5552 }
5553 s_n_llhttp__internal__n_invoke_test_flags: {
5554 switch (llhttp__internal__c_test_flags(state, p, endp)) {
5555 case 1:
5556 goto s_n_llhttp__internal__n_invoke_llhttp__on_chunk_complete_1;
5557 default:
5558 goto s_n_llhttp__internal__n_invoke_test_flags_1;
5559 }
5560 /* UNREACHABLE */;
5561 abort();
5562 }
5563 s_n_llhttp__internal__n_error_18: {
5564 state->error = 0x2;
5565 state->reason = "Expected LF after headers";
5566 state->error_pos = (const char*) p;
5567 state->_current = (void*) (intptr_t) s_error;
5568 return s_error;
5569 /* UNREACHABLE */;
5570 abort();
5571 }
5572 s_n_llhttp__internal__n_error_19: {
5573 state->error = 0xb;
5574 state->reason = "Empty Content-Length";
5575 state->error_pos = (const char*) p;
5576 state->_current = (void*) (intptr_t) s_error;
5577 return s_error;
5578 /* UNREACHABLE */;
5579 abort();
5580 }
5581 s_n_llhttp__internal__n_span_end_llhttp__on_header_value: {
5582 const unsigned char* start;
5583 int err;
5584
5585 start = state->_span_pos0;
5586 state->_span_pos0 = NULL;
5587 err = llhttp__on_header_value(state, start, p);
5588 if (err != 0) {
5589 state->error = err;
5590 state->error_pos = (const char*) p;
5591 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_header_field_start;
5592 return s_error;
5593 }
5594 goto s_n_llhttp__internal__n_header_field_start;
5595 /* UNREACHABLE */;
5596 abort();
5597 }
5598 s_n_llhttp__internal__n_invoke_update_header_state: {
5599 switch (llhttp__internal__c_update_header_state(state, p, endp)) {
5600 default:
5601 goto s_n_llhttp__internal__n_span_start_llhttp__on_header_value;
5602 }
5603 /* UNREACHABLE */;
5604 abort();
5605 }
5606 s_n_llhttp__internal__n_invoke_or_flags_3: {
5607 switch (llhttp__internal__c_or_flags_3(state, p, endp)) {
5608 default:
5609 goto s_n_llhttp__internal__n_invoke_update_header_state;
5610 }
5611 /* UNREACHABLE */;
5612 abort();
5613 }
5614 s_n_llhttp__internal__n_invoke_or_flags_4: {
5615 switch (llhttp__internal__c_or_flags_4(state, p, endp)) {
5616 default:
5617 goto s_n_llhttp__internal__n_invoke_update_header_state;
5618 }
5619 /* UNREACHABLE */;
5620 abort();
5621 }
5622 s_n_llhttp__internal__n_invoke_or_flags_5: {
5623 switch (llhttp__internal__c_or_flags_5(state, p, endp)) {
5624 default:
5625 goto s_n_llhttp__internal__n_invoke_update_header_state;
5626 }
5627 /* UNREACHABLE */;
5628 abort();
5629 }
5630 s_n_llhttp__internal__n_invoke_or_flags_6: {
5631 switch (llhttp__internal__c_or_flags_6(state, p, endp)) {
5632 default:
5633 goto s_n_llhttp__internal__n_span_start_llhttp__on_header_value;
5634 }
5635 /* UNREACHABLE */;
5636 abort();
5637 }
5638 s_n_llhttp__internal__n_invoke_load_header_state_1: {
5639 switch (llhttp__internal__c_load_header_state(state, p, endp)) {
5640 case 5:
5641 goto s_n_llhttp__internal__n_invoke_or_flags_3;
5642 case 6:
5643 goto s_n_llhttp__internal__n_invoke_or_flags_4;
5644 case 7:
5645 goto s_n_llhttp__internal__n_invoke_or_flags_5;
5646 case 8:
5647 goto s_n_llhttp__internal__n_invoke_or_flags_6;
5648 default:
5649 goto s_n_llhttp__internal__n_span_start_llhttp__on_header_value;
5650 }
5651 /* UNREACHABLE */;
5652 abort();
5653 }
5654 s_n_llhttp__internal__n_invoke_load_header_state: {
5655 switch (llhttp__internal__c_load_header_state(state, p, endp)) {
5656 case 2:
5657 goto s_n_llhttp__internal__n_error_19;
5658 default:
5659 goto s_n_llhttp__internal__n_invoke_load_header_state_1;
5660 }
5661 /* UNREACHABLE */;
5662 abort();
5663 }
5664 s_n_llhttp__internal__n_error_20: {
5665 state->error = 0x2;
5666 state->reason = "Expected LF after CR";
5667 state->error_pos = (const char*) p;
5668 state->_current = (void*) (intptr_t) s_error;
5669 return s_error;
5670 /* UNREACHABLE */;
5671 abort();
5672 }
5673 s_n_llhttp__internal__n_invoke_update_header_state_1: {
5674 switch (llhttp__internal__c_update_header_state(state, p, endp)) {
5675 default:
5676 goto s_n_llhttp__internal__n_header_field_start;
5677 }
5678 /* UNREACHABLE */;
5679 abort();
5680 }
5681 s_n_llhttp__internal__n_invoke_or_flags_7: {
5682 switch (llhttp__internal__c_or_flags_3(state, p, endp)) {
5683 default:
5684 goto s_n_llhttp__internal__n_invoke_update_header_state_1;
5685 }
5686 /* UNREACHABLE */;
5687 abort();
5688 }
5689 s_n_llhttp__internal__n_invoke_or_flags_8: {
5690 switch (llhttp__internal__c_or_flags_4(state, p, endp)) {
5691 default:
5692 goto s_n_llhttp__internal__n_invoke_update_header_state_1;
5693 }
5694 /* UNREACHABLE */;
5695 abort();
5696 }
5697 s_n_llhttp__internal__n_invoke_or_flags_9: {
5698 switch (llhttp__internal__c_or_flags_5(state, p, endp)) {
5699 default:
5700 goto s_n_llhttp__internal__n_invoke_update_header_state_1;
5701 }
5702 /* UNREACHABLE */;
5703 abort();
5704 }
5705 s_n_llhttp__internal__n_invoke_or_flags_10: {
5706 switch (llhttp__internal__c_or_flags_6(state, p, endp)) {
5707 default:
5708 goto s_n_llhttp__internal__n_header_field_start;
5709 }
5710 /* UNREACHABLE */;
5711 abort();
5712 }
5713 s_n_llhttp__internal__n_invoke_load_header_state_3: {
5714 switch (llhttp__internal__c_load_header_state(state, p, endp)) {
5715 case 5:
5716 goto s_n_llhttp__internal__n_invoke_or_flags_7;
5717 case 6:
5718 goto s_n_llhttp__internal__n_invoke_or_flags_8;
5719 case 7:
5720 goto s_n_llhttp__internal__n_invoke_or_flags_9;
5721 case 8:
5722 goto s_n_llhttp__internal__n_invoke_or_flags_10;
5723 default:
5724 goto s_n_llhttp__internal__n_header_field_start;
5725 }
5726 /* UNREACHABLE */;
5727 abort();
5728 }
5729 s_n_llhttp__internal__n_error_21: {
5730 state->error = 0x3;
5731 state->reason = "Missing expected LF after header value";
5732 state->error_pos = (const char*) p;
5733 state->_current = (void*) (intptr_t) s_error;
5734 return s_error;
5735 /* UNREACHABLE */;
5736 abort();
5737 }
5738 s_n_llhttp__internal__n_span_end_llhttp__on_header_value_1: {
5739 const unsigned char* start;
5740 int err;
5741
5742 start = state->_span_pos0;
5743 state->_span_pos0 = NULL;
5744 err = llhttp__on_header_value(state, start, p);
5745 if (err != 0) {
5746 state->error = err;
5747 state->error_pos = (const char*) p;
5748 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_header_value_almost_done;
5749 return s_error;
5750 }
5751 goto s_n_llhttp__internal__n_header_value_almost_done;
5752 /* UNREACHABLE */;
5753 abort();
5754 }
5755 s_n_llhttp__internal__n_span_end_llhttp__on_header_value_2: {
5756 const unsigned char* start;
5757 int err;
5758
5759 start = state->_span_pos0;
5760 state->_span_pos0 = NULL;
5761 err = llhttp__on_header_value(state, start, p);
5762 if (err != 0) {
5763 state->error = err;
5764 state->error_pos = (const char*) (p + 1);
5765 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_header_value_almost_done;
5766 return s_error;
5767 }
5768 p++;
5769 goto s_n_llhttp__internal__n_header_value_almost_done;
5770 /* UNREACHABLE */;
5771 abort();
5772 }
5773 s_n_llhttp__internal__n_span_end_llhttp__on_header_value_3: {
5774 const unsigned char* start;
5775 int err;
5776
5777 start = state->_span_pos0;
5778 state->_span_pos0 = NULL;
5779 err = llhttp__on_header_value(state, start, p);
5780 if (err != 0) {
5781 state->error = err;
5782 state->error_pos = (const char*) (p + 1);
5783 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_header_value_almost_done;
5784 return s_error;
5785 }
5786 p++;
5787 goto s_n_llhttp__internal__n_header_value_almost_done;
5788 /* UNREACHABLE */;
5789 abort();
5790 }
5791 s_n_llhttp__internal__n_error_22: {
5792 state->error = 0xa;
5793 state->reason = "Invalid header value char";
5794 state->error_pos = (const char*) p;
5795 state->_current = (void*) (intptr_t) s_error;
5796 return s_error;
5797 /* UNREACHABLE */;
5798 abort();
5799 }
5800 s_n_llhttp__internal__n_invoke_test_flags_4: {
5801 switch (llhttp__internal__c_test_flags_2(state, p, endp)) {
5802 case 1:
5803 goto s_n_llhttp__internal__n_header_value_lenient;
5804 default:
5805 goto s_n_llhttp__internal__n_error_22;
5806 }
5807 /* UNREACHABLE */;
5808 abort();
5809 }
5810 s_n_llhttp__internal__n_invoke_update_header_state_3: {
5811 switch (llhttp__internal__c_update_header_state(state, p, endp)) {
5812 default:
5813 goto s_n_llhttp__internal__n_header_value_connection;
5814 }
5815 /* UNREACHABLE */;
5816 abort();
5817 }
5818 s_n_llhttp__internal__n_invoke_or_flags_11: {
5819 switch (llhttp__internal__c_or_flags_3(state, p, endp)) {
5820 default:
5821 goto s_n_llhttp__internal__n_invoke_update_header_state_3;
5822 }
5823 /* UNREACHABLE */;
5824 abort();
5825 }
5826 s_n_llhttp__internal__n_invoke_or_flags_12: {
5827 switch (llhttp__internal__c_or_flags_4(state, p, endp)) {
5828 default:
5829 goto s_n_llhttp__internal__n_invoke_update_header_state_3;
5830 }
5831 /* UNREACHABLE */;
5832 abort();
5833 }
5834 s_n_llhttp__internal__n_invoke_or_flags_13: {
5835 switch (llhttp__internal__c_or_flags_5(state, p, endp)) {
5836 default:
5837 goto s_n_llhttp__internal__n_invoke_update_header_state_3;
5838 }
5839 /* UNREACHABLE */;
5840 abort();
5841 }
5842 s_n_llhttp__internal__n_invoke_or_flags_14: {
5843 switch (llhttp__internal__c_or_flags_6(state, p, endp)) {
5844 default:
5845 goto s_n_llhttp__internal__n_header_value_connection;
5846 }
5847 /* UNREACHABLE */;
5848 abort();
5849 }
5850 s_n_llhttp__internal__n_invoke_load_header_state_4: {
5851 switch (llhttp__internal__c_load_header_state(state, p, endp)) {
5852 case 5:
5853 goto s_n_llhttp__internal__n_invoke_or_flags_11;
5854 case 6:
5855 goto s_n_llhttp__internal__n_invoke_or_flags_12;
5856 case 7:
5857 goto s_n_llhttp__internal__n_invoke_or_flags_13;
5858 case 8:
5859 goto s_n_llhttp__internal__n_invoke_or_flags_14;
5860 default:
5861 goto s_n_llhttp__internal__n_header_value_connection;
5862 }
5863 /* UNREACHABLE */;
5864 abort();
5865 }
5866 s_n_llhttp__internal__n_invoke_update_header_state_4: {
5867 switch (llhttp__internal__c_update_header_state_4(state, p, endp)) {
5868 default:
5869 goto s_n_llhttp__internal__n_header_value_connection_token;
5870 }
5871 /* UNREACHABLE */;
5872 abort();
5873 }
5874 s_n_llhttp__internal__n_invoke_update_header_state_2: {
5875 switch (llhttp__internal__c_update_header_state_2(state, p, endp)) {
5876 default:
5877 goto s_n_llhttp__internal__n_header_value_connection_ws;
5878 }
5879 /* UNREACHABLE */;
5880 abort();
5881 }
5882 s_n_llhttp__internal__n_invoke_update_header_state_5: {
5883 switch (llhttp__internal__c_update_header_state_5(state, p, endp)) {
5884 default:
5885 goto s_n_llhttp__internal__n_header_value_connection_ws;
5886 }
5887 /* UNREACHABLE */;
5888 abort();
5889 }
5890 s_n_llhttp__internal__n_invoke_update_header_state_6: {
5891 switch (llhttp__internal__c_update_header_state_6(state, p, endp)) {
5892 default:
5893 goto s_n_llhttp__internal__n_header_value_connection_ws;
5894 }
5895 /* UNREACHABLE */;
5896 abort();
5897 }
5898 s_n_llhttp__internal__n_span_end_llhttp__on_header_value_4: {
5899 const unsigned char* start;
5900 int err;
5901
5902 start = state->_span_pos0;
5903 state->_span_pos0 = NULL;
5904 err = llhttp__on_header_value(state, start, p);
5905 if (err != 0) {
5906 state->error = err;
5907 state->error_pos = (const char*) p;
5908 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_24;
5909 return s_error;
5910 }
5911 goto s_n_llhttp__internal__n_error_24;
5912 /* UNREACHABLE */;
5913 abort();
5914 }
5915 s_n_llhttp__internal__n_invoke_mul_add_content_length_1: {
5916 switch (llhttp__internal__c_mul_add_content_length_1(state, p, endp, match)) {
5917 case 1:
5918 goto s_n_llhttp__internal__n_span_end_llhttp__on_header_value_4;
5919 default:
5920 goto s_n_llhttp__internal__n_header_value_content_length;
5921 }
5922 /* UNREACHABLE */;
5923 abort();
5924 }
5925 s_n_llhttp__internal__n_invoke_or_flags_15: {
5926 switch (llhttp__internal__c_or_flags_15(state, p, endp)) {
5927 default:
5928 goto s_n_llhttp__internal__n_header_value_otherwise;
5929 }
5930 /* UNREACHABLE */;
5931 abort();
5932 }
5933 s_n_llhttp__internal__n_span_end_llhttp__on_header_value_5: {
5934 const unsigned char* start;
5935 int err;
5936
5937 start = state->_span_pos0;
5938 state->_span_pos0 = NULL;
5939 err = llhttp__on_header_value(state, start, p);
5940 if (err != 0) {
5941 state->error = err;
5942 state->error_pos = (const char*) p;
5943 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_25;
5944 return s_error;
5945 }
5946 goto s_n_llhttp__internal__n_error_25;
5947 /* UNREACHABLE */;
5948 abort();
5949 }
5950 s_n_llhttp__internal__n_error_23: {
5951 state->error = 0x4;
5952 state->reason = "Duplicate Content-Length";
5953 state->error_pos = (const char*) p;
5954 state->_current = (void*) (intptr_t) s_error;
5955 return s_error;
5956 /* UNREACHABLE */;
5957 abort();
5958 }
5959 s_n_llhttp__internal__n_invoke_test_flags_5: {
5960 switch (llhttp__internal__c_test_flags_5(state, p, endp)) {
5961 case 0:
5962 goto s_n_llhttp__internal__n_header_value_content_length;
5963 default:
5964 goto s_n_llhttp__internal__n_error_23;
5965 }
5966 /* UNREACHABLE */;
5967 abort();
5968 }
5969 s_n_llhttp__internal__n_invoke_update_header_state_7: {
5970 switch (llhttp__internal__c_update_header_state_7(state, p, endp)) {
5971 default:
5972 goto s_n_llhttp__internal__n_header_value_otherwise;
5973 }
5974 /* UNREACHABLE */;
5975 abort();
5976 }
5977 s_n_llhttp__internal__n_invoke_update_header_state_8: {
5978 switch (llhttp__internal__c_update_header_state_4(state, p, endp)) {
5979 default:
5980 goto s_n_llhttp__internal__n_header_value;
5981 }
5982 /* UNREACHABLE */;
5983 abort();
5984 }
5985 s_n_llhttp__internal__n_invoke_and_flags: {
5986 switch (llhttp__internal__c_and_flags(state, p, endp)) {
5987 default:
5988 goto s_n_llhttp__internal__n_header_value_te_chunked;
5989 }
5990 /* UNREACHABLE */;
5991 abort();
5992 }
5993 s_n_llhttp__internal__n_invoke_or_flags_16: {
5994 switch (llhttp__internal__c_or_flags_16(state, p, endp)) {
5995 default:
5996 goto s_n_llhttp__internal__n_invoke_and_flags;
5997 }
5998 /* UNREACHABLE */;
5999 abort();
6000 }
6001 s_n_llhttp__internal__n_invoke_or_flags_17: {
6002 switch (llhttp__internal__c_or_flags_17(state, p, endp)) {
6003 default:
6004 goto s_n_llhttp__internal__n_invoke_update_header_state_8;
6005 }
6006 /* UNREACHABLE */;
6007 abort();
6008 }
6009 s_n_llhttp__internal__n_invoke_load_header_state_2: {
6010 switch (llhttp__internal__c_load_header_state(state, p, endp)) {
6011 case 1:
6012 goto s_n_llhttp__internal__n_header_value_connection;
6013 case 2:
6014 goto s_n_llhttp__internal__n_invoke_test_flags_5;
6015 case 3:
6016 goto s_n_llhttp__internal__n_invoke_or_flags_16;
6017 case 4:
6018 goto s_n_llhttp__internal__n_invoke_or_flags_17;
6019 default:
6020 goto s_n_llhttp__internal__n_header_value;
6021 }
6022 /* UNREACHABLE */;
6023 abort();
6024 }
6025 s_n_llhttp__internal__n_span_end_llhttp__on_header_field: {
6026 const unsigned char* start;
6027 int err;
6028
6029 start = state->_span_pos0;
6030 state->_span_pos0 = NULL;
6031 err = llhttp__on_header_field(state, start, p);
6032 if (err != 0) {
6033 state->error = err;
6034 state->error_pos = (const char*) (p + 1);
6035 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_header_value_discard_ws;
6036 return s_error;
6037 }
6038 p++;
6039 goto s_n_llhttp__internal__n_header_value_discard_ws;
6040 /* UNREACHABLE */;
6041 abort();
6042 }
6043 s_n_llhttp__internal__n_span_end_llhttp__on_header_field_1: {
6044 const unsigned char* start;
6045 int err;
6046
6047 start = state->_span_pos0;
6048 state->_span_pos0 = NULL;
6049 err = llhttp__on_header_field(state, start, p);
6050 if (err != 0) {
6051 state->error = err;
6052 state->error_pos = (const char*) (p + 1);
6053 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_header_value_discard_ws;
6054 return s_error;
6055 }
6056 p++;
6057 goto s_n_llhttp__internal__n_header_value_discard_ws;
6058 /* UNREACHABLE */;
6059 abort();
6060 }
6061 s_n_llhttp__internal__n_error_26: {
6062 state->error = 0xa;
6063 state->reason = "Invalid header token";
6064 state->error_pos = (const char*) p;
6065 state->_current = (void*) (intptr_t) s_error;
6066 return s_error;
6067 /* UNREACHABLE */;
6068 abort();
6069 }
6070 s_n_llhttp__internal__n_invoke_update_header_state_9: {
6071 switch (llhttp__internal__c_update_header_state_4(state, p, endp)) {
6072 default:
6073 goto s_n_llhttp__internal__n_header_field_general;
6074 }
6075 /* UNREACHABLE */;
6076 abort();
6077 }
6078 s_n_llhttp__internal__n_invoke_store_header_state: {
6079 switch (llhttp__internal__c_store_header_state(state, p, endp, match)) {
6080 default:
6081 goto s_n_llhttp__internal__n_header_field_colon;
6082 }
6083 /* UNREACHABLE */;
6084 abort();
6085 }
6086 s_n_llhttp__internal__n_invoke_update_header_state_10: {
6087 switch (llhttp__internal__c_update_header_state_4(state, p, endp)) {
6088 default:
6089 goto s_n_llhttp__internal__n_header_field_general;
6090 }
6091 /* UNREACHABLE */;
6092 abort();
6093 }
6094 s_n_llhttp__internal__n_invoke_update_http_minor: {
6095 switch (llhttp__internal__c_update_http_minor(state, p, endp)) {
6096 default:
6097 goto s_n_llhttp__internal__n_header_field_start;
6098 }
6099 /* UNREACHABLE */;
6100 abort();
6101 }
6102 s_n_llhttp__internal__n_invoke_update_http_major: {
6103 switch (llhttp__internal__c_update_http_major(state, p, endp)) {
6104 default:
6105 goto s_n_llhttp__internal__n_invoke_update_http_minor;
6106 }
6107 /* UNREACHABLE */;
6108 abort();
6109 }
6110 s_n_llhttp__internal__n_span_end_llhttp__on_url_3: {
6111 const unsigned char* start;
6112 int err;
6113
6114 start = state->_span_pos0;
6115 state->_span_pos0 = NULL;
6116 err = llhttp__on_url(state, start, p);
6117 if (err != 0) {
6118 state->error = err;
6119 state->error_pos = (const char*) p;
6120 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_url_skip_to_http09;
6121 return s_error;
6122 }
6123 goto s_n_llhttp__internal__n_url_skip_to_http09;
6124 /* UNREACHABLE */;
6125 abort();
6126 }
6127 s_n_llhttp__internal__n_error_27: {
6128 state->error = 0x7;
6129 state->reason = "Expected CRLF";
6130 state->error_pos = (const char*) p;
6131 state->_current = (void*) (intptr_t) s_error;
6132 return s_error;
6133 /* UNREACHABLE */;
6134 abort();
6135 }
6136 s_n_llhttp__internal__n_span_end_llhttp__on_url_4: {
6137 const unsigned char* start;
6138 int err;
6139
6140 start = state->_span_pos0;
6141 state->_span_pos0 = NULL;
6142 err = llhttp__on_url(state, start, p);
6143 if (err != 0) {
6144 state->error = err;
6145 state->error_pos = (const char*) p;
6146 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_url_skip_lf_to_http09;
6147 return s_error;
6148 }
6149 goto s_n_llhttp__internal__n_url_skip_lf_to_http09;
6150 /* UNREACHABLE */;
6151 abort();
6152 }
6153 s_n_llhttp__internal__n_error_28: {
6154 state->error = 0x9;
6155 state->reason = "Expected CRLF after version";
6156 state->error_pos = (const char*) p;
6157 state->_current = (void*) (intptr_t) s_error;
6158 return s_error;
6159 /* UNREACHABLE */;
6160 abort();
6161 }
6162 s_n_llhttp__internal__n_invoke_store_http_minor: {
6163 switch (llhttp__internal__c_store_http_minor(state, p, endp, match)) {
6164 default:
6165 goto s_n_llhttp__internal__n_req_http_end;
6166 }
6167 /* UNREACHABLE */;
6168 abort();
6169 }
6170 s_n_llhttp__internal__n_error_29: {
6171 state->error = 0x9;
6172 state->reason = "Invalid minor version";
6173 state->error_pos = (const char*) p;
6174 state->_current = (void*) (intptr_t) s_error;
6175 return s_error;
6176 /* UNREACHABLE */;
6177 abort();
6178 }
6179 s_n_llhttp__internal__n_error_30: {
6180 state->error = 0x9;
6181 state->reason = "Expected dot";
6182 state->error_pos = (const char*) p;
6183 state->_current = (void*) (intptr_t) s_error;
6184 return s_error;
6185 /* UNREACHABLE */;
6186 abort();
6187 }
6188 s_n_llhttp__internal__n_invoke_store_http_major: {
6189 switch (llhttp__internal__c_store_http_major(state, p, endp, match)) {
6190 default:
6191 goto s_n_llhttp__internal__n_req_http_dot;
6192 }
6193 /* UNREACHABLE */;
6194 abort();
6195 }
6196 s_n_llhttp__internal__n_error_31: {
6197 state->error = 0x9;
6198 state->reason = "Invalid major version";
6199 state->error_pos = (const char*) p;
6200 state->_current = (void*) (intptr_t) s_error;
6201 return s_error;
6202 /* UNREACHABLE */;
6203 abort();
6204 }
6205 s_n_llhttp__internal__n_error_33: {
6206 state->error = 0x8;
6207 state->reason = "Expected HTTP/";
6208 state->error_pos = (const char*) p;
6209 state->_current = (void*) (intptr_t) s_error;
6210 return s_error;
6211 /* UNREACHABLE */;
6212 abort();
6213 }
6214 s_n_llhttp__internal__n_error_32: {
6215 state->error = 0x8;
6216 state->reason = "Expected SOURCE method for ICE/x.x request";
6217 state->error_pos = (const char*) p;
6218 state->_current = (void*) (intptr_t) s_error;
6219 return s_error;
6220 /* UNREACHABLE */;
6221 abort();
6222 }
6223 s_n_llhttp__internal__n_invoke_is_equal_method_1: {
6224 switch (llhttp__internal__c_is_equal_method_1(state, p, endp)) {
6225 case 0:
6226 goto s_n_llhttp__internal__n_error_32;
6227 default:
6228 goto s_n_llhttp__internal__n_req_http_major;
6229 }
6230 /* UNREACHABLE */;
6231 abort();
6232 }
6233 s_n_llhttp__internal__n_span_end_llhttp__on_url_5: {
6234 const unsigned char* start;
6235 int err;
6236
6237 start = state->_span_pos0;
6238 state->_span_pos0 = NULL;
6239 err = llhttp__on_url(state, start, p);
6240 if (err != 0) {
6241 state->error = err;
6242 state->error_pos = (const char*) p;
6243 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_url_skip_to_http;
6244 return s_error;
6245 }
6246 goto s_n_llhttp__internal__n_url_skip_to_http;
6247 /* UNREACHABLE */;
6248 abort();
6249 }
6250 s_n_llhttp__internal__n_span_end_llhttp__on_url_6: {
6251 const unsigned char* start;
6252 int err;
6253
6254 start = state->_span_pos0;
6255 state->_span_pos0 = NULL;
6256 err = llhttp__on_url(state, start, p);
6257 if (err != 0) {
6258 state->error = err;
6259 state->error_pos = (const char*) p;
6260 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_url_skip_to_http09;
6261 return s_error;
6262 }
6263 goto s_n_llhttp__internal__n_url_skip_to_http09;
6264 /* UNREACHABLE */;
6265 abort();
6266 }
6267 s_n_llhttp__internal__n_span_end_llhttp__on_url_7: {
6268 const unsigned char* start;
6269 int err;
6270
6271 start = state->_span_pos0;
6272 state->_span_pos0 = NULL;
6273 err = llhttp__on_url(state, start, p);
6274 if (err != 0) {
6275 state->error = err;
6276 state->error_pos = (const char*) p;
6277 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_url_skip_lf_to_http09;
6278 return s_error;
6279 }
6280 goto s_n_llhttp__internal__n_url_skip_lf_to_http09;
6281 /* UNREACHABLE */;
6282 abort();
6283 }
6284 s_n_llhttp__internal__n_span_end_llhttp__on_url_8: {
6285 const unsigned char* start;
6286 int err;
6287
6288 start = state->_span_pos0;
6289 state->_span_pos0 = NULL;
6290 err = llhttp__on_url(state, start, p);
6291 if (err != 0) {
6292 state->error = err;
6293 state->error_pos = (const char*) p;
6294 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_url_skip_to_http;
6295 return s_error;
6296 }
6297 goto s_n_llhttp__internal__n_url_skip_to_http;
6298 /* UNREACHABLE */;
6299 abort();
6300 }
6301 s_n_llhttp__internal__n_error_34: {
6302 state->error = 0x7;
6303 state->reason = "Invalid char in url fragment start";
6304 state->error_pos = (const char*) p;
6305 state->_current = (void*) (intptr_t) s_error;
6306 return s_error;
6307 /* UNREACHABLE */;
6308 abort();
6309 }
6310 s_n_llhttp__internal__n_span_end_llhttp__on_url_9: {
6311 const unsigned char* start;
6312 int err;
6313
6314 start = state->_span_pos0;
6315 state->_span_pos0 = NULL;
6316 err = llhttp__on_url(state, start, p);
6317 if (err != 0) {
6318 state->error = err;
6319 state->error_pos = (const char*) p;
6320 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_url_skip_to_http09;
6321 return s_error;
6322 }
6323 goto s_n_llhttp__internal__n_url_skip_to_http09;
6324 /* UNREACHABLE */;
6325 abort();
6326 }
6327 s_n_llhttp__internal__n_span_end_llhttp__on_url_10: {
6328 const unsigned char* start;
6329 int err;
6330
6331 start = state->_span_pos0;
6332 state->_span_pos0 = NULL;
6333 err = llhttp__on_url(state, start, p);
6334 if (err != 0) {
6335 state->error = err;
6336 state->error_pos = (const char*) p;
6337 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_url_skip_lf_to_http09;
6338 return s_error;
6339 }
6340 goto s_n_llhttp__internal__n_url_skip_lf_to_http09;
6341 /* UNREACHABLE */;
6342 abort();
6343 }
6344 s_n_llhttp__internal__n_span_end_llhttp__on_url_11: {
6345 const unsigned char* start;
6346 int err;
6347
6348 start = state->_span_pos0;
6349 state->_span_pos0 = NULL;
6350 err = llhttp__on_url(state, start, p);
6351 if (err != 0) {
6352 state->error = err;
6353 state->error_pos = (const char*) p;
6354 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_url_skip_to_http;
6355 return s_error;
6356 }
6357 goto s_n_llhttp__internal__n_url_skip_to_http;
6358 /* UNREACHABLE */;
6359 abort();
6360 }
6361 s_n_llhttp__internal__n_error_35: {
6362 state->error = 0x7;
6363 state->reason = "Invalid char in url query";
6364 state->error_pos = (const char*) p;
6365 state->_current = (void*) (intptr_t) s_error;
6366 return s_error;
6367 /* UNREACHABLE */;
6368 abort();
6369 }
6370 s_n_llhttp__internal__n_error_36: {
6371 state->error = 0x7;
6372 state->reason = "Invalid char in url path";
6373 state->error_pos = (const char*) p;
6374 state->_current = (void*) (intptr_t) s_error;
6375 return s_error;
6376 /* UNREACHABLE */;
6377 abort();
6378 }
6379 s_n_llhttp__internal__n_span_end_llhttp__on_url: {
6380 const unsigned char* start;
6381 int err;
6382
6383 start = state->_span_pos0;
6384 state->_span_pos0 = NULL;
6385 err = llhttp__on_url(state, start, p);
6386 if (err != 0) {
6387 state->error = err;
6388 state->error_pos = (const char*) p;
6389 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_url_skip_to_http09;
6390 return s_error;
6391 }
6392 goto s_n_llhttp__internal__n_url_skip_to_http09;
6393 /* UNREACHABLE */;
6394 abort();
6395 }
6396 s_n_llhttp__internal__n_span_end_llhttp__on_url_1: {
6397 const unsigned char* start;
6398 int err;
6399
6400 start = state->_span_pos0;
6401 state->_span_pos0 = NULL;
6402 err = llhttp__on_url(state, start, p);
6403 if (err != 0) {
6404 state->error = err;
6405 state->error_pos = (const char*) p;
6406 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_url_skip_lf_to_http09;
6407 return s_error;
6408 }
6409 goto s_n_llhttp__internal__n_url_skip_lf_to_http09;
6410 /* UNREACHABLE */;
6411 abort();
6412 }
6413 s_n_llhttp__internal__n_span_end_llhttp__on_url_2: {
6414 const unsigned char* start;
6415 int err;
6416
6417 start = state->_span_pos0;
6418 state->_span_pos0 = NULL;
6419 err = llhttp__on_url(state, start, p);
6420 if (err != 0) {
6421 state->error = err;
6422 state->error_pos = (const char*) p;
6423 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_url_skip_to_http;
6424 return s_error;
6425 }
6426 goto s_n_llhttp__internal__n_url_skip_to_http;
6427 /* UNREACHABLE */;
6428 abort();
6429 }
6430 s_n_llhttp__internal__n_span_end_llhttp__on_url_12: {
6431 const unsigned char* start;
6432 int err;
6433
6434 start = state->_span_pos0;
6435 state->_span_pos0 = NULL;
6436 err = llhttp__on_url(state, start, p);
6437 if (err != 0) {
6438 state->error = err;
6439 state->error_pos = (const char*) p;
6440 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_url_skip_to_http09;
6441 return s_error;
6442 }
6443 goto s_n_llhttp__internal__n_url_skip_to_http09;
6444 /* UNREACHABLE */;
6445 abort();
6446 }
6447 s_n_llhttp__internal__n_span_end_llhttp__on_url_13: {
6448 const unsigned char* start;
6449 int err;
6450
6451 start = state->_span_pos0;
6452 state->_span_pos0 = NULL;
6453 err = llhttp__on_url(state, start, p);
6454 if (err != 0) {
6455 state->error = err;
6456 state->error_pos = (const char*) p;
6457 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_url_skip_lf_to_http09;
6458 return s_error;
6459 }
6460 goto s_n_llhttp__internal__n_url_skip_lf_to_http09;
6461 /* UNREACHABLE */;
6462 abort();
6463 }
6464 s_n_llhttp__internal__n_span_end_llhttp__on_url_14: {
6465 const unsigned char* start;
6466 int err;
6467
6468 start = state->_span_pos0;
6469 state->_span_pos0 = NULL;
6470 err = llhttp__on_url(state, start, p);
6471 if (err != 0) {
6472 state->error = err;
6473 state->error_pos = (const char*) p;
6474 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_url_skip_to_http;
6475 return s_error;
6476 }
6477 goto s_n_llhttp__internal__n_url_skip_to_http;
6478 /* UNREACHABLE */;
6479 abort();
6480 }
6481 s_n_llhttp__internal__n_error_37: {
6482 state->error = 0x7;
6483 state->reason = "Double @ in url";
6484 state->error_pos = (const char*) p;
6485 state->_current = (void*) (intptr_t) s_error;
6486 return s_error;
6487 /* UNREACHABLE */;
6488 abort();
6489 }
6490 s_n_llhttp__internal__n_error_38: {
6491 state->error = 0x7;
6492 state->reason = "Unexpected char in url server";
6493 state->error_pos = (const char*) p;
6494 state->_current = (void*) (intptr_t) s_error;
6495 return s_error;
6496 /* UNREACHABLE */;
6497 abort();
6498 }
6499 s_n_llhttp__internal__n_error_39: {
6500 state->error = 0x7;
6501 state->reason = "Unexpected char in url server";
6502 state->error_pos = (const char*) p;
6503 state->_current = (void*) (intptr_t) s_error;
6504 return s_error;
6505 /* UNREACHABLE */;
6506 abort();
6507 }
6508 s_n_llhttp__internal__n_error_41: {
6509 state->error = 0x7;
6510 state->reason = "Unexpected char in url schema";
6511 state->error_pos = (const char*) p;
6512 state->_current = (void*) (intptr_t) s_error;
6513 return s_error;
6514 /* UNREACHABLE */;
6515 abort();
6516 }
6517 s_n_llhttp__internal__n_error_42: {
6518 state->error = 0x7;
6519 state->reason = "Unexpected char in url schema";
6520 state->error_pos = (const char*) p;
6521 state->_current = (void*) (intptr_t) s_error;
6522 return s_error;
6523 /* UNREACHABLE */;
6524 abort();
6525 }
6526 s_n_llhttp__internal__n_error_43: {
6527 state->error = 0x7;
6528 state->reason = "Unexpected start char in url";
6529 state->error_pos = (const char*) p;
6530 state->_current = (void*) (intptr_t) s_error;
6531 return s_error;
6532 /* UNREACHABLE */;
6533 abort();
6534 }
6535 s_n_llhttp__internal__n_invoke_is_equal_method: {
6536 switch (llhttp__internal__c_is_equal_method(state, p, endp)) {
6537 case 0:
6538 goto s_n_llhttp__internal__n_url_entry_normal;
6539 default:
6540 goto s_n_llhttp__internal__n_url_entry_connect;
6541 }
6542 /* UNREACHABLE */;
6543 abort();
6544 }
6545 s_n_llhttp__internal__n_error_44: {
6546 state->error = 0x6;
6547 state->reason = "Expected space after method";
6548 state->error_pos = (const char*) p;
6549 state->_current = (void*) (intptr_t) s_error;
6550 return s_error;
6551 /* UNREACHABLE */;
6552 abort();
6553 }
6554 s_n_llhttp__internal__n_invoke_store_method_1: {
6555 switch (llhttp__internal__c_store_method(state, p, endp, match)) {
6556 default:
6557 goto s_n_llhttp__internal__n_req_first_space_before_url;
6558 }
6559 /* UNREACHABLE */;
6560 abort();
6561 }
6562 s_n_llhttp__internal__n_error_53: {
6563 state->error = 0x6;
6564 state->reason = "Invalid method encountered";
6565 state->error_pos = (const char*) p;
6566 state->_current = (void*) (intptr_t) s_error;
6567 return s_error;
6568 /* UNREACHABLE */;
6569 abort();
6570 }
6571 s_n_llhttp__internal__n_error_45: {
6572 state->error = 0xd;
6573 state->reason = "Response overflow";
6574 state->error_pos = (const char*) p;
6575 state->_current = (void*) (intptr_t) s_error;
6576 return s_error;
6577 /* UNREACHABLE */;
6578 abort();
6579 }
6580 s_n_llhttp__internal__n_invoke_mul_add_status_code: {
6581 switch (llhttp__internal__c_mul_add_status_code(state, p, endp, match)) {
6582 case 1:
6583 goto s_n_llhttp__internal__n_error_45;
6584 default:
6585 goto s_n_llhttp__internal__n_res_status_code;
6586 }
6587 /* UNREACHABLE */;
6588 abort();
6589 }
6590 s_n_llhttp__internal__n_error_46: {
6591 state->error = 0x2;
6592 state->reason = "Expected LF after CR";
6593 state->error_pos = (const char*) p;
6594 state->_current = (void*) (intptr_t) s_error;
6595 return s_error;
6596 /* UNREACHABLE */;
6597 abort();
6598 }
6599 s_n_llhttp__internal__n_span_end_llhttp__on_status: {
6600 const unsigned char* start;
6601 int err;
6602
6603 start = state->_span_pos0;
6604 state->_span_pos0 = NULL;
6605 err = llhttp__on_status(state, start, p);
6606 if (err != 0) {
6607 state->error = err;
6608 state->error_pos = (const char*) (p + 1);
6609 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_header_field_start;
6610 return s_error;
6611 }
6612 p++;
6613 goto s_n_llhttp__internal__n_header_field_start;
6614 /* UNREACHABLE */;
6615 abort();
6616 }
6617 s_n_llhttp__internal__n_span_end_llhttp__on_status_1: {
6618 const unsigned char* start;
6619 int err;
6620
6621 start = state->_span_pos0;
6622 state->_span_pos0 = NULL;
6623 err = llhttp__on_status(state, start, p);
6624 if (err != 0) {
6625 state->error = err;
6626 state->error_pos = (const char*) (p + 1);
6627 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_res_line_almost_done;
6628 return s_error;
6629 }
6630 p++;
6631 goto s_n_llhttp__internal__n_res_line_almost_done;
6632 /* UNREACHABLE */;
6633 abort();
6634 }
6635 s_n_llhttp__internal__n_error_47: {
6636 state->error = 0xd;
6637 state->reason = "Invalid response status";
6638 state->error_pos = (const char*) p;
6639 state->_current = (void*) (intptr_t) s_error;
6640 return s_error;
6641 /* UNREACHABLE */;
6642 abort();
6643 }
6644 s_n_llhttp__internal__n_invoke_update_status_code: {
6645 switch (llhttp__internal__c_update_status_code(state, p, endp)) {
6646 default:
6647 goto s_n_llhttp__internal__n_res_status_code;
6648 }
6649 /* UNREACHABLE */;
6650 abort();
6651 }
6652 s_n_llhttp__internal__n_error_48: {
6653 state->error = 0x9;
6654 state->reason = "Expected space after version";
6655 state->error_pos = (const char*) p;
6656 state->_current = (void*) (intptr_t) s_error;
6657 return s_error;
6658 /* UNREACHABLE */;
6659 abort();
6660 }
6661 s_n_llhttp__internal__n_invoke_store_http_minor_1: {
6662 switch (llhttp__internal__c_store_http_minor(state, p, endp, match)) {
6663 default:
6664 goto s_n_llhttp__internal__n_res_http_end;
6665 }
6666 /* UNREACHABLE */;
6667 abort();
6668 }
6669 s_n_llhttp__internal__n_error_49: {
6670 state->error = 0x9;
6671 state->reason = "Invalid minor version";
6672 state->error_pos = (const char*) p;
6673 state->_current = (void*) (intptr_t) s_error;
6674 return s_error;
6675 /* UNREACHABLE */;
6676 abort();
6677 }
6678 s_n_llhttp__internal__n_error_50: {
6679 state->error = 0x9;
6680 state->reason = "Expected dot";
6681 state->error_pos = (const char*) p;
6682 state->_current = (void*) (intptr_t) s_error;
6683 return s_error;
6684 /* UNREACHABLE */;
6685 abort();
6686 }
6687 s_n_llhttp__internal__n_invoke_store_http_major_1: {
6688 switch (llhttp__internal__c_store_http_major(state, p, endp, match)) {
6689 default:
6690 goto s_n_llhttp__internal__n_res_http_dot;
6691 }
6692 /* UNREACHABLE */;
6693 abort();
6694 }
6695 s_n_llhttp__internal__n_error_51: {
6696 state->error = 0x9;
6697 state->reason = "Invalid major version";
6698 state->error_pos = (const char*) p;
6699 state->_current = (void*) (intptr_t) s_error;
6700 return s_error;
6701 /* UNREACHABLE */;
6702 abort();
6703 }
6704 s_n_llhttp__internal__n_error_54: {
6705 state->error = 0x8;
6706 state->reason = "Expected HTTP/";
6707 state->error_pos = (const char*) p;
6708 state->_current = (void*) (intptr_t) s_error;
6709 return s_error;
6710 /* UNREACHABLE */;
6711 abort();
6712 }
6713 s_n_llhttp__internal__n_invoke_update_type: {
6714 switch (llhttp__internal__c_update_type(state, p, endp)) {
6715 default:
6716 goto s_n_llhttp__internal__n_req_first_space_before_url;
6717 }
6718 /* UNREACHABLE */;
6719 abort();
6720 }
6721 s_n_llhttp__internal__n_invoke_store_method: {
6722 switch (llhttp__internal__c_store_method(state, p, endp, match)) {
6723 default:
6724 goto s_n_llhttp__internal__n_invoke_update_type;
6725 }
6726 /* UNREACHABLE */;
6727 abort();
6728 }
6729 s_n_llhttp__internal__n_error_52: {
6730 state->error = 0x8;
6731 state->reason = "Invalid word encountered";
6732 state->error_pos = (const char*) p;
6733 state->_current = (void*) (intptr_t) s_error;
6734 return s_error;
6735 /* UNREACHABLE */;
6736 abort();
6737 }
6738 s_n_llhttp__internal__n_invoke_update_type_1: {
6739 switch (llhttp__internal__c_update_type_1(state, p, endp)) {
6740 default:
6741 goto s_n_llhttp__internal__n_res_http_major;
6742 }
6743 /* UNREACHABLE */;
6744 abort();
6745 }
6746 s_n_llhttp__internal__n_invoke_update_type_2: {
6747 switch (llhttp__internal__c_update_type(state, p, endp)) {
6748 default:
6749 goto s_n_llhttp__internal__n_start_req;
6750 }
6751 /* UNREACHABLE */;
6752 abort();
6753 }
6754 s_n_llhttp__internal__n_pause_8: {
6755 state->error = 0x15;
6756 state->reason = "on_message_begin pause";
6757 state->error_pos = (const char*) p;
6758 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_invoke_load_type;
6759 return s_error;
6760 /* UNREACHABLE */;
6761 abort();
6762 }
6763 s_n_llhttp__internal__n_error: {
6764 state->error = 0x10;
6765 state->reason = "`on_message_begin` callback error";
6766 state->error_pos = (const char*) p;
6767 state->_current = (void*) (intptr_t) s_error;
6768 return s_error;
6769 /* UNREACHABLE */;
6770 abort();
6771 }
6772 s_n_llhttp__internal__n_invoke_llhttp__on_message_begin: {
6773 switch (llhttp__on_message_begin(state, p, endp)) {
6774 case 0:
6775 goto s_n_llhttp__internal__n_invoke_load_type;
6776 case 21:
6777 goto s_n_llhttp__internal__n_pause_8;
6778 default:
6779 goto s_n_llhttp__internal__n_error;
6780 }
6781 /* UNREACHABLE */;
6782 abort();
6783 }
6784 s_n_llhttp__internal__n_invoke_update_finish: {
6785 switch (llhttp__internal__c_update_finish(state, p, endp)) {
6786 default:
6787 goto s_n_llhttp__internal__n_invoke_llhttp__on_message_begin;
6788 }
6789 /* UNREACHABLE */;
6790 abort();
6791 }
6792 }
6793
llhttp__internal_execute(llhttp__internal_t * state,const char * p,const char * endp)6794 int llhttp__internal_execute(llhttp__internal_t* state, const char* p, const char* endp) {
6795 llparse_state_t next;
6796
6797 /* check lingering errors */
6798 if (state->error != 0) {
6799 return state->error;
6800 }
6801
6802 /* restart spans */
6803 if (state->_span_pos0 != NULL) {
6804 state->_span_pos0 = (void*) p;
6805 }
6806
6807 next = llhttp__internal__run(state, (const unsigned char*) p, (const unsigned char*) endp);
6808 if (next == s_error) {
6809 return state->error;
6810 }
6811 state->_current = (void*) (intptr_t) next;
6812
6813 /* execute spans */
6814 if (state->_span_pos0 != NULL) {
6815 int error;
6816
6817 error = ((llhttp__internal__span_cb) state->_span_cb0)(state, state->_span_pos0, (const char*) endp);
6818 if (error != 0) {
6819 state->error = error;
6820 state->error_pos = endp;
6821 return error;
6822 }
6823 }
6824
6825 return 0;
6826 }
6827
6828 #else /* !LLHTTP_STRICT_MODE */
6829
6830 #include <stdlib.h>
6831 #include <stdint.h>
6832 #include <string.h>
6833
6834 #ifdef __SSE4_2__
6835 #ifdef _MSC_VER
6836 #include <nmmintrin.h>
6837 #else /* !_MSC_VER */
6838 #include <x86intrin.h>
6839 #endif /* _MSC_VER */
6840 #endif /* __SSE4_2__ */
6841
6842 #ifdef _MSC_VER
6843 #define ALIGN(n) _declspec(align(n))
6844 #else /* !_MSC_VER */
6845 #define ALIGN(n) __attribute__((aligned(n)))
6846 #endif /* _MSC_VER */
6847
6848 #include "llhttp.h"
6849
6850 typedef int (*llhttp__internal__span_cb)(
6851 llhttp__internal_t*, const char*, const char*);
6852
6853 static const unsigned char llparse_blob0[] = {
6854 'C', 'L'
6855 };
6856 #ifdef __SSE4_2__
6857 static const unsigned char ALIGN(16) llparse_blob1[] = {
6858 0x9, 0x9, 0xc, 0xc, '!', '"', '$', '>', '@', '~', 0x80,
6859 0xff, 0x0, 0x0, 0x0, 0x0
6860 };
6861 #endif /* __SSE4_2__ */
6862 static const unsigned char llparse_blob2[] = {
6863 'o', 'n'
6864 };
6865 static const unsigned char llparse_blob3[] = {
6866 'e', 'c', 't', 'i', 'o', 'n'
6867 };
6868 static const unsigned char llparse_blob4[] = {
6869 'l', 'o', 's', 'e'
6870 };
6871 static const unsigned char llparse_blob5[] = {
6872 'e', 'e', 'p', '-', 'a', 'l', 'i', 'v', 'e'
6873 };
6874 static const unsigned char llparse_blob6[] = {
6875 'p', 'g', 'r', 'a', 'd', 'e'
6876 };
6877 static const unsigned char llparse_blob7[] = {
6878 'c', 'h', 'u', 'n', 'k', 'e', 'd'
6879 };
6880 #ifdef __SSE4_2__
6881 static const unsigned char ALIGN(16) llparse_blob8[] = {
6882 0x9, 0x9, ' ', '~', 0x80, 0xff, 0x0, 0x0, 0x0, 0x0, 0x0,
6883 0x0, 0x0, 0x0, 0x0, 0x0
6884 };
6885 #endif /* __SSE4_2__ */
6886 #ifdef __SSE4_2__
6887 static const unsigned char ALIGN(16) llparse_blob9[] = {
6888 ' ', '!', '#', '\'', '*', '+', '-', '.', '0', '9', 'A',
6889 'Z', '^', 'z', '|', '|'
6890 };
6891 #endif /* __SSE4_2__ */
6892 #ifdef __SSE4_2__
6893 static const unsigned char ALIGN(16) llparse_blob10[] = {
6894 '~', '~', 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0,
6895 0x0, 0x0, 0x0, 0x0, 0x0
6896 };
6897 #endif /* __SSE4_2__ */
6898 static const unsigned char llparse_blob11[] = {
6899 'e', 'n', 't', '-', 'l', 'e', 'n', 'g', 't', 'h'
6900 };
6901 static const unsigned char llparse_blob12[] = {
6902 'r', 'o', 'x', 'y', '-', 'c', 'o', 'n', 'n', 'e', 'c',
6903 't', 'i', 'o', 'n'
6904 };
6905 static const unsigned char llparse_blob13[] = {
6906 'r', 'a', 'n', 's', 'f', 'e', 'r', '-', 'e', 'n', 'c',
6907 'o', 'd', 'i', 'n', 'g'
6908 };
6909 static const unsigned char llparse_blob14[] = {
6910 'p', 'g', 'r', 'a', 'd', 'e'
6911 };
6912 static const unsigned char llparse_blob15[] = {
6913 0xd, 0xa
6914 };
6915 static const unsigned char llparse_blob16[] = {
6916 'T', 'T', 'P', '/'
6917 };
6918 static const unsigned char llparse_blob17[] = {
6919 'C', 'E', '/'
6920 };
6921 static const unsigned char llparse_blob18[] = {
6922 'I', 'N', 'D'
6923 };
6924 static const unsigned char llparse_blob19[] = {
6925 'E', 'C', 'K', 'O', 'U', 'T'
6926 };
6927 static const unsigned char llparse_blob20[] = {
6928 'N', 'E', 'C', 'T'
6929 };
6930 static const unsigned char llparse_blob21[] = {
6931 'E', 'L', 'E', 'T', 'E'
6932 };
6933 static const unsigned char llparse_blob22[] = {
6934 'E', 'T'
6935 };
6936 static const unsigned char llparse_blob23[] = {
6937 'E', 'A', 'D'
6938 };
6939 static const unsigned char llparse_blob24[] = {
6940 'N', 'K'
6941 };
6942 static const unsigned char llparse_blob25[] = {
6943 'C', 'K'
6944 };
6945 static const unsigned char llparse_blob26[] = {
6946 'S', 'E', 'A', 'R', 'C', 'H'
6947 };
6948 static const unsigned char llparse_blob27[] = {
6949 'R', 'G', 'E'
6950 };
6951 static const unsigned char llparse_blob28[] = {
6952 'C', 'T', 'I', 'V', 'I', 'T', 'Y'
6953 };
6954 static const unsigned char llparse_blob29[] = {
6955 'L', 'E', 'N', 'D', 'A', 'R'
6956 };
6957 static const unsigned char llparse_blob30[] = {
6958 'V', 'E'
6959 };
6960 static const unsigned char llparse_blob31[] = {
6961 'O', 'T', 'I', 'F', 'Y'
6962 };
6963 static const unsigned char llparse_blob32[] = {
6964 'P', 'T', 'I', 'O', 'N', 'S'
6965 };
6966 static const unsigned char llparse_blob33[] = {
6967 'T', 'C', 'H'
6968 };
6969 static const unsigned char llparse_blob34[] = {
6970 'S', 'T'
6971 };
6972 static const unsigned char llparse_blob35[] = {
6973 'I', 'N', 'D'
6974 };
6975 static const unsigned char llparse_blob36[] = {
6976 'A', 'T', 'C', 'H'
6977 };
6978 static const unsigned char llparse_blob37[] = {
6979 'G', 'E'
6980 };
6981 static const unsigned char llparse_blob38[] = {
6982 'I', 'N', 'D'
6983 };
6984 static const unsigned char llparse_blob39[] = {
6985 'O', 'R', 'T'
6986 };
6987 static const unsigned char llparse_blob40[] = {
6988 'A', 'R', 'C', 'H'
6989 };
6990 static const unsigned char llparse_blob41[] = {
6991 'U', 'R', 'C', 'E'
6992 };
6993 static const unsigned char llparse_blob42[] = {
6994 'B', 'S', 'C', 'R', 'I', 'B', 'E'
6995 };
6996 static const unsigned char llparse_blob43[] = {
6997 'R', 'A', 'C', 'E'
6998 };
6999 static const unsigned char llparse_blob44[] = {
7000 'I', 'N', 'D'
7001 };
7002 static const unsigned char llparse_blob45[] = {
7003 'N', 'K'
7004 };
7005 static const unsigned char llparse_blob46[] = {
7006 'C', 'K'
7007 };
7008 static const unsigned char llparse_blob47[] = {
7009 'U', 'B', 'S', 'C', 'R', 'I', 'B', 'E'
7010 };
7011 static const unsigned char llparse_blob48[] = {
7012 'H', 'T', 'T', 'P', '/'
7013 };
7014 static const unsigned char llparse_blob49[] = {
7015 'A', 'D'
7016 };
7017 static const unsigned char llparse_blob50[] = {
7018 'T', 'P', '/'
7019 };
7020
7021 enum llparse_match_status_e {
7022 kMatchComplete,
7023 kMatchPause,
7024 kMatchMismatch
7025 };
7026 typedef enum llparse_match_status_e llparse_match_status_t;
7027
7028 struct llparse_match_s {
7029 llparse_match_status_t status;
7030 const unsigned char* current;
7031 };
7032 typedef struct llparse_match_s llparse_match_t;
7033
llparse__match_sequence_id(llhttp__internal_t * s,const unsigned char * p,const unsigned char * endp,const unsigned char * seq,uint32_t seq_len)7034 static llparse_match_t llparse__match_sequence_id(
7035 llhttp__internal_t* s, const unsigned char* p,
7036 const unsigned char* endp,
7037 const unsigned char* seq, uint32_t seq_len) {
7038 uint32_t index;
7039 llparse_match_t res;
7040
7041 index = s->_index;
7042 for (; p != endp; p++) {
7043 unsigned char current;
7044
7045 current = *p;
7046 if (current == seq[index]) {
7047 if (++index == seq_len) {
7048 res.status = kMatchComplete;
7049 goto reset;
7050 }
7051 } else {
7052 res.status = kMatchMismatch;
7053 goto reset;
7054 }
7055 }
7056 s->_index = index;
7057 res.status = kMatchPause;
7058 res.current = p;
7059 return res;
7060 reset:
7061 s->_index = 0;
7062 res.current = p;
7063 return res;
7064 }
7065
llparse__match_sequence_to_lower(llhttp__internal_t * s,const unsigned char * p,const unsigned char * endp,const unsigned char * seq,uint32_t seq_len)7066 static llparse_match_t llparse__match_sequence_to_lower(
7067 llhttp__internal_t* s, const unsigned char* p,
7068 const unsigned char* endp,
7069 const unsigned char* seq, uint32_t seq_len) {
7070 uint32_t index;
7071 llparse_match_t res;
7072
7073 index = s->_index;
7074 for (; p != endp; p++) {
7075 unsigned char current;
7076
7077 current = ((*p) >= 'A' && (*p) <= 'Z' ? (*p | 0x20) : (*p));
7078 if (current == seq[index]) {
7079 if (++index == seq_len) {
7080 res.status = kMatchComplete;
7081 goto reset;
7082 }
7083 } else {
7084 res.status = kMatchMismatch;
7085 goto reset;
7086 }
7087 }
7088 s->_index = index;
7089 res.status = kMatchPause;
7090 res.current = p;
7091 return res;
7092 reset:
7093 s->_index = 0;
7094 res.current = p;
7095 return res;
7096 }
7097
llparse__match_sequence_to_lower_unsafe(llhttp__internal_t * s,const unsigned char * p,const unsigned char * endp,const unsigned char * seq,uint32_t seq_len)7098 static llparse_match_t llparse__match_sequence_to_lower_unsafe(
7099 llhttp__internal_t* s, const unsigned char* p,
7100 const unsigned char* endp,
7101 const unsigned char* seq, uint32_t seq_len) {
7102 uint32_t index;
7103 llparse_match_t res;
7104
7105 index = s->_index;
7106 for (; p != endp; p++) {
7107 unsigned char current;
7108
7109 current = ((*p) | 0x20);
7110 if (current == seq[index]) {
7111 if (++index == seq_len) {
7112 res.status = kMatchComplete;
7113 goto reset;
7114 }
7115 } else {
7116 res.status = kMatchMismatch;
7117 goto reset;
7118 }
7119 }
7120 s->_index = index;
7121 res.status = kMatchPause;
7122 res.current = p;
7123 return res;
7124 reset:
7125 s->_index = 0;
7126 res.current = p;
7127 return res;
7128 }
7129
7130 enum llparse_state_e {
7131 s_error,
7132 s_n_llhttp__internal__n_invoke_llhttp__after_message_complete,
7133 s_n_llhttp__internal__n_pause_1,
7134 s_n_llhttp__internal__n_invoke_is_equal_upgrade,
7135 s_n_llhttp__internal__n_invoke_llhttp__on_message_complete_2,
7136 s_n_llhttp__internal__n_chunk_data_almost_done_skip,
7137 s_n_llhttp__internal__n_chunk_data_almost_done,
7138 s_n_llhttp__internal__n_consume_content_length,
7139 s_n_llhttp__internal__n_span_start_llhttp__on_body,
7140 s_n_llhttp__internal__n_invoke_is_equal_content_length,
7141 s_n_llhttp__internal__n_chunk_size_almost_done,
7142 s_n_llhttp__internal__n_chunk_parameters,
7143 s_n_llhttp__internal__n_chunk_size_otherwise,
7144 s_n_llhttp__internal__n_chunk_size,
7145 s_n_llhttp__internal__n_chunk_size_digit,
7146 s_n_llhttp__internal__n_invoke_update_content_length,
7147 s_n_llhttp__internal__n_consume_content_length_1,
7148 s_n_llhttp__internal__n_span_start_llhttp__on_body_1,
7149 s_n_llhttp__internal__n_eof,
7150 s_n_llhttp__internal__n_span_start_llhttp__on_body_2,
7151 s_n_llhttp__internal__n_invoke_llhttp__after_headers_complete,
7152 s_n_llhttp__internal__n_headers_almost_done,
7153 s_n_llhttp__internal__n_span_start_llhttp__on_header_value,
7154 s_n_llhttp__internal__n_header_value_discard_lws,
7155 s_n_llhttp__internal__n_header_value_discard_ws_almost_done,
7156 s_n_llhttp__internal__n_header_value_lws,
7157 s_n_llhttp__internal__n_header_value_almost_done,
7158 s_n_llhttp__internal__n_header_value_lenient,
7159 s_n_llhttp__internal__n_header_value_otherwise,
7160 s_n_llhttp__internal__n_header_value_connection_token,
7161 s_n_llhttp__internal__n_header_value_connection_ws,
7162 s_n_llhttp__internal__n_header_value_connection_1,
7163 s_n_llhttp__internal__n_header_value_connection_2,
7164 s_n_llhttp__internal__n_header_value_connection_3,
7165 s_n_llhttp__internal__n_header_value_connection,
7166 s_n_llhttp__internal__n_error_18,
7167 s_n_llhttp__internal__n_error_19,
7168 s_n_llhttp__internal__n_header_value_content_length_ws,
7169 s_n_llhttp__internal__n_header_value_content_length,
7170 s_n_llhttp__internal__n_header_value_te_chunked_last,
7171 s_n_llhttp__internal__n_header_value_te_token_ows,
7172 s_n_llhttp__internal__n_header_value,
7173 s_n_llhttp__internal__n_header_value_te_token,
7174 s_n_llhttp__internal__n_header_value_te_chunked,
7175 s_n_llhttp__internal__n_span_start_llhttp__on_header_value_1,
7176 s_n_llhttp__internal__n_header_value_discard_ws,
7177 s_n_llhttp__internal__n_header_field_general_otherwise,
7178 s_n_llhttp__internal__n_header_field_general,
7179 s_n_llhttp__internal__n_header_field_colon,
7180 s_n_llhttp__internal__n_header_field_3,
7181 s_n_llhttp__internal__n_header_field_4,
7182 s_n_llhttp__internal__n_header_field_2,
7183 s_n_llhttp__internal__n_header_field_1,
7184 s_n_llhttp__internal__n_header_field_5,
7185 s_n_llhttp__internal__n_header_field_6,
7186 s_n_llhttp__internal__n_header_field_7,
7187 s_n_llhttp__internal__n_header_field,
7188 s_n_llhttp__internal__n_span_start_llhttp__on_header_field,
7189 s_n_llhttp__internal__n_header_field_start,
7190 s_n_llhttp__internal__n_url_skip_to_http09,
7191 s_n_llhttp__internal__n_url_skip_lf_to_http09,
7192 s_n_llhttp__internal__n_req_http_end_1,
7193 s_n_llhttp__internal__n_req_http_end,
7194 s_n_llhttp__internal__n_req_http_minor,
7195 s_n_llhttp__internal__n_req_http_dot,
7196 s_n_llhttp__internal__n_req_http_major,
7197 s_n_llhttp__internal__n_req_http_start_1,
7198 s_n_llhttp__internal__n_req_http_start_2,
7199 s_n_llhttp__internal__n_req_http_start,
7200 s_n_llhttp__internal__n_url_skip_to_http,
7201 s_n_llhttp__internal__n_url_fragment,
7202 s_n_llhttp__internal__n_span_end_stub_query_3,
7203 s_n_llhttp__internal__n_url_query,
7204 s_n_llhttp__internal__n_url_query_or_fragment,
7205 s_n_llhttp__internal__n_url_path,
7206 s_n_llhttp__internal__n_span_start_stub_path_2,
7207 s_n_llhttp__internal__n_span_start_stub_path,
7208 s_n_llhttp__internal__n_span_start_stub_path_1,
7209 s_n_llhttp__internal__n_url_server_with_at,
7210 s_n_llhttp__internal__n_url_server,
7211 s_n_llhttp__internal__n_url_schema_delim_1,
7212 s_n_llhttp__internal__n_url_schema_delim,
7213 s_n_llhttp__internal__n_span_end_stub_schema,
7214 s_n_llhttp__internal__n_url_schema,
7215 s_n_llhttp__internal__n_url_start,
7216 s_n_llhttp__internal__n_span_start_llhttp__on_url_1,
7217 s_n_llhttp__internal__n_span_start_llhttp__on_url,
7218 s_n_llhttp__internal__n_req_spaces_before_url,
7219 s_n_llhttp__internal__n_req_first_space_before_url,
7220 s_n_llhttp__internal__n_start_req_1,
7221 s_n_llhttp__internal__n_start_req_2,
7222 s_n_llhttp__internal__n_start_req_4,
7223 s_n_llhttp__internal__n_start_req_6,
7224 s_n_llhttp__internal__n_start_req_7,
7225 s_n_llhttp__internal__n_start_req_5,
7226 s_n_llhttp__internal__n_start_req_3,
7227 s_n_llhttp__internal__n_start_req_8,
7228 s_n_llhttp__internal__n_start_req_9,
7229 s_n_llhttp__internal__n_start_req_10,
7230 s_n_llhttp__internal__n_start_req_12,
7231 s_n_llhttp__internal__n_start_req_13,
7232 s_n_llhttp__internal__n_start_req_11,
7233 s_n_llhttp__internal__n_start_req_15,
7234 s_n_llhttp__internal__n_start_req_16,
7235 s_n_llhttp__internal__n_start_req_18,
7236 s_n_llhttp__internal__n_start_req_20,
7237 s_n_llhttp__internal__n_start_req_21,
7238 s_n_llhttp__internal__n_start_req_19,
7239 s_n_llhttp__internal__n_start_req_17,
7240 s_n_llhttp__internal__n_start_req_22,
7241 s_n_llhttp__internal__n_start_req_14,
7242 s_n_llhttp__internal__n_start_req_23,
7243 s_n_llhttp__internal__n_start_req_24,
7244 s_n_llhttp__internal__n_start_req_26,
7245 s_n_llhttp__internal__n_start_req_27,
7246 s_n_llhttp__internal__n_start_req_31,
7247 s_n_llhttp__internal__n_start_req_32,
7248 s_n_llhttp__internal__n_start_req_30,
7249 s_n_llhttp__internal__n_start_req_29,
7250 s_n_llhttp__internal__n_start_req_28,
7251 s_n_llhttp__internal__n_start_req_34,
7252 s_n_llhttp__internal__n_start_req_33,
7253 s_n_llhttp__internal__n_start_req_25,
7254 s_n_llhttp__internal__n_start_req_37,
7255 s_n_llhttp__internal__n_start_req_38,
7256 s_n_llhttp__internal__n_start_req_36,
7257 s_n_llhttp__internal__n_start_req_35,
7258 s_n_llhttp__internal__n_start_req_40,
7259 s_n_llhttp__internal__n_start_req_41,
7260 s_n_llhttp__internal__n_start_req_42,
7261 s_n_llhttp__internal__n_start_req_39,
7262 s_n_llhttp__internal__n_start_req_43,
7263 s_n_llhttp__internal__n_start_req_46,
7264 s_n_llhttp__internal__n_start_req_48,
7265 s_n_llhttp__internal__n_start_req_49,
7266 s_n_llhttp__internal__n_start_req_47,
7267 s_n_llhttp__internal__n_start_req_50,
7268 s_n_llhttp__internal__n_start_req_45,
7269 s_n_llhttp__internal__n_start_req_44,
7270 s_n_llhttp__internal__n_start_req,
7271 s_n_llhttp__internal__n_res_line_almost_done,
7272 s_n_llhttp__internal__n_res_status,
7273 s_n_llhttp__internal__n_span_start_llhttp__on_status,
7274 s_n_llhttp__internal__n_res_status_start,
7275 s_n_llhttp__internal__n_res_status_code_otherwise,
7276 s_n_llhttp__internal__n_res_status_code,
7277 s_n_llhttp__internal__n_res_http_end,
7278 s_n_llhttp__internal__n_res_http_minor,
7279 s_n_llhttp__internal__n_res_http_dot,
7280 s_n_llhttp__internal__n_res_http_major,
7281 s_n_llhttp__internal__n_start_res,
7282 s_n_llhttp__internal__n_req_or_res_method_2,
7283 s_n_llhttp__internal__n_req_or_res_method_3,
7284 s_n_llhttp__internal__n_req_or_res_method_1,
7285 s_n_llhttp__internal__n_req_or_res_method,
7286 s_n_llhttp__internal__n_start_req_or_res,
7287 s_n_llhttp__internal__n_invoke_load_type,
7288 s_n_llhttp__internal__n_start,
7289 };
7290 typedef enum llparse_state_e llparse_state_t;
7291
7292 int llhttp__on_url(
7293 llhttp__internal_t* s, const unsigned char* p,
7294 const unsigned char* endp);
7295
7296 int llhttp__on_header_field(
7297 llhttp__internal_t* s, const unsigned char* p,
7298 const unsigned char* endp);
7299
7300 int llhttp__on_header_value(
7301 llhttp__internal_t* s, const unsigned char* p,
7302 const unsigned char* endp);
7303
7304 int llhttp__on_body(
7305 llhttp__internal_t* s, const unsigned char* p,
7306 const unsigned char* endp);
7307
7308 int llhttp__on_status(
7309 llhttp__internal_t* s, const unsigned char* p,
7310 const unsigned char* endp);
7311
llhttp__internal__c_update_finish(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7312 int llhttp__internal__c_update_finish(
7313 llhttp__internal_t* state,
7314 const unsigned char* p,
7315 const unsigned char* endp) {
7316 state->finish = 2;
7317 return 0;
7318 }
7319
7320 int llhttp__on_message_begin(
7321 llhttp__internal_t* s, const unsigned char* p,
7322 const unsigned char* endp);
7323
llhttp__internal__c_load_type(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7324 int llhttp__internal__c_load_type(
7325 llhttp__internal_t* state,
7326 const unsigned char* p,
7327 const unsigned char* endp) {
7328 return state->type;
7329 }
7330
llhttp__internal__c_store_method(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp,int match)7331 int llhttp__internal__c_store_method(
7332 llhttp__internal_t* state,
7333 const unsigned char* p,
7334 const unsigned char* endp,
7335 int match) {
7336 state->method = match;
7337 return 0;
7338 }
7339
llhttp__internal__c_is_equal_method(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7340 int llhttp__internal__c_is_equal_method(
7341 llhttp__internal_t* state,
7342 const unsigned char* p,
7343 const unsigned char* endp) {
7344 return state->method == 5;
7345 }
7346
llhttp__internal__c_update_http_major(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7347 int llhttp__internal__c_update_http_major(
7348 llhttp__internal_t* state,
7349 const unsigned char* p,
7350 const unsigned char* endp) {
7351 state->http_major = 0;
7352 return 0;
7353 }
7354
llhttp__internal__c_update_http_minor(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7355 int llhttp__internal__c_update_http_minor(
7356 llhttp__internal_t* state,
7357 const unsigned char* p,
7358 const unsigned char* endp) {
7359 state->http_minor = 9;
7360 return 0;
7361 }
7362
llhttp__internal__c_test_flags(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7363 int llhttp__internal__c_test_flags(
7364 llhttp__internal_t* state,
7365 const unsigned char* p,
7366 const unsigned char* endp) {
7367 return (state->flags & 128) == 128;
7368 }
7369
7370 int llhttp__on_chunk_complete(
7371 llhttp__internal_t* s, const unsigned char* p,
7372 const unsigned char* endp);
7373
7374 int llhttp__on_message_complete(
7375 llhttp__internal_t* s, const unsigned char* p,
7376 const unsigned char* endp);
7377
llhttp__internal__c_is_equal_upgrade(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7378 int llhttp__internal__c_is_equal_upgrade(
7379 llhttp__internal_t* state,
7380 const unsigned char* p,
7381 const unsigned char* endp) {
7382 return state->upgrade == 1;
7383 }
7384
7385 int llhttp__after_message_complete(
7386 llhttp__internal_t* s, const unsigned char* p,
7387 const unsigned char* endp);
7388
llhttp__internal__c_update_finish_1(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7389 int llhttp__internal__c_update_finish_1(
7390 llhttp__internal_t* state,
7391 const unsigned char* p,
7392 const unsigned char* endp) {
7393 state->finish = 0;
7394 return 0;
7395 }
7396
llhttp__internal__c_test_flags_1(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7397 int llhttp__internal__c_test_flags_1(
7398 llhttp__internal_t* state,
7399 const unsigned char* p,
7400 const unsigned char* endp) {
7401 return (state->flags & 544) == 544;
7402 }
7403
llhttp__internal__c_test_flags_2(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7404 int llhttp__internal__c_test_flags_2(
7405 llhttp__internal_t* state,
7406 const unsigned char* p,
7407 const unsigned char* endp) {
7408 return (state->flags & 256) == 256;
7409 }
7410
llhttp__internal__c_test_flags_3(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7411 int llhttp__internal__c_test_flags_3(
7412 llhttp__internal_t* state,
7413 const unsigned char* p,
7414 const unsigned char* endp) {
7415 return (state->flags & 40) == 40;
7416 }
7417
7418 int llhttp__before_headers_complete(
7419 llhttp__internal_t* s, const unsigned char* p,
7420 const unsigned char* endp);
7421
7422 int llhttp__on_headers_complete(
7423 llhttp__internal_t* s, const unsigned char* p,
7424 const unsigned char* endp);
7425
7426 int llhttp__after_headers_complete(
7427 llhttp__internal_t* s, const unsigned char* p,
7428 const unsigned char* endp);
7429
llhttp__internal__c_update_content_length(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7430 int llhttp__internal__c_update_content_length(
7431 llhttp__internal_t* state,
7432 const unsigned char* p,
7433 const unsigned char* endp) {
7434 state->content_length = 0;
7435 return 0;
7436 }
7437
llhttp__internal__c_mul_add_content_length(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp,int match)7438 int llhttp__internal__c_mul_add_content_length(
7439 llhttp__internal_t* state,
7440 const unsigned char* p,
7441 const unsigned char* endp,
7442 int match) {
7443 /* Multiplication overflow */
7444 if (state->content_length > 0xffffffffffffffffULL / 16) {
7445 return 1;
7446 }
7447
7448 state->content_length *= 16;
7449
7450 /* Addition overflow */
7451 if (match >= 0) {
7452 if (state->content_length > 0xffffffffffffffffULL - match) {
7453 return 1;
7454 }
7455 } else {
7456 if (state->content_length < 0ULL - match) {
7457 return 1;
7458 }
7459 }
7460 state->content_length += match;
7461 return 0;
7462 }
7463
7464 int llhttp__on_chunk_header(
7465 llhttp__internal_t* s, const unsigned char* p,
7466 const unsigned char* endp);
7467
llhttp__internal__c_is_equal_content_length(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7468 int llhttp__internal__c_is_equal_content_length(
7469 llhttp__internal_t* state,
7470 const unsigned char* p,
7471 const unsigned char* endp) {
7472 return state->content_length == 0;
7473 }
7474
llhttp__internal__c_or_flags(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7475 int llhttp__internal__c_or_flags(
7476 llhttp__internal_t* state,
7477 const unsigned char* p,
7478 const unsigned char* endp) {
7479 state->flags |= 128;
7480 return 0;
7481 }
7482
llhttp__internal__c_update_finish_2(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7483 int llhttp__internal__c_update_finish_2(
7484 llhttp__internal_t* state,
7485 const unsigned char* p,
7486 const unsigned char* endp) {
7487 state->finish = 1;
7488 return 0;
7489 }
7490
llhttp__internal__c_or_flags_1(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7491 int llhttp__internal__c_or_flags_1(
7492 llhttp__internal_t* state,
7493 const unsigned char* p,
7494 const unsigned char* endp) {
7495 state->flags |= 64;
7496 return 0;
7497 }
7498
llhttp__internal__c_update_upgrade(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7499 int llhttp__internal__c_update_upgrade(
7500 llhttp__internal_t* state,
7501 const unsigned char* p,
7502 const unsigned char* endp) {
7503 state->upgrade = 1;
7504 return 0;
7505 }
7506
llhttp__internal__c_store_header_state(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp,int match)7507 int llhttp__internal__c_store_header_state(
7508 llhttp__internal_t* state,
7509 const unsigned char* p,
7510 const unsigned char* endp,
7511 int match) {
7512 state->header_state = match;
7513 return 0;
7514 }
7515
llhttp__internal__c_load_header_state(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7516 int llhttp__internal__c_load_header_state(
7517 llhttp__internal_t* state,
7518 const unsigned char* p,
7519 const unsigned char* endp) {
7520 return state->header_state;
7521 }
7522
llhttp__internal__c_or_flags_3(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7523 int llhttp__internal__c_or_flags_3(
7524 llhttp__internal_t* state,
7525 const unsigned char* p,
7526 const unsigned char* endp) {
7527 state->flags |= 1;
7528 return 0;
7529 }
7530
llhttp__internal__c_update_header_state(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7531 int llhttp__internal__c_update_header_state(
7532 llhttp__internal_t* state,
7533 const unsigned char* p,
7534 const unsigned char* endp) {
7535 state->header_state = 1;
7536 return 0;
7537 }
7538
llhttp__internal__c_or_flags_4(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7539 int llhttp__internal__c_or_flags_4(
7540 llhttp__internal_t* state,
7541 const unsigned char* p,
7542 const unsigned char* endp) {
7543 state->flags |= 2;
7544 return 0;
7545 }
7546
llhttp__internal__c_or_flags_5(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7547 int llhttp__internal__c_or_flags_5(
7548 llhttp__internal_t* state,
7549 const unsigned char* p,
7550 const unsigned char* endp) {
7551 state->flags |= 4;
7552 return 0;
7553 }
7554
llhttp__internal__c_or_flags_6(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7555 int llhttp__internal__c_or_flags_6(
7556 llhttp__internal_t* state,
7557 const unsigned char* p,
7558 const unsigned char* endp) {
7559 state->flags |= 8;
7560 return 0;
7561 }
7562
llhttp__internal__c_update_header_state_2(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7563 int llhttp__internal__c_update_header_state_2(
7564 llhttp__internal_t* state,
7565 const unsigned char* p,
7566 const unsigned char* endp) {
7567 state->header_state = 6;
7568 return 0;
7569 }
7570
llhttp__internal__c_update_header_state_4(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7571 int llhttp__internal__c_update_header_state_4(
7572 llhttp__internal_t* state,
7573 const unsigned char* p,
7574 const unsigned char* endp) {
7575 state->header_state = 0;
7576 return 0;
7577 }
7578
llhttp__internal__c_update_header_state_5(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7579 int llhttp__internal__c_update_header_state_5(
7580 llhttp__internal_t* state,
7581 const unsigned char* p,
7582 const unsigned char* endp) {
7583 state->header_state = 5;
7584 return 0;
7585 }
7586
llhttp__internal__c_update_header_state_6(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7587 int llhttp__internal__c_update_header_state_6(
7588 llhttp__internal_t* state,
7589 const unsigned char* p,
7590 const unsigned char* endp) {
7591 state->header_state = 7;
7592 return 0;
7593 }
7594
llhttp__internal__c_test_flags_5(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7595 int llhttp__internal__c_test_flags_5(
7596 llhttp__internal_t* state,
7597 const unsigned char* p,
7598 const unsigned char* endp) {
7599 return (state->flags & 32) == 32;
7600 }
7601
llhttp__internal__c_mul_add_content_length_1(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp,int match)7602 int llhttp__internal__c_mul_add_content_length_1(
7603 llhttp__internal_t* state,
7604 const unsigned char* p,
7605 const unsigned char* endp,
7606 int match) {
7607 /* Multiplication overflow */
7608 if (state->content_length > 0xffffffffffffffffULL / 10) {
7609 return 1;
7610 }
7611
7612 state->content_length *= 10;
7613
7614 /* Addition overflow */
7615 if (match >= 0) {
7616 if (state->content_length > 0xffffffffffffffffULL - match) {
7617 return 1;
7618 }
7619 } else {
7620 if (state->content_length < 0ULL - match) {
7621 return 1;
7622 }
7623 }
7624 state->content_length += match;
7625 return 0;
7626 }
7627
llhttp__internal__c_or_flags_15(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7628 int llhttp__internal__c_or_flags_15(
7629 llhttp__internal_t* state,
7630 const unsigned char* p,
7631 const unsigned char* endp) {
7632 state->flags |= 32;
7633 return 0;
7634 }
7635
llhttp__internal__c_or_flags_16(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7636 int llhttp__internal__c_or_flags_16(
7637 llhttp__internal_t* state,
7638 const unsigned char* p,
7639 const unsigned char* endp) {
7640 state->flags |= 512;
7641 return 0;
7642 }
7643
llhttp__internal__c_and_flags(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7644 int llhttp__internal__c_and_flags(
7645 llhttp__internal_t* state,
7646 const unsigned char* p,
7647 const unsigned char* endp) {
7648 state->flags &= -9;
7649 return 0;
7650 }
7651
llhttp__internal__c_update_header_state_7(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7652 int llhttp__internal__c_update_header_state_7(
7653 llhttp__internal_t* state,
7654 const unsigned char* p,
7655 const unsigned char* endp) {
7656 state->header_state = 8;
7657 return 0;
7658 }
7659
llhttp__internal__c_or_flags_17(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7660 int llhttp__internal__c_or_flags_17(
7661 llhttp__internal_t* state,
7662 const unsigned char* p,
7663 const unsigned char* endp) {
7664 state->flags |= 16;
7665 return 0;
7666 }
7667
llhttp__internal__c_store_http_major(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp,int match)7668 int llhttp__internal__c_store_http_major(
7669 llhttp__internal_t* state,
7670 const unsigned char* p,
7671 const unsigned char* endp,
7672 int match) {
7673 state->http_major = match;
7674 return 0;
7675 }
7676
llhttp__internal__c_store_http_minor(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp,int match)7677 int llhttp__internal__c_store_http_minor(
7678 llhttp__internal_t* state,
7679 const unsigned char* p,
7680 const unsigned char* endp,
7681 int match) {
7682 state->http_minor = match;
7683 return 0;
7684 }
7685
llhttp__internal__c_is_equal_method_1(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7686 int llhttp__internal__c_is_equal_method_1(
7687 llhttp__internal_t* state,
7688 const unsigned char* p,
7689 const unsigned char* endp) {
7690 return state->method == 33;
7691 }
7692
llhttp__internal__c_update_status_code(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7693 int llhttp__internal__c_update_status_code(
7694 llhttp__internal_t* state,
7695 const unsigned char* p,
7696 const unsigned char* endp) {
7697 state->status_code = 0;
7698 return 0;
7699 }
7700
llhttp__internal__c_mul_add_status_code(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp,int match)7701 int llhttp__internal__c_mul_add_status_code(
7702 llhttp__internal_t* state,
7703 const unsigned char* p,
7704 const unsigned char* endp,
7705 int match) {
7706 /* Multiplication overflow */
7707 if (state->status_code > 0xffff / 10) {
7708 return 1;
7709 }
7710
7711 state->status_code *= 10;
7712
7713 /* Addition overflow */
7714 if (match >= 0) {
7715 if (state->status_code > 0xffff - match) {
7716 return 1;
7717 }
7718 } else {
7719 if (state->status_code < 0 - match) {
7720 return 1;
7721 }
7722 }
7723 state->status_code += match;
7724
7725 /* Enforce maximum */
7726 if (state->status_code > 999) {
7727 return 1;
7728 }
7729 return 0;
7730 }
7731
llhttp__internal__c_update_type(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7732 int llhttp__internal__c_update_type(
7733 llhttp__internal_t* state,
7734 const unsigned char* p,
7735 const unsigned char* endp) {
7736 state->type = 1;
7737 return 0;
7738 }
7739
llhttp__internal__c_update_type_1(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7740 int llhttp__internal__c_update_type_1(
7741 llhttp__internal_t* state,
7742 const unsigned char* p,
7743 const unsigned char* endp) {
7744 state->type = 2;
7745 return 0;
7746 }
7747
llhttp__internal_init(llhttp__internal_t * state)7748 int llhttp__internal_init(llhttp__internal_t* state) {
7749 memset(state, 0, sizeof(*state));
7750 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_start;
7751 return 0;
7752 }
7753
llhttp__internal__run(llhttp__internal_t * state,const unsigned char * p,const unsigned char * endp)7754 static llparse_state_t llhttp__internal__run(
7755 llhttp__internal_t* state,
7756 const unsigned char* p,
7757 const unsigned char* endp) {
7758 int match;
7759 switch ((llparse_state_t) (intptr_t) state->_current) {
7760 case s_n_llhttp__internal__n_invoke_llhttp__after_message_complete:
7761 s_n_llhttp__internal__n_invoke_llhttp__after_message_complete: {
7762 switch (llhttp__after_message_complete(state, p, endp)) {
7763 default:
7764 goto s_n_llhttp__internal__n_invoke_update_finish_1;
7765 }
7766 /* UNREACHABLE */;
7767 abort();
7768 }
7769 case s_n_llhttp__internal__n_pause_1:
7770 s_n_llhttp__internal__n_pause_1: {
7771 state->error = 0x16;
7772 state->reason = "Pause on CONNECT/Upgrade";
7773 state->error_pos = (const char*) p;
7774 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_invoke_llhttp__after_message_complete;
7775 return s_error;
7776 /* UNREACHABLE */;
7777 abort();
7778 }
7779 case s_n_llhttp__internal__n_invoke_is_equal_upgrade:
7780 s_n_llhttp__internal__n_invoke_is_equal_upgrade: {
7781 switch (llhttp__internal__c_is_equal_upgrade(state, p, endp)) {
7782 case 0:
7783 goto s_n_llhttp__internal__n_invoke_llhttp__after_message_complete;
7784 default:
7785 goto s_n_llhttp__internal__n_pause_1;
7786 }
7787 /* UNREACHABLE */;
7788 abort();
7789 }
7790 case s_n_llhttp__internal__n_invoke_llhttp__on_message_complete_2:
7791 s_n_llhttp__internal__n_invoke_llhttp__on_message_complete_2: {
7792 switch (llhttp__on_message_complete(state, p, endp)) {
7793 case 0:
7794 goto s_n_llhttp__internal__n_invoke_is_equal_upgrade;
7795 case 21:
7796 goto s_n_llhttp__internal__n_pause_5;
7797 default:
7798 goto s_n_llhttp__internal__n_error_9;
7799 }
7800 /* UNREACHABLE */;
7801 abort();
7802 }
7803 case s_n_llhttp__internal__n_chunk_data_almost_done_skip:
7804 s_n_llhttp__internal__n_chunk_data_almost_done_skip: {
7805 if (p == endp) {
7806 return s_n_llhttp__internal__n_chunk_data_almost_done_skip;
7807 }
7808 p++;
7809 goto s_n_llhttp__internal__n_invoke_llhttp__on_chunk_complete;
7810 /* UNREACHABLE */;
7811 abort();
7812 }
7813 case s_n_llhttp__internal__n_chunk_data_almost_done:
7814 s_n_llhttp__internal__n_chunk_data_almost_done: {
7815 if (p == endp) {
7816 return s_n_llhttp__internal__n_chunk_data_almost_done;
7817 }
7818 p++;
7819 goto s_n_llhttp__internal__n_chunk_data_almost_done_skip;
7820 /* UNREACHABLE */;
7821 abort();
7822 }
7823 case s_n_llhttp__internal__n_consume_content_length:
7824 s_n_llhttp__internal__n_consume_content_length: {
7825 size_t avail;
7826 size_t need;
7827
7828 avail = endp - p;
7829 need = state->content_length;
7830 if (avail >= need) {
7831 p += need;
7832 state->content_length = 0;
7833 goto s_n_llhttp__internal__n_span_end_llhttp__on_body;
7834 }
7835
7836 state->content_length -= avail;
7837 return s_n_llhttp__internal__n_consume_content_length;
7838 /* UNREACHABLE */;
7839 abort();
7840 }
7841 case s_n_llhttp__internal__n_span_start_llhttp__on_body:
7842 s_n_llhttp__internal__n_span_start_llhttp__on_body: {
7843 if (p == endp) {
7844 return s_n_llhttp__internal__n_span_start_llhttp__on_body;
7845 }
7846 state->_span_pos0 = (void*) p;
7847 state->_span_cb0 = llhttp__on_body;
7848 goto s_n_llhttp__internal__n_consume_content_length;
7849 /* UNREACHABLE */;
7850 abort();
7851 }
7852 case s_n_llhttp__internal__n_invoke_is_equal_content_length:
7853 s_n_llhttp__internal__n_invoke_is_equal_content_length: {
7854 switch (llhttp__internal__c_is_equal_content_length(state, p, endp)) {
7855 case 0:
7856 goto s_n_llhttp__internal__n_span_start_llhttp__on_body;
7857 default:
7858 goto s_n_llhttp__internal__n_invoke_or_flags;
7859 }
7860 /* UNREACHABLE */;
7861 abort();
7862 }
7863 case s_n_llhttp__internal__n_chunk_size_almost_done:
7864 s_n_llhttp__internal__n_chunk_size_almost_done: {
7865 if (p == endp) {
7866 return s_n_llhttp__internal__n_chunk_size_almost_done;
7867 }
7868 p++;
7869 goto s_n_llhttp__internal__n_invoke_llhttp__on_chunk_header;
7870 /* UNREACHABLE */;
7871 abort();
7872 }
7873 case s_n_llhttp__internal__n_chunk_parameters:
7874 s_n_llhttp__internal__n_chunk_parameters: {
7875 if (p == endp) {
7876 return s_n_llhttp__internal__n_chunk_parameters;
7877 }
7878 switch (*p) {
7879 case 13: {
7880 p++;
7881 goto s_n_llhttp__internal__n_chunk_size_almost_done;
7882 }
7883 default: {
7884 p++;
7885 goto s_n_llhttp__internal__n_chunk_parameters;
7886 }
7887 }
7888 /* UNREACHABLE */;
7889 abort();
7890 }
7891 case s_n_llhttp__internal__n_chunk_size_otherwise:
7892 s_n_llhttp__internal__n_chunk_size_otherwise: {
7893 if (p == endp) {
7894 return s_n_llhttp__internal__n_chunk_size_otherwise;
7895 }
7896 switch (*p) {
7897 case 13: {
7898 p++;
7899 goto s_n_llhttp__internal__n_chunk_size_almost_done;
7900 }
7901 case ' ': {
7902 p++;
7903 goto s_n_llhttp__internal__n_chunk_parameters;
7904 }
7905 case ';': {
7906 p++;
7907 goto s_n_llhttp__internal__n_chunk_parameters;
7908 }
7909 default: {
7910 goto s_n_llhttp__internal__n_error_6;
7911 }
7912 }
7913 /* UNREACHABLE */;
7914 abort();
7915 }
7916 case s_n_llhttp__internal__n_chunk_size:
7917 s_n_llhttp__internal__n_chunk_size: {
7918 if (p == endp) {
7919 return s_n_llhttp__internal__n_chunk_size;
7920 }
7921 switch (*p) {
7922 case '0': {
7923 p++;
7924 match = 0;
7925 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
7926 }
7927 case '1': {
7928 p++;
7929 match = 1;
7930 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
7931 }
7932 case '2': {
7933 p++;
7934 match = 2;
7935 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
7936 }
7937 case '3': {
7938 p++;
7939 match = 3;
7940 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
7941 }
7942 case '4': {
7943 p++;
7944 match = 4;
7945 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
7946 }
7947 case '5': {
7948 p++;
7949 match = 5;
7950 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
7951 }
7952 case '6': {
7953 p++;
7954 match = 6;
7955 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
7956 }
7957 case '7': {
7958 p++;
7959 match = 7;
7960 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
7961 }
7962 case '8': {
7963 p++;
7964 match = 8;
7965 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
7966 }
7967 case '9': {
7968 p++;
7969 match = 9;
7970 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
7971 }
7972 case 'A': {
7973 p++;
7974 match = 10;
7975 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
7976 }
7977 case 'B': {
7978 p++;
7979 match = 11;
7980 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
7981 }
7982 case 'C': {
7983 p++;
7984 match = 12;
7985 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
7986 }
7987 case 'D': {
7988 p++;
7989 match = 13;
7990 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
7991 }
7992 case 'E': {
7993 p++;
7994 match = 14;
7995 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
7996 }
7997 case 'F': {
7998 p++;
7999 match = 15;
8000 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
8001 }
8002 case 'a': {
8003 p++;
8004 match = 10;
8005 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
8006 }
8007 case 'b': {
8008 p++;
8009 match = 11;
8010 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
8011 }
8012 case 'c': {
8013 p++;
8014 match = 12;
8015 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
8016 }
8017 case 'd': {
8018 p++;
8019 match = 13;
8020 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
8021 }
8022 case 'e': {
8023 p++;
8024 match = 14;
8025 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
8026 }
8027 case 'f': {
8028 p++;
8029 match = 15;
8030 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
8031 }
8032 default: {
8033 goto s_n_llhttp__internal__n_chunk_size_otherwise;
8034 }
8035 }
8036 /* UNREACHABLE */;
8037 abort();
8038 }
8039 case s_n_llhttp__internal__n_chunk_size_digit:
8040 s_n_llhttp__internal__n_chunk_size_digit: {
8041 if (p == endp) {
8042 return s_n_llhttp__internal__n_chunk_size_digit;
8043 }
8044 switch (*p) {
8045 case '0': {
8046 p++;
8047 match = 0;
8048 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
8049 }
8050 case '1': {
8051 p++;
8052 match = 1;
8053 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
8054 }
8055 case '2': {
8056 p++;
8057 match = 2;
8058 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
8059 }
8060 case '3': {
8061 p++;
8062 match = 3;
8063 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
8064 }
8065 case '4': {
8066 p++;
8067 match = 4;
8068 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
8069 }
8070 case '5': {
8071 p++;
8072 match = 5;
8073 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
8074 }
8075 case '6': {
8076 p++;
8077 match = 6;
8078 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
8079 }
8080 case '7': {
8081 p++;
8082 match = 7;
8083 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
8084 }
8085 case '8': {
8086 p++;
8087 match = 8;
8088 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
8089 }
8090 case '9': {
8091 p++;
8092 match = 9;
8093 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
8094 }
8095 case 'A': {
8096 p++;
8097 match = 10;
8098 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
8099 }
8100 case 'B': {
8101 p++;
8102 match = 11;
8103 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
8104 }
8105 case 'C': {
8106 p++;
8107 match = 12;
8108 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
8109 }
8110 case 'D': {
8111 p++;
8112 match = 13;
8113 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
8114 }
8115 case 'E': {
8116 p++;
8117 match = 14;
8118 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
8119 }
8120 case 'F': {
8121 p++;
8122 match = 15;
8123 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
8124 }
8125 case 'a': {
8126 p++;
8127 match = 10;
8128 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
8129 }
8130 case 'b': {
8131 p++;
8132 match = 11;
8133 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
8134 }
8135 case 'c': {
8136 p++;
8137 match = 12;
8138 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
8139 }
8140 case 'd': {
8141 p++;
8142 match = 13;
8143 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
8144 }
8145 case 'e': {
8146 p++;
8147 match = 14;
8148 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
8149 }
8150 case 'f': {
8151 p++;
8152 match = 15;
8153 goto s_n_llhttp__internal__n_invoke_mul_add_content_length;
8154 }
8155 default: {
8156 goto s_n_llhttp__internal__n_error_8;
8157 }
8158 }
8159 /* UNREACHABLE */;
8160 abort();
8161 }
8162 case s_n_llhttp__internal__n_invoke_update_content_length:
8163 s_n_llhttp__internal__n_invoke_update_content_length: {
8164 switch (llhttp__internal__c_update_content_length(state, p, endp)) {
8165 default:
8166 goto s_n_llhttp__internal__n_chunk_size_digit;
8167 }
8168 /* UNREACHABLE */;
8169 abort();
8170 }
8171 case s_n_llhttp__internal__n_consume_content_length_1:
8172 s_n_llhttp__internal__n_consume_content_length_1: {
8173 size_t avail;
8174 size_t need;
8175
8176 avail = endp - p;
8177 need = state->content_length;
8178 if (avail >= need) {
8179 p += need;
8180 state->content_length = 0;
8181 goto s_n_llhttp__internal__n_span_end_llhttp__on_body_1;
8182 }
8183
8184 state->content_length -= avail;
8185 return s_n_llhttp__internal__n_consume_content_length_1;
8186 /* UNREACHABLE */;
8187 abort();
8188 }
8189 case s_n_llhttp__internal__n_span_start_llhttp__on_body_1:
8190 s_n_llhttp__internal__n_span_start_llhttp__on_body_1: {
8191 if (p == endp) {
8192 return s_n_llhttp__internal__n_span_start_llhttp__on_body_1;
8193 }
8194 state->_span_pos0 = (void*) p;
8195 state->_span_cb0 = llhttp__on_body;
8196 goto s_n_llhttp__internal__n_consume_content_length_1;
8197 /* UNREACHABLE */;
8198 abort();
8199 }
8200 case s_n_llhttp__internal__n_eof:
8201 s_n_llhttp__internal__n_eof: {
8202 if (p == endp) {
8203 return s_n_llhttp__internal__n_eof;
8204 }
8205 p++;
8206 goto s_n_llhttp__internal__n_eof;
8207 /* UNREACHABLE */;
8208 abort();
8209 }
8210 case s_n_llhttp__internal__n_span_start_llhttp__on_body_2:
8211 s_n_llhttp__internal__n_span_start_llhttp__on_body_2: {
8212 if (p == endp) {
8213 return s_n_llhttp__internal__n_span_start_llhttp__on_body_2;
8214 }
8215 state->_span_pos0 = (void*) p;
8216 state->_span_cb0 = llhttp__on_body;
8217 goto s_n_llhttp__internal__n_eof;
8218 /* UNREACHABLE */;
8219 abort();
8220 }
8221 case s_n_llhttp__internal__n_invoke_llhttp__after_headers_complete:
8222 s_n_llhttp__internal__n_invoke_llhttp__after_headers_complete: {
8223 switch (llhttp__after_headers_complete(state, p, endp)) {
8224 case 1:
8225 goto s_n_llhttp__internal__n_invoke_llhttp__on_message_complete_1;
8226 case 2:
8227 goto s_n_llhttp__internal__n_invoke_update_content_length;
8228 case 3:
8229 goto s_n_llhttp__internal__n_span_start_llhttp__on_body_1;
8230 case 4:
8231 goto s_n_llhttp__internal__n_invoke_update_finish_2;
8232 case 5:
8233 goto s_n_llhttp__internal__n_error_10;
8234 default:
8235 goto s_n_llhttp__internal__n_invoke_llhttp__on_message_complete;
8236 }
8237 /* UNREACHABLE */;
8238 abort();
8239 }
8240 case s_n_llhttp__internal__n_headers_almost_done:
8241 s_n_llhttp__internal__n_headers_almost_done: {
8242 if (p == endp) {
8243 return s_n_llhttp__internal__n_headers_almost_done;
8244 }
8245 p++;
8246 goto s_n_llhttp__internal__n_invoke_test_flags;
8247 /* UNREACHABLE */;
8248 abort();
8249 }
8250 case s_n_llhttp__internal__n_span_start_llhttp__on_header_value:
8251 s_n_llhttp__internal__n_span_start_llhttp__on_header_value: {
8252 if (p == endp) {
8253 return s_n_llhttp__internal__n_span_start_llhttp__on_header_value;
8254 }
8255 state->_span_pos0 = (void*) p;
8256 state->_span_cb0 = llhttp__on_header_value;
8257 goto s_n_llhttp__internal__n_span_end_llhttp__on_header_value;
8258 /* UNREACHABLE */;
8259 abort();
8260 }
8261 case s_n_llhttp__internal__n_header_value_discard_lws:
8262 s_n_llhttp__internal__n_header_value_discard_lws: {
8263 if (p == endp) {
8264 return s_n_llhttp__internal__n_header_value_discard_lws;
8265 }
8266 switch (*p) {
8267 case 9: {
8268 p++;
8269 goto s_n_llhttp__internal__n_header_value_discard_ws;
8270 }
8271 case ' ': {
8272 p++;
8273 goto s_n_llhttp__internal__n_header_value_discard_ws;
8274 }
8275 default: {
8276 goto s_n_llhttp__internal__n_invoke_load_header_state;
8277 }
8278 }
8279 /* UNREACHABLE */;
8280 abort();
8281 }
8282 case s_n_llhttp__internal__n_header_value_discard_ws_almost_done:
8283 s_n_llhttp__internal__n_header_value_discard_ws_almost_done: {
8284 if (p == endp) {
8285 return s_n_llhttp__internal__n_header_value_discard_ws_almost_done;
8286 }
8287 p++;
8288 goto s_n_llhttp__internal__n_header_value_discard_lws;
8289 /* UNREACHABLE */;
8290 abort();
8291 }
8292 case s_n_llhttp__internal__n_header_value_lws:
8293 s_n_llhttp__internal__n_header_value_lws: {
8294 if (p == endp) {
8295 return s_n_llhttp__internal__n_header_value_lws;
8296 }
8297 switch (*p) {
8298 case 9: {
8299 goto s_n_llhttp__internal__n_span_start_llhttp__on_header_value_1;
8300 }
8301 case ' ': {
8302 goto s_n_llhttp__internal__n_span_start_llhttp__on_header_value_1;
8303 }
8304 default: {
8305 goto s_n_llhttp__internal__n_invoke_load_header_state_3;
8306 }
8307 }
8308 /* UNREACHABLE */;
8309 abort();
8310 }
8311 case s_n_llhttp__internal__n_header_value_almost_done:
8312 s_n_llhttp__internal__n_header_value_almost_done: {
8313 if (p == endp) {
8314 return s_n_llhttp__internal__n_header_value_almost_done;
8315 }
8316 switch (*p) {
8317 case 10: {
8318 p++;
8319 goto s_n_llhttp__internal__n_header_value_lws;
8320 }
8321 default: {
8322 goto s_n_llhttp__internal__n_error_15;
8323 }
8324 }
8325 /* UNREACHABLE */;
8326 abort();
8327 }
8328 case s_n_llhttp__internal__n_header_value_lenient:
8329 s_n_llhttp__internal__n_header_value_lenient: {
8330 if (p == endp) {
8331 return s_n_llhttp__internal__n_header_value_lenient;
8332 }
8333 switch (*p) {
8334 case 10: {
8335 goto s_n_llhttp__internal__n_span_end_llhttp__on_header_value_1;
8336 }
8337 case 13: {
8338 goto s_n_llhttp__internal__n_span_end_llhttp__on_header_value_3;
8339 }
8340 default: {
8341 p++;
8342 goto s_n_llhttp__internal__n_header_value_lenient;
8343 }
8344 }
8345 /* UNREACHABLE */;
8346 abort();
8347 }
8348 case s_n_llhttp__internal__n_header_value_otherwise:
8349 s_n_llhttp__internal__n_header_value_otherwise: {
8350 if (p == endp) {
8351 return s_n_llhttp__internal__n_header_value_otherwise;
8352 }
8353 switch (*p) {
8354 case 10: {
8355 goto s_n_llhttp__internal__n_span_end_llhttp__on_header_value_1;
8356 }
8357 case 13: {
8358 goto s_n_llhttp__internal__n_span_end_llhttp__on_header_value_2;
8359 }
8360 default: {
8361 goto s_n_llhttp__internal__n_invoke_test_flags_4;
8362 }
8363 }
8364 /* UNREACHABLE */;
8365 abort();
8366 }
8367 case s_n_llhttp__internal__n_header_value_connection_token:
8368 s_n_llhttp__internal__n_header_value_connection_token: {
8369 static uint8_t lookup_table[] = {
8370 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
8371 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8372 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1,
8373 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8374 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8375 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8376 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8377 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
8378 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8379 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8380 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8381 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8382 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8383 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8384 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8385 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
8386 };
8387 if (p == endp) {
8388 return s_n_llhttp__internal__n_header_value_connection_token;
8389 }
8390 switch (lookup_table[(uint8_t) *p]) {
8391 case 1: {
8392 p++;
8393 goto s_n_llhttp__internal__n_header_value_connection_token;
8394 }
8395 case 2: {
8396 p++;
8397 goto s_n_llhttp__internal__n_header_value_connection;
8398 }
8399 default: {
8400 goto s_n_llhttp__internal__n_header_value_otherwise;
8401 }
8402 }
8403 /* UNREACHABLE */;
8404 abort();
8405 }
8406 case s_n_llhttp__internal__n_header_value_connection_ws:
8407 s_n_llhttp__internal__n_header_value_connection_ws: {
8408 if (p == endp) {
8409 return s_n_llhttp__internal__n_header_value_connection_ws;
8410 }
8411 switch (*p) {
8412 case 10: {
8413 goto s_n_llhttp__internal__n_header_value_otherwise;
8414 }
8415 case 13: {
8416 goto s_n_llhttp__internal__n_header_value_otherwise;
8417 }
8418 case ' ': {
8419 p++;
8420 goto s_n_llhttp__internal__n_header_value_connection_ws;
8421 }
8422 case ',': {
8423 p++;
8424 goto s_n_llhttp__internal__n_invoke_load_header_state_4;
8425 }
8426 default: {
8427 goto s_n_llhttp__internal__n_invoke_update_header_state_4;
8428 }
8429 }
8430 /* UNREACHABLE */;
8431 abort();
8432 }
8433 case s_n_llhttp__internal__n_header_value_connection_1:
8434 s_n_llhttp__internal__n_header_value_connection_1: {
8435 llparse_match_t match_seq;
8436
8437 if (p == endp) {
8438 return s_n_llhttp__internal__n_header_value_connection_1;
8439 }
8440 match_seq = llparse__match_sequence_to_lower(state, p, endp, llparse_blob4, 4);
8441 p = match_seq.current;
8442 switch (match_seq.status) {
8443 case kMatchComplete: {
8444 p++;
8445 goto s_n_llhttp__internal__n_invoke_update_header_state_2;
8446 }
8447 case kMatchPause: {
8448 return s_n_llhttp__internal__n_header_value_connection_1;
8449 }
8450 case kMatchMismatch: {
8451 goto s_n_llhttp__internal__n_header_value_connection_token;
8452 }
8453 }
8454 /* UNREACHABLE */;
8455 abort();
8456 }
8457 case s_n_llhttp__internal__n_header_value_connection_2:
8458 s_n_llhttp__internal__n_header_value_connection_2: {
8459 llparse_match_t match_seq;
8460
8461 if (p == endp) {
8462 return s_n_llhttp__internal__n_header_value_connection_2;
8463 }
8464 match_seq = llparse__match_sequence_to_lower(state, p, endp, llparse_blob5, 9);
8465 p = match_seq.current;
8466 switch (match_seq.status) {
8467 case kMatchComplete: {
8468 p++;
8469 goto s_n_llhttp__internal__n_invoke_update_header_state_5;
8470 }
8471 case kMatchPause: {
8472 return s_n_llhttp__internal__n_header_value_connection_2;
8473 }
8474 case kMatchMismatch: {
8475 goto s_n_llhttp__internal__n_header_value_connection_token;
8476 }
8477 }
8478 /* UNREACHABLE */;
8479 abort();
8480 }
8481 case s_n_llhttp__internal__n_header_value_connection_3:
8482 s_n_llhttp__internal__n_header_value_connection_3: {
8483 llparse_match_t match_seq;
8484
8485 if (p == endp) {
8486 return s_n_llhttp__internal__n_header_value_connection_3;
8487 }
8488 match_seq = llparse__match_sequence_to_lower(state, p, endp, llparse_blob6, 6);
8489 p = match_seq.current;
8490 switch (match_seq.status) {
8491 case kMatchComplete: {
8492 p++;
8493 goto s_n_llhttp__internal__n_invoke_update_header_state_6;
8494 }
8495 case kMatchPause: {
8496 return s_n_llhttp__internal__n_header_value_connection_3;
8497 }
8498 case kMatchMismatch: {
8499 goto s_n_llhttp__internal__n_header_value_connection_token;
8500 }
8501 }
8502 /* UNREACHABLE */;
8503 abort();
8504 }
8505 case s_n_llhttp__internal__n_header_value_connection:
8506 s_n_llhttp__internal__n_header_value_connection: {
8507 if (p == endp) {
8508 return s_n_llhttp__internal__n_header_value_connection;
8509 }
8510 switch (((*p) >= 'A' && (*p) <= 'Z' ? (*p | 0x20) : (*p))) {
8511 case 9: {
8512 p++;
8513 goto s_n_llhttp__internal__n_header_value_connection;
8514 }
8515 case ' ': {
8516 p++;
8517 goto s_n_llhttp__internal__n_header_value_connection;
8518 }
8519 case 'c': {
8520 p++;
8521 goto s_n_llhttp__internal__n_header_value_connection_1;
8522 }
8523 case 'k': {
8524 p++;
8525 goto s_n_llhttp__internal__n_header_value_connection_2;
8526 }
8527 case 'u': {
8528 p++;
8529 goto s_n_llhttp__internal__n_header_value_connection_3;
8530 }
8531 default: {
8532 goto s_n_llhttp__internal__n_header_value_connection_token;
8533 }
8534 }
8535 /* UNREACHABLE */;
8536 abort();
8537 }
8538 case s_n_llhttp__internal__n_error_18:
8539 s_n_llhttp__internal__n_error_18: {
8540 state->error = 0xb;
8541 state->reason = "Content-Length overflow";
8542 state->error_pos = (const char*) p;
8543 state->_current = (void*) (intptr_t) s_error;
8544 return s_error;
8545 /* UNREACHABLE */;
8546 abort();
8547 }
8548 case s_n_llhttp__internal__n_error_19:
8549 s_n_llhttp__internal__n_error_19: {
8550 state->error = 0xb;
8551 state->reason = "Invalid character in Content-Length";
8552 state->error_pos = (const char*) p;
8553 state->_current = (void*) (intptr_t) s_error;
8554 return s_error;
8555 /* UNREACHABLE */;
8556 abort();
8557 }
8558 case s_n_llhttp__internal__n_header_value_content_length_ws:
8559 s_n_llhttp__internal__n_header_value_content_length_ws: {
8560 if (p == endp) {
8561 return s_n_llhttp__internal__n_header_value_content_length_ws;
8562 }
8563 switch (*p) {
8564 case 10: {
8565 goto s_n_llhttp__internal__n_invoke_or_flags_15;
8566 }
8567 case 13: {
8568 goto s_n_llhttp__internal__n_invoke_or_flags_15;
8569 }
8570 case ' ': {
8571 p++;
8572 goto s_n_llhttp__internal__n_header_value_content_length_ws;
8573 }
8574 default: {
8575 goto s_n_llhttp__internal__n_span_end_llhttp__on_header_value_5;
8576 }
8577 }
8578 /* UNREACHABLE */;
8579 abort();
8580 }
8581 case s_n_llhttp__internal__n_header_value_content_length:
8582 s_n_llhttp__internal__n_header_value_content_length: {
8583 if (p == endp) {
8584 return s_n_llhttp__internal__n_header_value_content_length;
8585 }
8586 switch (*p) {
8587 case '0': {
8588 p++;
8589 match = 0;
8590 goto s_n_llhttp__internal__n_invoke_mul_add_content_length_1;
8591 }
8592 case '1': {
8593 p++;
8594 match = 1;
8595 goto s_n_llhttp__internal__n_invoke_mul_add_content_length_1;
8596 }
8597 case '2': {
8598 p++;
8599 match = 2;
8600 goto s_n_llhttp__internal__n_invoke_mul_add_content_length_1;
8601 }
8602 case '3': {
8603 p++;
8604 match = 3;
8605 goto s_n_llhttp__internal__n_invoke_mul_add_content_length_1;
8606 }
8607 case '4': {
8608 p++;
8609 match = 4;
8610 goto s_n_llhttp__internal__n_invoke_mul_add_content_length_1;
8611 }
8612 case '5': {
8613 p++;
8614 match = 5;
8615 goto s_n_llhttp__internal__n_invoke_mul_add_content_length_1;
8616 }
8617 case '6': {
8618 p++;
8619 match = 6;
8620 goto s_n_llhttp__internal__n_invoke_mul_add_content_length_1;
8621 }
8622 case '7': {
8623 p++;
8624 match = 7;
8625 goto s_n_llhttp__internal__n_invoke_mul_add_content_length_1;
8626 }
8627 case '8': {
8628 p++;
8629 match = 8;
8630 goto s_n_llhttp__internal__n_invoke_mul_add_content_length_1;
8631 }
8632 case '9': {
8633 p++;
8634 match = 9;
8635 goto s_n_llhttp__internal__n_invoke_mul_add_content_length_1;
8636 }
8637 default: {
8638 goto s_n_llhttp__internal__n_header_value_content_length_ws;
8639 }
8640 }
8641 /* UNREACHABLE */;
8642 abort();
8643 }
8644 case s_n_llhttp__internal__n_header_value_te_chunked_last:
8645 s_n_llhttp__internal__n_header_value_te_chunked_last: {
8646 if (p == endp) {
8647 return s_n_llhttp__internal__n_header_value_te_chunked_last;
8648 }
8649 switch (*p) {
8650 case 10: {
8651 goto s_n_llhttp__internal__n_invoke_update_header_state_7;
8652 }
8653 case 13: {
8654 goto s_n_llhttp__internal__n_invoke_update_header_state_7;
8655 }
8656 case ' ': {
8657 p++;
8658 goto s_n_llhttp__internal__n_header_value_te_chunked_last;
8659 }
8660 default: {
8661 goto s_n_llhttp__internal__n_header_value_te_chunked;
8662 }
8663 }
8664 /* UNREACHABLE */;
8665 abort();
8666 }
8667 case s_n_llhttp__internal__n_header_value_te_token_ows:
8668 s_n_llhttp__internal__n_header_value_te_token_ows: {
8669 if (p == endp) {
8670 return s_n_llhttp__internal__n_header_value_te_token_ows;
8671 }
8672 switch (*p) {
8673 case 9: {
8674 p++;
8675 goto s_n_llhttp__internal__n_header_value_te_token_ows;
8676 }
8677 case ' ': {
8678 p++;
8679 goto s_n_llhttp__internal__n_header_value_te_token_ows;
8680 }
8681 default: {
8682 goto s_n_llhttp__internal__n_header_value_te_chunked;
8683 }
8684 }
8685 /* UNREACHABLE */;
8686 abort();
8687 }
8688 case s_n_llhttp__internal__n_header_value:
8689 s_n_llhttp__internal__n_header_value: {
8690 static uint8_t lookup_table[] = {
8691 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
8692 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8693 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8694 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8695 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8696 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8697 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8698 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
8699 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8700 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8701 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8702 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8703 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8704 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8705 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8706 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
8707 };
8708 if (p == endp) {
8709 return s_n_llhttp__internal__n_header_value;
8710 }
8711 #ifdef __SSE4_2__
8712 if (endp - p >= 16) {
8713 __m128i ranges;
8714 __m128i input;
8715 int avail;
8716 int match_len;
8717
8718 /* Load input */
8719 input = _mm_loadu_si128((__m128i const*) p);
8720 ranges = _mm_loadu_si128((__m128i const*) llparse_blob8);
8721
8722 /* Find first character that does not match `ranges` */
8723 match_len = _mm_cmpestri(ranges, 6,
8724 input, 16,
8725 _SIDD_UBYTE_OPS | _SIDD_CMP_RANGES |
8726 _SIDD_NEGATIVE_POLARITY);
8727
8728 if (match_len != 0) {
8729 p += match_len;
8730 goto s_n_llhttp__internal__n_header_value;
8731 }
8732 goto s_n_llhttp__internal__n_header_value_otherwise;
8733 }
8734 #endif /* __SSE4_2__ */
8735 switch (lookup_table[(uint8_t) *p]) {
8736 case 1: {
8737 p++;
8738 goto s_n_llhttp__internal__n_header_value;
8739 }
8740 default: {
8741 goto s_n_llhttp__internal__n_header_value_otherwise;
8742 }
8743 }
8744 /* UNREACHABLE */;
8745 abort();
8746 }
8747 case s_n_llhttp__internal__n_header_value_te_token:
8748 s_n_llhttp__internal__n_header_value_te_token: {
8749 static uint8_t lookup_table[] = {
8750 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
8751 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8752 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1,
8753 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8754 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8755 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8756 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8757 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
8758 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8759 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8760 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8761 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8762 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8763 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8764 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8765 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
8766 };
8767 if (p == endp) {
8768 return s_n_llhttp__internal__n_header_value_te_token;
8769 }
8770 switch (lookup_table[(uint8_t) *p]) {
8771 case 1: {
8772 p++;
8773 goto s_n_llhttp__internal__n_header_value_te_token;
8774 }
8775 case 2: {
8776 p++;
8777 goto s_n_llhttp__internal__n_header_value_te_token_ows;
8778 }
8779 default: {
8780 goto s_n_llhttp__internal__n_invoke_update_header_state_8;
8781 }
8782 }
8783 /* UNREACHABLE */;
8784 abort();
8785 }
8786 case s_n_llhttp__internal__n_header_value_te_chunked:
8787 s_n_llhttp__internal__n_header_value_te_chunked: {
8788 llparse_match_t match_seq;
8789
8790 if (p == endp) {
8791 return s_n_llhttp__internal__n_header_value_te_chunked;
8792 }
8793 match_seq = llparse__match_sequence_to_lower_unsafe(state, p, endp, llparse_blob7, 7);
8794 p = match_seq.current;
8795 switch (match_seq.status) {
8796 case kMatchComplete: {
8797 p++;
8798 goto s_n_llhttp__internal__n_header_value_te_chunked_last;
8799 }
8800 case kMatchPause: {
8801 return s_n_llhttp__internal__n_header_value_te_chunked;
8802 }
8803 case kMatchMismatch: {
8804 goto s_n_llhttp__internal__n_header_value_te_token;
8805 }
8806 }
8807 /* UNREACHABLE */;
8808 abort();
8809 }
8810 case s_n_llhttp__internal__n_span_start_llhttp__on_header_value_1:
8811 s_n_llhttp__internal__n_span_start_llhttp__on_header_value_1: {
8812 if (p == endp) {
8813 return s_n_llhttp__internal__n_span_start_llhttp__on_header_value_1;
8814 }
8815 state->_span_pos0 = (void*) p;
8816 state->_span_cb0 = llhttp__on_header_value;
8817 goto s_n_llhttp__internal__n_invoke_load_header_state_2;
8818 /* UNREACHABLE */;
8819 abort();
8820 }
8821 case s_n_llhttp__internal__n_header_value_discard_ws:
8822 s_n_llhttp__internal__n_header_value_discard_ws: {
8823 if (p == endp) {
8824 return s_n_llhttp__internal__n_header_value_discard_ws;
8825 }
8826 switch (*p) {
8827 case 9: {
8828 p++;
8829 goto s_n_llhttp__internal__n_header_value_discard_ws;
8830 }
8831 case 10: {
8832 p++;
8833 goto s_n_llhttp__internal__n_header_value_discard_lws;
8834 }
8835 case 13: {
8836 p++;
8837 goto s_n_llhttp__internal__n_header_value_discard_ws_almost_done;
8838 }
8839 case ' ': {
8840 p++;
8841 goto s_n_llhttp__internal__n_header_value_discard_ws;
8842 }
8843 default: {
8844 goto s_n_llhttp__internal__n_span_start_llhttp__on_header_value_1;
8845 }
8846 }
8847 /* UNREACHABLE */;
8848 abort();
8849 }
8850 case s_n_llhttp__internal__n_header_field_general_otherwise:
8851 s_n_llhttp__internal__n_header_field_general_otherwise: {
8852 if (p == endp) {
8853 return s_n_llhttp__internal__n_header_field_general_otherwise;
8854 }
8855 switch (*p) {
8856 case ':': {
8857 goto s_n_llhttp__internal__n_span_end_llhttp__on_header_field_1;
8858 }
8859 default: {
8860 goto s_n_llhttp__internal__n_error_20;
8861 }
8862 }
8863 /* UNREACHABLE */;
8864 abort();
8865 }
8866 case s_n_llhttp__internal__n_header_field_general:
8867 s_n_llhttp__internal__n_header_field_general: {
8868 static uint8_t lookup_table[] = {
8869 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8870 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8871 1, 1, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 1, 1, 0,
8872 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0,
8873 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8874 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1,
8875 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
8876 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0,
8877 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8878 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8879 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8880 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8881 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8882 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8883 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
8884 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
8885 };
8886 if (p == endp) {
8887 return s_n_llhttp__internal__n_header_field_general;
8888 }
8889 #ifdef __SSE4_2__
8890 if (endp - p >= 16) {
8891 __m128i ranges;
8892 __m128i input;
8893 int avail;
8894 int match_len;
8895
8896 /* Load input */
8897 input = _mm_loadu_si128((__m128i const*) p);
8898 ranges = _mm_loadu_si128((__m128i const*) llparse_blob9);
8899
8900 /* Find first character that does not match `ranges` */
8901 match_len = _mm_cmpestri(ranges, 16,
8902 input, 16,
8903 _SIDD_UBYTE_OPS | _SIDD_CMP_RANGES |
8904 _SIDD_NEGATIVE_POLARITY);
8905
8906 if (match_len != 0) {
8907 p += match_len;
8908 goto s_n_llhttp__internal__n_header_field_general;
8909 }
8910 ranges = _mm_loadu_si128((__m128i const*) llparse_blob10);
8911
8912 /* Find first character that does not match `ranges` */
8913 match_len = _mm_cmpestri(ranges, 2,
8914 input, 16,
8915 _SIDD_UBYTE_OPS | _SIDD_CMP_RANGES |
8916 _SIDD_NEGATIVE_POLARITY);
8917
8918 if (match_len != 0) {
8919 p += match_len;
8920 goto s_n_llhttp__internal__n_header_field_general;
8921 }
8922 goto s_n_llhttp__internal__n_header_field_general_otherwise;
8923 }
8924 #endif /* __SSE4_2__ */
8925 switch (lookup_table[(uint8_t) *p]) {
8926 case 1: {
8927 p++;
8928 goto s_n_llhttp__internal__n_header_field_general;
8929 }
8930 default: {
8931 goto s_n_llhttp__internal__n_header_field_general_otherwise;
8932 }
8933 }
8934 /* UNREACHABLE */;
8935 abort();
8936 }
8937 case s_n_llhttp__internal__n_header_field_colon:
8938 s_n_llhttp__internal__n_header_field_colon: {
8939 if (p == endp) {
8940 return s_n_llhttp__internal__n_header_field_colon;
8941 }
8942 switch (*p) {
8943 case ' ': {
8944 p++;
8945 goto s_n_llhttp__internal__n_header_field_colon;
8946 }
8947 case ':': {
8948 goto s_n_llhttp__internal__n_span_end_llhttp__on_header_field;
8949 }
8950 default: {
8951 goto s_n_llhttp__internal__n_invoke_update_header_state_9;
8952 }
8953 }
8954 /* UNREACHABLE */;
8955 abort();
8956 }
8957 case s_n_llhttp__internal__n_header_field_3:
8958 s_n_llhttp__internal__n_header_field_3: {
8959 llparse_match_t match_seq;
8960
8961 if (p == endp) {
8962 return s_n_llhttp__internal__n_header_field_3;
8963 }
8964 match_seq = llparse__match_sequence_to_lower(state, p, endp, llparse_blob3, 6);
8965 p = match_seq.current;
8966 switch (match_seq.status) {
8967 case kMatchComplete: {
8968 p++;
8969 match = 1;
8970 goto s_n_llhttp__internal__n_invoke_store_header_state;
8971 }
8972 case kMatchPause: {
8973 return s_n_llhttp__internal__n_header_field_3;
8974 }
8975 case kMatchMismatch: {
8976 goto s_n_llhttp__internal__n_invoke_update_header_state_10;
8977 }
8978 }
8979 /* UNREACHABLE */;
8980 abort();
8981 }
8982 case s_n_llhttp__internal__n_header_field_4:
8983 s_n_llhttp__internal__n_header_field_4: {
8984 llparse_match_t match_seq;
8985
8986 if (p == endp) {
8987 return s_n_llhttp__internal__n_header_field_4;
8988 }
8989 match_seq = llparse__match_sequence_to_lower(state, p, endp, llparse_blob11, 10);
8990 p = match_seq.current;
8991 switch (match_seq.status) {
8992 case kMatchComplete: {
8993 p++;
8994 match = 2;
8995 goto s_n_llhttp__internal__n_invoke_store_header_state;
8996 }
8997 case kMatchPause: {
8998 return s_n_llhttp__internal__n_header_field_4;
8999 }
9000 case kMatchMismatch: {
9001 goto s_n_llhttp__internal__n_invoke_update_header_state_10;
9002 }
9003 }
9004 /* UNREACHABLE */;
9005 abort();
9006 }
9007 case s_n_llhttp__internal__n_header_field_2:
9008 s_n_llhttp__internal__n_header_field_2: {
9009 if (p == endp) {
9010 return s_n_llhttp__internal__n_header_field_2;
9011 }
9012 switch (((*p) >= 'A' && (*p) <= 'Z' ? (*p | 0x20) : (*p))) {
9013 case 'n': {
9014 p++;
9015 goto s_n_llhttp__internal__n_header_field_3;
9016 }
9017 case 't': {
9018 p++;
9019 goto s_n_llhttp__internal__n_header_field_4;
9020 }
9021 default: {
9022 goto s_n_llhttp__internal__n_invoke_update_header_state_10;
9023 }
9024 }
9025 /* UNREACHABLE */;
9026 abort();
9027 }
9028 case s_n_llhttp__internal__n_header_field_1:
9029 s_n_llhttp__internal__n_header_field_1: {
9030 llparse_match_t match_seq;
9031
9032 if (p == endp) {
9033 return s_n_llhttp__internal__n_header_field_1;
9034 }
9035 match_seq = llparse__match_sequence_to_lower(state, p, endp, llparse_blob2, 2);
9036 p = match_seq.current;
9037 switch (match_seq.status) {
9038 case kMatchComplete: {
9039 p++;
9040 goto s_n_llhttp__internal__n_header_field_2;
9041 }
9042 case kMatchPause: {
9043 return s_n_llhttp__internal__n_header_field_1;
9044 }
9045 case kMatchMismatch: {
9046 goto s_n_llhttp__internal__n_invoke_update_header_state_10;
9047 }
9048 }
9049 /* UNREACHABLE */;
9050 abort();
9051 }
9052 case s_n_llhttp__internal__n_header_field_5:
9053 s_n_llhttp__internal__n_header_field_5: {
9054 llparse_match_t match_seq;
9055
9056 if (p == endp) {
9057 return s_n_llhttp__internal__n_header_field_5;
9058 }
9059 match_seq = llparse__match_sequence_to_lower(state, p, endp, llparse_blob12, 15);
9060 p = match_seq.current;
9061 switch (match_seq.status) {
9062 case kMatchComplete: {
9063 p++;
9064 match = 1;
9065 goto s_n_llhttp__internal__n_invoke_store_header_state;
9066 }
9067 case kMatchPause: {
9068 return s_n_llhttp__internal__n_header_field_5;
9069 }
9070 case kMatchMismatch: {
9071 goto s_n_llhttp__internal__n_invoke_update_header_state_10;
9072 }
9073 }
9074 /* UNREACHABLE */;
9075 abort();
9076 }
9077 case s_n_llhttp__internal__n_header_field_6:
9078 s_n_llhttp__internal__n_header_field_6: {
9079 llparse_match_t match_seq;
9080
9081 if (p == endp) {
9082 return s_n_llhttp__internal__n_header_field_6;
9083 }
9084 match_seq = llparse__match_sequence_to_lower(state, p, endp, llparse_blob13, 16);
9085 p = match_seq.current;
9086 switch (match_seq.status) {
9087 case kMatchComplete: {
9088 p++;
9089 match = 3;
9090 goto s_n_llhttp__internal__n_invoke_store_header_state;
9091 }
9092 case kMatchPause: {
9093 return s_n_llhttp__internal__n_header_field_6;
9094 }
9095 case kMatchMismatch: {
9096 goto s_n_llhttp__internal__n_invoke_update_header_state_10;
9097 }
9098 }
9099 /* UNREACHABLE */;
9100 abort();
9101 }
9102 case s_n_llhttp__internal__n_header_field_7:
9103 s_n_llhttp__internal__n_header_field_7: {
9104 llparse_match_t match_seq;
9105
9106 if (p == endp) {
9107 return s_n_llhttp__internal__n_header_field_7;
9108 }
9109 match_seq = llparse__match_sequence_to_lower(state, p, endp, llparse_blob14, 6);
9110 p = match_seq.current;
9111 switch (match_seq.status) {
9112 case kMatchComplete: {
9113 p++;
9114 match = 4;
9115 goto s_n_llhttp__internal__n_invoke_store_header_state;
9116 }
9117 case kMatchPause: {
9118 return s_n_llhttp__internal__n_header_field_7;
9119 }
9120 case kMatchMismatch: {
9121 goto s_n_llhttp__internal__n_invoke_update_header_state_10;
9122 }
9123 }
9124 /* UNREACHABLE */;
9125 abort();
9126 }
9127 case s_n_llhttp__internal__n_header_field:
9128 s_n_llhttp__internal__n_header_field: {
9129 if (p == endp) {
9130 return s_n_llhttp__internal__n_header_field;
9131 }
9132 switch (((*p) >= 'A' && (*p) <= 'Z' ? (*p | 0x20) : (*p))) {
9133 case 'c': {
9134 p++;
9135 goto s_n_llhttp__internal__n_header_field_1;
9136 }
9137 case 'p': {
9138 p++;
9139 goto s_n_llhttp__internal__n_header_field_5;
9140 }
9141 case 't': {
9142 p++;
9143 goto s_n_llhttp__internal__n_header_field_6;
9144 }
9145 case 'u': {
9146 p++;
9147 goto s_n_llhttp__internal__n_header_field_7;
9148 }
9149 default: {
9150 goto s_n_llhttp__internal__n_invoke_update_header_state_10;
9151 }
9152 }
9153 /* UNREACHABLE */;
9154 abort();
9155 }
9156 case s_n_llhttp__internal__n_span_start_llhttp__on_header_field:
9157 s_n_llhttp__internal__n_span_start_llhttp__on_header_field: {
9158 if (p == endp) {
9159 return s_n_llhttp__internal__n_span_start_llhttp__on_header_field;
9160 }
9161 state->_span_pos0 = (void*) p;
9162 state->_span_cb0 = llhttp__on_header_field;
9163 goto s_n_llhttp__internal__n_header_field;
9164 /* UNREACHABLE */;
9165 abort();
9166 }
9167 case s_n_llhttp__internal__n_header_field_start:
9168 s_n_llhttp__internal__n_header_field_start: {
9169 if (p == endp) {
9170 return s_n_llhttp__internal__n_header_field_start;
9171 }
9172 switch (*p) {
9173 case 10: {
9174 goto s_n_llhttp__internal__n_headers_almost_done;
9175 }
9176 case 13: {
9177 p++;
9178 goto s_n_llhttp__internal__n_headers_almost_done;
9179 }
9180 default: {
9181 goto s_n_llhttp__internal__n_span_start_llhttp__on_header_field;
9182 }
9183 }
9184 /* UNREACHABLE */;
9185 abort();
9186 }
9187 case s_n_llhttp__internal__n_url_skip_to_http09:
9188 s_n_llhttp__internal__n_url_skip_to_http09: {
9189 if (p == endp) {
9190 return s_n_llhttp__internal__n_url_skip_to_http09;
9191 }
9192 p++;
9193 goto s_n_llhttp__internal__n_invoke_update_http_major;
9194 /* UNREACHABLE */;
9195 abort();
9196 }
9197 case s_n_llhttp__internal__n_url_skip_lf_to_http09:
9198 s_n_llhttp__internal__n_url_skip_lf_to_http09: {
9199 llparse_match_t match_seq;
9200
9201 if (p == endp) {
9202 return s_n_llhttp__internal__n_url_skip_lf_to_http09;
9203 }
9204 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob15, 2);
9205 p = match_seq.current;
9206 switch (match_seq.status) {
9207 case kMatchComplete: {
9208 p++;
9209 goto s_n_llhttp__internal__n_invoke_update_http_major;
9210 }
9211 case kMatchPause: {
9212 return s_n_llhttp__internal__n_url_skip_lf_to_http09;
9213 }
9214 case kMatchMismatch: {
9215 goto s_n_llhttp__internal__n_error_21;
9216 }
9217 }
9218 /* UNREACHABLE */;
9219 abort();
9220 }
9221 case s_n_llhttp__internal__n_req_http_end_1:
9222 s_n_llhttp__internal__n_req_http_end_1: {
9223 if (p == endp) {
9224 return s_n_llhttp__internal__n_req_http_end_1;
9225 }
9226 switch (*p) {
9227 case 10: {
9228 p++;
9229 goto s_n_llhttp__internal__n_header_field_start;
9230 }
9231 default: {
9232 goto s_n_llhttp__internal__n_error_22;
9233 }
9234 }
9235 /* UNREACHABLE */;
9236 abort();
9237 }
9238 case s_n_llhttp__internal__n_req_http_end:
9239 s_n_llhttp__internal__n_req_http_end: {
9240 if (p == endp) {
9241 return s_n_llhttp__internal__n_req_http_end;
9242 }
9243 switch (*p) {
9244 case 10: {
9245 p++;
9246 goto s_n_llhttp__internal__n_header_field_start;
9247 }
9248 case 13: {
9249 p++;
9250 goto s_n_llhttp__internal__n_req_http_end_1;
9251 }
9252 default: {
9253 goto s_n_llhttp__internal__n_error_22;
9254 }
9255 }
9256 /* UNREACHABLE */;
9257 abort();
9258 }
9259 case s_n_llhttp__internal__n_req_http_minor:
9260 s_n_llhttp__internal__n_req_http_minor: {
9261 if (p == endp) {
9262 return s_n_llhttp__internal__n_req_http_minor;
9263 }
9264 switch (*p) {
9265 case '0': {
9266 p++;
9267 match = 0;
9268 goto s_n_llhttp__internal__n_invoke_store_http_minor;
9269 }
9270 case '1': {
9271 p++;
9272 match = 1;
9273 goto s_n_llhttp__internal__n_invoke_store_http_minor;
9274 }
9275 case '2': {
9276 p++;
9277 match = 2;
9278 goto s_n_llhttp__internal__n_invoke_store_http_minor;
9279 }
9280 case '3': {
9281 p++;
9282 match = 3;
9283 goto s_n_llhttp__internal__n_invoke_store_http_minor;
9284 }
9285 case '4': {
9286 p++;
9287 match = 4;
9288 goto s_n_llhttp__internal__n_invoke_store_http_minor;
9289 }
9290 case '5': {
9291 p++;
9292 match = 5;
9293 goto s_n_llhttp__internal__n_invoke_store_http_minor;
9294 }
9295 case '6': {
9296 p++;
9297 match = 6;
9298 goto s_n_llhttp__internal__n_invoke_store_http_minor;
9299 }
9300 case '7': {
9301 p++;
9302 match = 7;
9303 goto s_n_llhttp__internal__n_invoke_store_http_minor;
9304 }
9305 case '8': {
9306 p++;
9307 match = 8;
9308 goto s_n_llhttp__internal__n_invoke_store_http_minor;
9309 }
9310 case '9': {
9311 p++;
9312 match = 9;
9313 goto s_n_llhttp__internal__n_invoke_store_http_minor;
9314 }
9315 default: {
9316 goto s_n_llhttp__internal__n_error_23;
9317 }
9318 }
9319 /* UNREACHABLE */;
9320 abort();
9321 }
9322 case s_n_llhttp__internal__n_req_http_dot:
9323 s_n_llhttp__internal__n_req_http_dot: {
9324 if (p == endp) {
9325 return s_n_llhttp__internal__n_req_http_dot;
9326 }
9327 switch (*p) {
9328 case '.': {
9329 p++;
9330 goto s_n_llhttp__internal__n_req_http_minor;
9331 }
9332 default: {
9333 goto s_n_llhttp__internal__n_error_24;
9334 }
9335 }
9336 /* UNREACHABLE */;
9337 abort();
9338 }
9339 case s_n_llhttp__internal__n_req_http_major:
9340 s_n_llhttp__internal__n_req_http_major: {
9341 if (p == endp) {
9342 return s_n_llhttp__internal__n_req_http_major;
9343 }
9344 switch (*p) {
9345 case '0': {
9346 p++;
9347 match = 0;
9348 goto s_n_llhttp__internal__n_invoke_store_http_major;
9349 }
9350 case '1': {
9351 p++;
9352 match = 1;
9353 goto s_n_llhttp__internal__n_invoke_store_http_major;
9354 }
9355 case '2': {
9356 p++;
9357 match = 2;
9358 goto s_n_llhttp__internal__n_invoke_store_http_major;
9359 }
9360 case '3': {
9361 p++;
9362 match = 3;
9363 goto s_n_llhttp__internal__n_invoke_store_http_major;
9364 }
9365 case '4': {
9366 p++;
9367 match = 4;
9368 goto s_n_llhttp__internal__n_invoke_store_http_major;
9369 }
9370 case '5': {
9371 p++;
9372 match = 5;
9373 goto s_n_llhttp__internal__n_invoke_store_http_major;
9374 }
9375 case '6': {
9376 p++;
9377 match = 6;
9378 goto s_n_llhttp__internal__n_invoke_store_http_major;
9379 }
9380 case '7': {
9381 p++;
9382 match = 7;
9383 goto s_n_llhttp__internal__n_invoke_store_http_major;
9384 }
9385 case '8': {
9386 p++;
9387 match = 8;
9388 goto s_n_llhttp__internal__n_invoke_store_http_major;
9389 }
9390 case '9': {
9391 p++;
9392 match = 9;
9393 goto s_n_llhttp__internal__n_invoke_store_http_major;
9394 }
9395 default: {
9396 goto s_n_llhttp__internal__n_error_25;
9397 }
9398 }
9399 /* UNREACHABLE */;
9400 abort();
9401 }
9402 case s_n_llhttp__internal__n_req_http_start_1:
9403 s_n_llhttp__internal__n_req_http_start_1: {
9404 llparse_match_t match_seq;
9405
9406 if (p == endp) {
9407 return s_n_llhttp__internal__n_req_http_start_1;
9408 }
9409 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob16, 4);
9410 p = match_seq.current;
9411 switch (match_seq.status) {
9412 case kMatchComplete: {
9413 p++;
9414 goto s_n_llhttp__internal__n_req_http_major;
9415 }
9416 case kMatchPause: {
9417 return s_n_llhttp__internal__n_req_http_start_1;
9418 }
9419 case kMatchMismatch: {
9420 goto s_n_llhttp__internal__n_error_27;
9421 }
9422 }
9423 /* UNREACHABLE */;
9424 abort();
9425 }
9426 case s_n_llhttp__internal__n_req_http_start_2:
9427 s_n_llhttp__internal__n_req_http_start_2: {
9428 llparse_match_t match_seq;
9429
9430 if (p == endp) {
9431 return s_n_llhttp__internal__n_req_http_start_2;
9432 }
9433 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob17, 3);
9434 p = match_seq.current;
9435 switch (match_seq.status) {
9436 case kMatchComplete: {
9437 p++;
9438 goto s_n_llhttp__internal__n_invoke_is_equal_method_1;
9439 }
9440 case kMatchPause: {
9441 return s_n_llhttp__internal__n_req_http_start_2;
9442 }
9443 case kMatchMismatch: {
9444 goto s_n_llhttp__internal__n_error_27;
9445 }
9446 }
9447 /* UNREACHABLE */;
9448 abort();
9449 }
9450 case s_n_llhttp__internal__n_req_http_start:
9451 s_n_llhttp__internal__n_req_http_start: {
9452 if (p == endp) {
9453 return s_n_llhttp__internal__n_req_http_start;
9454 }
9455 switch (*p) {
9456 case ' ': {
9457 p++;
9458 goto s_n_llhttp__internal__n_req_http_start;
9459 }
9460 case 'H': {
9461 p++;
9462 goto s_n_llhttp__internal__n_req_http_start_1;
9463 }
9464 case 'I': {
9465 p++;
9466 goto s_n_llhttp__internal__n_req_http_start_2;
9467 }
9468 default: {
9469 goto s_n_llhttp__internal__n_error_27;
9470 }
9471 }
9472 /* UNREACHABLE */;
9473 abort();
9474 }
9475 case s_n_llhttp__internal__n_url_skip_to_http:
9476 s_n_llhttp__internal__n_url_skip_to_http: {
9477 if (p == endp) {
9478 return s_n_llhttp__internal__n_url_skip_to_http;
9479 }
9480 p++;
9481 goto s_n_llhttp__internal__n_req_http_start;
9482 /* UNREACHABLE */;
9483 abort();
9484 }
9485 case s_n_llhttp__internal__n_url_fragment:
9486 s_n_llhttp__internal__n_url_fragment: {
9487 static uint8_t lookup_table[] = {
9488 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 1, 3, 0, 0,
9489 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9490 4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9491 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9492 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9493 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9494 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9495 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
9496 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9497 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9498 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9499 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9500 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9501 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9502 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9503 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
9504 };
9505 if (p == endp) {
9506 return s_n_llhttp__internal__n_url_fragment;
9507 }
9508 switch (lookup_table[(uint8_t) *p]) {
9509 case 1: {
9510 p++;
9511 goto s_n_llhttp__internal__n_url_fragment;
9512 }
9513 case 2: {
9514 goto s_n_llhttp__internal__n_span_end_llhttp__on_url_6;
9515 }
9516 case 3: {
9517 goto s_n_llhttp__internal__n_span_end_llhttp__on_url_7;
9518 }
9519 case 4: {
9520 goto s_n_llhttp__internal__n_span_end_llhttp__on_url_8;
9521 }
9522 default: {
9523 goto s_n_llhttp__internal__n_error_28;
9524 }
9525 }
9526 /* UNREACHABLE */;
9527 abort();
9528 }
9529 case s_n_llhttp__internal__n_span_end_stub_query_3:
9530 s_n_llhttp__internal__n_span_end_stub_query_3: {
9531 if (p == endp) {
9532 return s_n_llhttp__internal__n_span_end_stub_query_3;
9533 }
9534 p++;
9535 goto s_n_llhttp__internal__n_url_fragment;
9536 /* UNREACHABLE */;
9537 abort();
9538 }
9539 case s_n_llhttp__internal__n_url_query:
9540 s_n_llhttp__internal__n_url_query: {
9541 static uint8_t lookup_table[] = {
9542 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 0, 1, 3, 0, 0,
9543 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9544 4, 1, 1, 5, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9545 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9546 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9547 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9548 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9549 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
9550 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9551 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9552 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9553 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9554 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9555 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9556 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9557 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
9558 };
9559 if (p == endp) {
9560 return s_n_llhttp__internal__n_url_query;
9561 }
9562 switch (lookup_table[(uint8_t) *p]) {
9563 case 1: {
9564 p++;
9565 goto s_n_llhttp__internal__n_url_query;
9566 }
9567 case 2: {
9568 goto s_n_llhttp__internal__n_span_end_llhttp__on_url_9;
9569 }
9570 case 3: {
9571 goto s_n_llhttp__internal__n_span_end_llhttp__on_url_10;
9572 }
9573 case 4: {
9574 goto s_n_llhttp__internal__n_span_end_llhttp__on_url_11;
9575 }
9576 case 5: {
9577 goto s_n_llhttp__internal__n_span_end_stub_query_3;
9578 }
9579 default: {
9580 goto s_n_llhttp__internal__n_error_29;
9581 }
9582 }
9583 /* UNREACHABLE */;
9584 abort();
9585 }
9586 case s_n_llhttp__internal__n_url_query_or_fragment:
9587 s_n_llhttp__internal__n_url_query_or_fragment: {
9588 if (p == endp) {
9589 return s_n_llhttp__internal__n_url_query_or_fragment;
9590 }
9591 switch (*p) {
9592 case 10: {
9593 goto s_n_llhttp__internal__n_span_end_llhttp__on_url_3;
9594 }
9595 case 13: {
9596 goto s_n_llhttp__internal__n_span_end_llhttp__on_url_4;
9597 }
9598 case ' ': {
9599 goto s_n_llhttp__internal__n_span_end_llhttp__on_url_5;
9600 }
9601 case '#': {
9602 p++;
9603 goto s_n_llhttp__internal__n_url_fragment;
9604 }
9605 case '?': {
9606 p++;
9607 goto s_n_llhttp__internal__n_url_query;
9608 }
9609 default: {
9610 goto s_n_llhttp__internal__n_error_30;
9611 }
9612 }
9613 /* UNREACHABLE */;
9614 abort();
9615 }
9616 case s_n_llhttp__internal__n_url_path:
9617 s_n_llhttp__internal__n_url_path: {
9618 static uint8_t lookup_table[] = {
9619 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0,
9620 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9621 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9622 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
9623 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9624 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9625 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9626 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0,
9627 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9628 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9629 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9630 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9631 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9632 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9633 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
9634 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1
9635 };
9636 if (p == endp) {
9637 return s_n_llhttp__internal__n_url_path;
9638 }
9639 #ifdef __SSE4_2__
9640 if (endp - p >= 16) {
9641 __m128i ranges;
9642 __m128i input;
9643 int avail;
9644 int match_len;
9645
9646 /* Load input */
9647 input = _mm_loadu_si128((__m128i const*) p);
9648 ranges = _mm_loadu_si128((__m128i const*) llparse_blob1);
9649
9650 /* Find first character that does not match `ranges` */
9651 match_len = _mm_cmpestri(ranges, 12,
9652 input, 16,
9653 _SIDD_UBYTE_OPS | _SIDD_CMP_RANGES |
9654 _SIDD_NEGATIVE_POLARITY);
9655
9656 if (match_len != 0) {
9657 p += match_len;
9658 goto s_n_llhttp__internal__n_url_path;
9659 }
9660 goto s_n_llhttp__internal__n_url_query_or_fragment;
9661 }
9662 #endif /* __SSE4_2__ */
9663 switch (lookup_table[(uint8_t) *p]) {
9664 case 1: {
9665 p++;
9666 goto s_n_llhttp__internal__n_url_path;
9667 }
9668 default: {
9669 goto s_n_llhttp__internal__n_url_query_or_fragment;
9670 }
9671 }
9672 /* UNREACHABLE */;
9673 abort();
9674 }
9675 case s_n_llhttp__internal__n_span_start_stub_path_2:
9676 s_n_llhttp__internal__n_span_start_stub_path_2: {
9677 if (p == endp) {
9678 return s_n_llhttp__internal__n_span_start_stub_path_2;
9679 }
9680 p++;
9681 goto s_n_llhttp__internal__n_url_path;
9682 /* UNREACHABLE */;
9683 abort();
9684 }
9685 case s_n_llhttp__internal__n_span_start_stub_path:
9686 s_n_llhttp__internal__n_span_start_stub_path: {
9687 if (p == endp) {
9688 return s_n_llhttp__internal__n_span_start_stub_path;
9689 }
9690 p++;
9691 goto s_n_llhttp__internal__n_url_path;
9692 /* UNREACHABLE */;
9693 abort();
9694 }
9695 case s_n_llhttp__internal__n_span_start_stub_path_1:
9696 s_n_llhttp__internal__n_span_start_stub_path_1: {
9697 if (p == endp) {
9698 return s_n_llhttp__internal__n_span_start_stub_path_1;
9699 }
9700 p++;
9701 goto s_n_llhttp__internal__n_url_path;
9702 /* UNREACHABLE */;
9703 abort();
9704 }
9705 case s_n_llhttp__internal__n_url_server_with_at:
9706 s_n_llhttp__internal__n_url_server_with_at: {
9707 static uint8_t lookup_table[] = {
9708 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0,
9709 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9710 3, 4, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5,
9711 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4, 0, 6,
9712 7, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
9713 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4, 0, 4,
9714 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
9715 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 4, 0,
9716 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9717 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9718 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9719 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9720 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9721 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9722 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9723 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
9724 };
9725 if (p == endp) {
9726 return s_n_llhttp__internal__n_url_server_with_at;
9727 }
9728 switch (lookup_table[(uint8_t) *p]) {
9729 case 1: {
9730 goto s_n_llhttp__internal__n_span_end_llhttp__on_url_12;
9731 }
9732 case 2: {
9733 goto s_n_llhttp__internal__n_span_end_llhttp__on_url_13;
9734 }
9735 case 3: {
9736 goto s_n_llhttp__internal__n_span_end_llhttp__on_url_14;
9737 }
9738 case 4: {
9739 p++;
9740 goto s_n_llhttp__internal__n_url_server;
9741 }
9742 case 5: {
9743 goto s_n_llhttp__internal__n_span_start_stub_path_1;
9744 }
9745 case 6: {
9746 p++;
9747 goto s_n_llhttp__internal__n_url_query;
9748 }
9749 case 7: {
9750 p++;
9751 goto s_n_llhttp__internal__n_error_31;
9752 }
9753 default: {
9754 goto s_n_llhttp__internal__n_error_32;
9755 }
9756 }
9757 /* UNREACHABLE */;
9758 abort();
9759 }
9760 case s_n_llhttp__internal__n_url_server:
9761 s_n_llhttp__internal__n_url_server: {
9762 static uint8_t lookup_table[] = {
9763 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 2, 0, 0,
9764 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9765 3, 4, 0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5,
9766 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4, 0, 6,
9767 7, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
9768 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 4, 0, 4,
9769 0, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
9770 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0, 0, 4, 0,
9771 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9772 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9773 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9774 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9775 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9776 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9777 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9778 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
9779 };
9780 if (p == endp) {
9781 return s_n_llhttp__internal__n_url_server;
9782 }
9783 switch (lookup_table[(uint8_t) *p]) {
9784 case 1: {
9785 goto s_n_llhttp__internal__n_span_end_llhttp__on_url;
9786 }
9787 case 2: {
9788 goto s_n_llhttp__internal__n_span_end_llhttp__on_url_1;
9789 }
9790 case 3: {
9791 goto s_n_llhttp__internal__n_span_end_llhttp__on_url_2;
9792 }
9793 case 4: {
9794 p++;
9795 goto s_n_llhttp__internal__n_url_server;
9796 }
9797 case 5: {
9798 goto s_n_llhttp__internal__n_span_start_stub_path;
9799 }
9800 case 6: {
9801 p++;
9802 goto s_n_llhttp__internal__n_url_query;
9803 }
9804 case 7: {
9805 p++;
9806 goto s_n_llhttp__internal__n_url_server_with_at;
9807 }
9808 default: {
9809 goto s_n_llhttp__internal__n_error_33;
9810 }
9811 }
9812 /* UNREACHABLE */;
9813 abort();
9814 }
9815 case s_n_llhttp__internal__n_url_schema_delim_1:
9816 s_n_llhttp__internal__n_url_schema_delim_1: {
9817 if (p == endp) {
9818 return s_n_llhttp__internal__n_url_schema_delim_1;
9819 }
9820 switch (*p) {
9821 case '/': {
9822 p++;
9823 goto s_n_llhttp__internal__n_url_server;
9824 }
9825 default: {
9826 goto s_n_llhttp__internal__n_error_35;
9827 }
9828 }
9829 /* UNREACHABLE */;
9830 abort();
9831 }
9832 case s_n_llhttp__internal__n_url_schema_delim:
9833 s_n_llhttp__internal__n_url_schema_delim: {
9834 if (p == endp) {
9835 return s_n_llhttp__internal__n_url_schema_delim;
9836 }
9837 switch (*p) {
9838 case 10: {
9839 p++;
9840 goto s_n_llhttp__internal__n_error_34;
9841 }
9842 case 13: {
9843 p++;
9844 goto s_n_llhttp__internal__n_error_34;
9845 }
9846 case ' ': {
9847 p++;
9848 goto s_n_llhttp__internal__n_error_34;
9849 }
9850 case '/': {
9851 p++;
9852 goto s_n_llhttp__internal__n_url_schema_delim_1;
9853 }
9854 default: {
9855 goto s_n_llhttp__internal__n_error_35;
9856 }
9857 }
9858 /* UNREACHABLE */;
9859 abort();
9860 }
9861 case s_n_llhttp__internal__n_span_end_stub_schema:
9862 s_n_llhttp__internal__n_span_end_stub_schema: {
9863 if (p == endp) {
9864 return s_n_llhttp__internal__n_span_end_stub_schema;
9865 }
9866 p++;
9867 goto s_n_llhttp__internal__n_url_schema_delim;
9868 /* UNREACHABLE */;
9869 abort();
9870 }
9871 case s_n_llhttp__internal__n_url_schema:
9872 s_n_llhttp__internal__n_url_schema: {
9873 static uint8_t lookup_table[] = {
9874 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0,
9875 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9876 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9877 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0,
9878 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
9879 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0,
9880 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
9881 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0,
9882 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9883 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9884 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9885 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9886 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9887 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9888 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9889 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
9890 };
9891 if (p == endp) {
9892 return s_n_llhttp__internal__n_url_schema;
9893 }
9894 switch (lookup_table[(uint8_t) *p]) {
9895 case 1: {
9896 p++;
9897 goto s_n_llhttp__internal__n_error_34;
9898 }
9899 case 2: {
9900 goto s_n_llhttp__internal__n_span_end_stub_schema;
9901 }
9902 case 3: {
9903 p++;
9904 goto s_n_llhttp__internal__n_url_schema;
9905 }
9906 default: {
9907 goto s_n_llhttp__internal__n_error_36;
9908 }
9909 }
9910 /* UNREACHABLE */;
9911 abort();
9912 }
9913 case s_n_llhttp__internal__n_url_start:
9914 s_n_llhttp__internal__n_url_start: {
9915 static uint8_t lookup_table[] = {
9916 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0,
9917 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9918 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 2,
9919 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9920 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
9921 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0,
9922 0, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
9923 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0,
9924 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9925 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9926 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9927 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9928 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9929 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9930 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
9931 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
9932 };
9933 if (p == endp) {
9934 return s_n_llhttp__internal__n_url_start;
9935 }
9936 switch (lookup_table[(uint8_t) *p]) {
9937 case 1: {
9938 p++;
9939 goto s_n_llhttp__internal__n_error_34;
9940 }
9941 case 2: {
9942 goto s_n_llhttp__internal__n_span_start_stub_path_2;
9943 }
9944 case 3: {
9945 goto s_n_llhttp__internal__n_url_schema;
9946 }
9947 default: {
9948 goto s_n_llhttp__internal__n_error_37;
9949 }
9950 }
9951 /* UNREACHABLE */;
9952 abort();
9953 }
9954 case s_n_llhttp__internal__n_span_start_llhttp__on_url_1:
9955 s_n_llhttp__internal__n_span_start_llhttp__on_url_1: {
9956 if (p == endp) {
9957 return s_n_llhttp__internal__n_span_start_llhttp__on_url_1;
9958 }
9959 state->_span_pos0 = (void*) p;
9960 state->_span_cb0 = llhttp__on_url;
9961 goto s_n_llhttp__internal__n_url_start;
9962 /* UNREACHABLE */;
9963 abort();
9964 }
9965 case s_n_llhttp__internal__n_span_start_llhttp__on_url:
9966 s_n_llhttp__internal__n_span_start_llhttp__on_url: {
9967 if (p == endp) {
9968 return s_n_llhttp__internal__n_span_start_llhttp__on_url;
9969 }
9970 state->_span_pos0 = (void*) p;
9971 state->_span_cb0 = llhttp__on_url;
9972 goto s_n_llhttp__internal__n_url_server;
9973 /* UNREACHABLE */;
9974 abort();
9975 }
9976 case s_n_llhttp__internal__n_req_spaces_before_url:
9977 s_n_llhttp__internal__n_req_spaces_before_url: {
9978 if (p == endp) {
9979 return s_n_llhttp__internal__n_req_spaces_before_url;
9980 }
9981 switch (*p) {
9982 case ' ': {
9983 p++;
9984 goto s_n_llhttp__internal__n_req_spaces_before_url;
9985 }
9986 default: {
9987 goto s_n_llhttp__internal__n_invoke_is_equal_method;
9988 }
9989 }
9990 /* UNREACHABLE */;
9991 abort();
9992 }
9993 case s_n_llhttp__internal__n_req_first_space_before_url:
9994 s_n_llhttp__internal__n_req_first_space_before_url: {
9995 if (p == endp) {
9996 return s_n_llhttp__internal__n_req_first_space_before_url;
9997 }
9998 switch (*p) {
9999 case ' ': {
10000 p++;
10001 goto s_n_llhttp__internal__n_req_spaces_before_url;
10002 }
10003 default: {
10004 goto s_n_llhttp__internal__n_error_38;
10005 }
10006 }
10007 /* UNREACHABLE */;
10008 abort();
10009 }
10010 case s_n_llhttp__internal__n_start_req_1:
10011 s_n_llhttp__internal__n_start_req_1: {
10012 llparse_match_t match_seq;
10013
10014 if (p == endp) {
10015 return s_n_llhttp__internal__n_start_req_1;
10016 }
10017 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob0, 2);
10018 p = match_seq.current;
10019 switch (match_seq.status) {
10020 case kMatchComplete: {
10021 p++;
10022 match = 19;
10023 goto s_n_llhttp__internal__n_invoke_store_method_1;
10024 }
10025 case kMatchPause: {
10026 return s_n_llhttp__internal__n_start_req_1;
10027 }
10028 case kMatchMismatch: {
10029 goto s_n_llhttp__internal__n_error_46;
10030 }
10031 }
10032 /* UNREACHABLE */;
10033 abort();
10034 }
10035 case s_n_llhttp__internal__n_start_req_2:
10036 s_n_llhttp__internal__n_start_req_2: {
10037 llparse_match_t match_seq;
10038
10039 if (p == endp) {
10040 return s_n_llhttp__internal__n_start_req_2;
10041 }
10042 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob18, 3);
10043 p = match_seq.current;
10044 switch (match_seq.status) {
10045 case kMatchComplete: {
10046 p++;
10047 match = 16;
10048 goto s_n_llhttp__internal__n_invoke_store_method_1;
10049 }
10050 case kMatchPause: {
10051 return s_n_llhttp__internal__n_start_req_2;
10052 }
10053 case kMatchMismatch: {
10054 goto s_n_llhttp__internal__n_error_46;
10055 }
10056 }
10057 /* UNREACHABLE */;
10058 abort();
10059 }
10060 case s_n_llhttp__internal__n_start_req_4:
10061 s_n_llhttp__internal__n_start_req_4: {
10062 llparse_match_t match_seq;
10063
10064 if (p == endp) {
10065 return s_n_llhttp__internal__n_start_req_4;
10066 }
10067 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob19, 6);
10068 p = match_seq.current;
10069 switch (match_seq.status) {
10070 case kMatchComplete: {
10071 p++;
10072 match = 22;
10073 goto s_n_llhttp__internal__n_invoke_store_method_1;
10074 }
10075 case kMatchPause: {
10076 return s_n_llhttp__internal__n_start_req_4;
10077 }
10078 case kMatchMismatch: {
10079 goto s_n_llhttp__internal__n_error_46;
10080 }
10081 }
10082 /* UNREACHABLE */;
10083 abort();
10084 }
10085 case s_n_llhttp__internal__n_start_req_6:
10086 s_n_llhttp__internal__n_start_req_6: {
10087 llparse_match_t match_seq;
10088
10089 if (p == endp) {
10090 return s_n_llhttp__internal__n_start_req_6;
10091 }
10092 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob20, 4);
10093 p = match_seq.current;
10094 switch (match_seq.status) {
10095 case kMatchComplete: {
10096 p++;
10097 match = 5;
10098 goto s_n_llhttp__internal__n_invoke_store_method_1;
10099 }
10100 case kMatchPause: {
10101 return s_n_llhttp__internal__n_start_req_6;
10102 }
10103 case kMatchMismatch: {
10104 goto s_n_llhttp__internal__n_error_46;
10105 }
10106 }
10107 /* UNREACHABLE */;
10108 abort();
10109 }
10110 case s_n_llhttp__internal__n_start_req_7:
10111 s_n_llhttp__internal__n_start_req_7: {
10112 if (p == endp) {
10113 return s_n_llhttp__internal__n_start_req_7;
10114 }
10115 switch (*p) {
10116 case 'Y': {
10117 p++;
10118 match = 8;
10119 goto s_n_llhttp__internal__n_invoke_store_method_1;
10120 }
10121 default: {
10122 goto s_n_llhttp__internal__n_error_46;
10123 }
10124 }
10125 /* UNREACHABLE */;
10126 abort();
10127 }
10128 case s_n_llhttp__internal__n_start_req_5:
10129 s_n_llhttp__internal__n_start_req_5: {
10130 if (p == endp) {
10131 return s_n_llhttp__internal__n_start_req_5;
10132 }
10133 switch (*p) {
10134 case 'N': {
10135 p++;
10136 goto s_n_llhttp__internal__n_start_req_6;
10137 }
10138 case 'P': {
10139 p++;
10140 goto s_n_llhttp__internal__n_start_req_7;
10141 }
10142 default: {
10143 goto s_n_llhttp__internal__n_error_46;
10144 }
10145 }
10146 /* UNREACHABLE */;
10147 abort();
10148 }
10149 case s_n_llhttp__internal__n_start_req_3:
10150 s_n_llhttp__internal__n_start_req_3: {
10151 if (p == endp) {
10152 return s_n_llhttp__internal__n_start_req_3;
10153 }
10154 switch (*p) {
10155 case 'H': {
10156 p++;
10157 goto s_n_llhttp__internal__n_start_req_4;
10158 }
10159 case 'O': {
10160 p++;
10161 goto s_n_llhttp__internal__n_start_req_5;
10162 }
10163 default: {
10164 goto s_n_llhttp__internal__n_error_46;
10165 }
10166 }
10167 /* UNREACHABLE */;
10168 abort();
10169 }
10170 case s_n_llhttp__internal__n_start_req_8:
10171 s_n_llhttp__internal__n_start_req_8: {
10172 llparse_match_t match_seq;
10173
10174 if (p == endp) {
10175 return s_n_llhttp__internal__n_start_req_8;
10176 }
10177 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob21, 5);
10178 p = match_seq.current;
10179 switch (match_seq.status) {
10180 case kMatchComplete: {
10181 p++;
10182 match = 0;
10183 goto s_n_llhttp__internal__n_invoke_store_method_1;
10184 }
10185 case kMatchPause: {
10186 return s_n_llhttp__internal__n_start_req_8;
10187 }
10188 case kMatchMismatch: {
10189 goto s_n_llhttp__internal__n_error_46;
10190 }
10191 }
10192 /* UNREACHABLE */;
10193 abort();
10194 }
10195 case s_n_llhttp__internal__n_start_req_9:
10196 s_n_llhttp__internal__n_start_req_9: {
10197 llparse_match_t match_seq;
10198
10199 if (p == endp) {
10200 return s_n_llhttp__internal__n_start_req_9;
10201 }
10202 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob22, 2);
10203 p = match_seq.current;
10204 switch (match_seq.status) {
10205 case kMatchComplete: {
10206 p++;
10207 match = 1;
10208 goto s_n_llhttp__internal__n_invoke_store_method_1;
10209 }
10210 case kMatchPause: {
10211 return s_n_llhttp__internal__n_start_req_9;
10212 }
10213 case kMatchMismatch: {
10214 goto s_n_llhttp__internal__n_error_46;
10215 }
10216 }
10217 /* UNREACHABLE */;
10218 abort();
10219 }
10220 case s_n_llhttp__internal__n_start_req_10:
10221 s_n_llhttp__internal__n_start_req_10: {
10222 llparse_match_t match_seq;
10223
10224 if (p == endp) {
10225 return s_n_llhttp__internal__n_start_req_10;
10226 }
10227 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob23, 3);
10228 p = match_seq.current;
10229 switch (match_seq.status) {
10230 case kMatchComplete: {
10231 p++;
10232 match = 2;
10233 goto s_n_llhttp__internal__n_invoke_store_method_1;
10234 }
10235 case kMatchPause: {
10236 return s_n_llhttp__internal__n_start_req_10;
10237 }
10238 case kMatchMismatch: {
10239 goto s_n_llhttp__internal__n_error_46;
10240 }
10241 }
10242 /* UNREACHABLE */;
10243 abort();
10244 }
10245 case s_n_llhttp__internal__n_start_req_12:
10246 s_n_llhttp__internal__n_start_req_12: {
10247 llparse_match_t match_seq;
10248
10249 if (p == endp) {
10250 return s_n_llhttp__internal__n_start_req_12;
10251 }
10252 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob24, 2);
10253 p = match_seq.current;
10254 switch (match_seq.status) {
10255 case kMatchComplete: {
10256 p++;
10257 match = 31;
10258 goto s_n_llhttp__internal__n_invoke_store_method_1;
10259 }
10260 case kMatchPause: {
10261 return s_n_llhttp__internal__n_start_req_12;
10262 }
10263 case kMatchMismatch: {
10264 goto s_n_llhttp__internal__n_error_46;
10265 }
10266 }
10267 /* UNREACHABLE */;
10268 abort();
10269 }
10270 case s_n_llhttp__internal__n_start_req_13:
10271 s_n_llhttp__internal__n_start_req_13: {
10272 llparse_match_t match_seq;
10273
10274 if (p == endp) {
10275 return s_n_llhttp__internal__n_start_req_13;
10276 }
10277 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob25, 2);
10278 p = match_seq.current;
10279 switch (match_seq.status) {
10280 case kMatchComplete: {
10281 p++;
10282 match = 9;
10283 goto s_n_llhttp__internal__n_invoke_store_method_1;
10284 }
10285 case kMatchPause: {
10286 return s_n_llhttp__internal__n_start_req_13;
10287 }
10288 case kMatchMismatch: {
10289 goto s_n_llhttp__internal__n_error_46;
10290 }
10291 }
10292 /* UNREACHABLE */;
10293 abort();
10294 }
10295 case s_n_llhttp__internal__n_start_req_11:
10296 s_n_llhttp__internal__n_start_req_11: {
10297 if (p == endp) {
10298 return s_n_llhttp__internal__n_start_req_11;
10299 }
10300 switch (*p) {
10301 case 'I': {
10302 p++;
10303 goto s_n_llhttp__internal__n_start_req_12;
10304 }
10305 case 'O': {
10306 p++;
10307 goto s_n_llhttp__internal__n_start_req_13;
10308 }
10309 default: {
10310 goto s_n_llhttp__internal__n_error_46;
10311 }
10312 }
10313 /* UNREACHABLE */;
10314 abort();
10315 }
10316 case s_n_llhttp__internal__n_start_req_15:
10317 s_n_llhttp__internal__n_start_req_15: {
10318 llparse_match_t match_seq;
10319
10320 if (p == endp) {
10321 return s_n_llhttp__internal__n_start_req_15;
10322 }
10323 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob26, 6);
10324 p = match_seq.current;
10325 switch (match_seq.status) {
10326 case kMatchComplete: {
10327 p++;
10328 match = 24;
10329 goto s_n_llhttp__internal__n_invoke_store_method_1;
10330 }
10331 case kMatchPause: {
10332 return s_n_llhttp__internal__n_start_req_15;
10333 }
10334 case kMatchMismatch: {
10335 goto s_n_llhttp__internal__n_error_46;
10336 }
10337 }
10338 /* UNREACHABLE */;
10339 abort();
10340 }
10341 case s_n_llhttp__internal__n_start_req_16:
10342 s_n_llhttp__internal__n_start_req_16: {
10343 llparse_match_t match_seq;
10344
10345 if (p == endp) {
10346 return s_n_llhttp__internal__n_start_req_16;
10347 }
10348 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob27, 3);
10349 p = match_seq.current;
10350 switch (match_seq.status) {
10351 case kMatchComplete: {
10352 p++;
10353 match = 23;
10354 goto s_n_llhttp__internal__n_invoke_store_method_1;
10355 }
10356 case kMatchPause: {
10357 return s_n_llhttp__internal__n_start_req_16;
10358 }
10359 case kMatchMismatch: {
10360 goto s_n_llhttp__internal__n_error_46;
10361 }
10362 }
10363 /* UNREACHABLE */;
10364 abort();
10365 }
10366 case s_n_llhttp__internal__n_start_req_18:
10367 s_n_llhttp__internal__n_start_req_18: {
10368 llparse_match_t match_seq;
10369
10370 if (p == endp) {
10371 return s_n_llhttp__internal__n_start_req_18;
10372 }
10373 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob28, 7);
10374 p = match_seq.current;
10375 switch (match_seq.status) {
10376 case kMatchComplete: {
10377 p++;
10378 match = 21;
10379 goto s_n_llhttp__internal__n_invoke_store_method_1;
10380 }
10381 case kMatchPause: {
10382 return s_n_llhttp__internal__n_start_req_18;
10383 }
10384 case kMatchMismatch: {
10385 goto s_n_llhttp__internal__n_error_46;
10386 }
10387 }
10388 /* UNREACHABLE */;
10389 abort();
10390 }
10391 case s_n_llhttp__internal__n_start_req_20:
10392 s_n_llhttp__internal__n_start_req_20: {
10393 llparse_match_t match_seq;
10394
10395 if (p == endp) {
10396 return s_n_llhttp__internal__n_start_req_20;
10397 }
10398 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob29, 6);
10399 p = match_seq.current;
10400 switch (match_seq.status) {
10401 case kMatchComplete: {
10402 p++;
10403 match = 30;
10404 goto s_n_llhttp__internal__n_invoke_store_method_1;
10405 }
10406 case kMatchPause: {
10407 return s_n_llhttp__internal__n_start_req_20;
10408 }
10409 case kMatchMismatch: {
10410 goto s_n_llhttp__internal__n_error_46;
10411 }
10412 }
10413 /* UNREACHABLE */;
10414 abort();
10415 }
10416 case s_n_llhttp__internal__n_start_req_21:
10417 s_n_llhttp__internal__n_start_req_21: {
10418 if (p == endp) {
10419 return s_n_llhttp__internal__n_start_req_21;
10420 }
10421 switch (*p) {
10422 case 'L': {
10423 p++;
10424 match = 10;
10425 goto s_n_llhttp__internal__n_invoke_store_method_1;
10426 }
10427 default: {
10428 goto s_n_llhttp__internal__n_error_46;
10429 }
10430 }
10431 /* UNREACHABLE */;
10432 abort();
10433 }
10434 case s_n_llhttp__internal__n_start_req_19:
10435 s_n_llhttp__internal__n_start_req_19: {
10436 if (p == endp) {
10437 return s_n_llhttp__internal__n_start_req_19;
10438 }
10439 switch (*p) {
10440 case 'A': {
10441 p++;
10442 goto s_n_llhttp__internal__n_start_req_20;
10443 }
10444 case 'O': {
10445 p++;
10446 goto s_n_llhttp__internal__n_start_req_21;
10447 }
10448 default: {
10449 goto s_n_llhttp__internal__n_error_46;
10450 }
10451 }
10452 /* UNREACHABLE */;
10453 abort();
10454 }
10455 case s_n_llhttp__internal__n_start_req_17:
10456 s_n_llhttp__internal__n_start_req_17: {
10457 if (p == endp) {
10458 return s_n_llhttp__internal__n_start_req_17;
10459 }
10460 switch (*p) {
10461 case 'A': {
10462 p++;
10463 goto s_n_llhttp__internal__n_start_req_18;
10464 }
10465 case 'C': {
10466 p++;
10467 goto s_n_llhttp__internal__n_start_req_19;
10468 }
10469 default: {
10470 goto s_n_llhttp__internal__n_error_46;
10471 }
10472 }
10473 /* UNREACHABLE */;
10474 abort();
10475 }
10476 case s_n_llhttp__internal__n_start_req_22:
10477 s_n_llhttp__internal__n_start_req_22: {
10478 llparse_match_t match_seq;
10479
10480 if (p == endp) {
10481 return s_n_llhttp__internal__n_start_req_22;
10482 }
10483 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob30, 2);
10484 p = match_seq.current;
10485 switch (match_seq.status) {
10486 case kMatchComplete: {
10487 p++;
10488 match = 11;
10489 goto s_n_llhttp__internal__n_invoke_store_method_1;
10490 }
10491 case kMatchPause: {
10492 return s_n_llhttp__internal__n_start_req_22;
10493 }
10494 case kMatchMismatch: {
10495 goto s_n_llhttp__internal__n_error_46;
10496 }
10497 }
10498 /* UNREACHABLE */;
10499 abort();
10500 }
10501 case s_n_llhttp__internal__n_start_req_14:
10502 s_n_llhttp__internal__n_start_req_14: {
10503 if (p == endp) {
10504 return s_n_llhttp__internal__n_start_req_14;
10505 }
10506 switch (*p) {
10507 case '-': {
10508 p++;
10509 goto s_n_llhttp__internal__n_start_req_15;
10510 }
10511 case 'E': {
10512 p++;
10513 goto s_n_llhttp__internal__n_start_req_16;
10514 }
10515 case 'K': {
10516 p++;
10517 goto s_n_llhttp__internal__n_start_req_17;
10518 }
10519 case 'O': {
10520 p++;
10521 goto s_n_llhttp__internal__n_start_req_22;
10522 }
10523 default: {
10524 goto s_n_llhttp__internal__n_error_46;
10525 }
10526 }
10527 /* UNREACHABLE */;
10528 abort();
10529 }
10530 case s_n_llhttp__internal__n_start_req_23:
10531 s_n_llhttp__internal__n_start_req_23: {
10532 llparse_match_t match_seq;
10533
10534 if (p == endp) {
10535 return s_n_llhttp__internal__n_start_req_23;
10536 }
10537 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob31, 5);
10538 p = match_seq.current;
10539 switch (match_seq.status) {
10540 case kMatchComplete: {
10541 p++;
10542 match = 25;
10543 goto s_n_llhttp__internal__n_invoke_store_method_1;
10544 }
10545 case kMatchPause: {
10546 return s_n_llhttp__internal__n_start_req_23;
10547 }
10548 case kMatchMismatch: {
10549 goto s_n_llhttp__internal__n_error_46;
10550 }
10551 }
10552 /* UNREACHABLE */;
10553 abort();
10554 }
10555 case s_n_llhttp__internal__n_start_req_24:
10556 s_n_llhttp__internal__n_start_req_24: {
10557 llparse_match_t match_seq;
10558
10559 if (p == endp) {
10560 return s_n_llhttp__internal__n_start_req_24;
10561 }
10562 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob32, 6);
10563 p = match_seq.current;
10564 switch (match_seq.status) {
10565 case kMatchComplete: {
10566 p++;
10567 match = 6;
10568 goto s_n_llhttp__internal__n_invoke_store_method_1;
10569 }
10570 case kMatchPause: {
10571 return s_n_llhttp__internal__n_start_req_24;
10572 }
10573 case kMatchMismatch: {
10574 goto s_n_llhttp__internal__n_error_46;
10575 }
10576 }
10577 /* UNREACHABLE */;
10578 abort();
10579 }
10580 case s_n_llhttp__internal__n_start_req_26:
10581 s_n_llhttp__internal__n_start_req_26: {
10582 llparse_match_t match_seq;
10583
10584 if (p == endp) {
10585 return s_n_llhttp__internal__n_start_req_26;
10586 }
10587 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob33, 3);
10588 p = match_seq.current;
10589 switch (match_seq.status) {
10590 case kMatchComplete: {
10591 p++;
10592 match = 28;
10593 goto s_n_llhttp__internal__n_invoke_store_method_1;
10594 }
10595 case kMatchPause: {
10596 return s_n_llhttp__internal__n_start_req_26;
10597 }
10598 case kMatchMismatch: {
10599 goto s_n_llhttp__internal__n_error_46;
10600 }
10601 }
10602 /* UNREACHABLE */;
10603 abort();
10604 }
10605 case s_n_llhttp__internal__n_start_req_27:
10606 s_n_llhttp__internal__n_start_req_27: {
10607 llparse_match_t match_seq;
10608
10609 if (p == endp) {
10610 return s_n_llhttp__internal__n_start_req_27;
10611 }
10612 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob34, 2);
10613 p = match_seq.current;
10614 switch (match_seq.status) {
10615 case kMatchComplete: {
10616 p++;
10617 match = 3;
10618 goto s_n_llhttp__internal__n_invoke_store_method_1;
10619 }
10620 case kMatchPause: {
10621 return s_n_llhttp__internal__n_start_req_27;
10622 }
10623 case kMatchMismatch: {
10624 goto s_n_llhttp__internal__n_error_46;
10625 }
10626 }
10627 /* UNREACHABLE */;
10628 abort();
10629 }
10630 case s_n_llhttp__internal__n_start_req_31:
10631 s_n_llhttp__internal__n_start_req_31: {
10632 llparse_match_t match_seq;
10633
10634 if (p == endp) {
10635 return s_n_llhttp__internal__n_start_req_31;
10636 }
10637 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob35, 3);
10638 p = match_seq.current;
10639 switch (match_seq.status) {
10640 case kMatchComplete: {
10641 p++;
10642 match = 12;
10643 goto s_n_llhttp__internal__n_invoke_store_method_1;
10644 }
10645 case kMatchPause: {
10646 return s_n_llhttp__internal__n_start_req_31;
10647 }
10648 case kMatchMismatch: {
10649 goto s_n_llhttp__internal__n_error_46;
10650 }
10651 }
10652 /* UNREACHABLE */;
10653 abort();
10654 }
10655 case s_n_llhttp__internal__n_start_req_32:
10656 s_n_llhttp__internal__n_start_req_32: {
10657 llparse_match_t match_seq;
10658
10659 if (p == endp) {
10660 return s_n_llhttp__internal__n_start_req_32;
10661 }
10662 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob36, 4);
10663 p = match_seq.current;
10664 switch (match_seq.status) {
10665 case kMatchComplete: {
10666 p++;
10667 match = 13;
10668 goto s_n_llhttp__internal__n_invoke_store_method_1;
10669 }
10670 case kMatchPause: {
10671 return s_n_llhttp__internal__n_start_req_32;
10672 }
10673 case kMatchMismatch: {
10674 goto s_n_llhttp__internal__n_error_46;
10675 }
10676 }
10677 /* UNREACHABLE */;
10678 abort();
10679 }
10680 case s_n_llhttp__internal__n_start_req_30:
10681 s_n_llhttp__internal__n_start_req_30: {
10682 if (p == endp) {
10683 return s_n_llhttp__internal__n_start_req_30;
10684 }
10685 switch (*p) {
10686 case 'F': {
10687 p++;
10688 goto s_n_llhttp__internal__n_start_req_31;
10689 }
10690 case 'P': {
10691 p++;
10692 goto s_n_llhttp__internal__n_start_req_32;
10693 }
10694 default: {
10695 goto s_n_llhttp__internal__n_error_46;
10696 }
10697 }
10698 /* UNREACHABLE */;
10699 abort();
10700 }
10701 case s_n_llhttp__internal__n_start_req_29:
10702 s_n_llhttp__internal__n_start_req_29: {
10703 if (p == endp) {
10704 return s_n_llhttp__internal__n_start_req_29;
10705 }
10706 switch (*p) {
10707 case 'P': {
10708 p++;
10709 goto s_n_llhttp__internal__n_start_req_30;
10710 }
10711 default: {
10712 goto s_n_llhttp__internal__n_error_46;
10713 }
10714 }
10715 /* UNREACHABLE */;
10716 abort();
10717 }
10718 case s_n_llhttp__internal__n_start_req_28:
10719 s_n_llhttp__internal__n_start_req_28: {
10720 if (p == endp) {
10721 return s_n_llhttp__internal__n_start_req_28;
10722 }
10723 switch (*p) {
10724 case 'I': {
10725 p++;
10726 match = 34;
10727 goto s_n_llhttp__internal__n_invoke_store_method_1;
10728 }
10729 case 'O': {
10730 p++;
10731 goto s_n_llhttp__internal__n_start_req_29;
10732 }
10733 default: {
10734 goto s_n_llhttp__internal__n_error_46;
10735 }
10736 }
10737 /* UNREACHABLE */;
10738 abort();
10739 }
10740 case s_n_llhttp__internal__n_start_req_34:
10741 s_n_llhttp__internal__n_start_req_34: {
10742 llparse_match_t match_seq;
10743
10744 if (p == endp) {
10745 return s_n_llhttp__internal__n_start_req_34;
10746 }
10747 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob37, 2);
10748 p = match_seq.current;
10749 switch (match_seq.status) {
10750 case kMatchComplete: {
10751 p++;
10752 match = 29;
10753 goto s_n_llhttp__internal__n_invoke_store_method_1;
10754 }
10755 case kMatchPause: {
10756 return s_n_llhttp__internal__n_start_req_34;
10757 }
10758 case kMatchMismatch: {
10759 goto s_n_llhttp__internal__n_error_46;
10760 }
10761 }
10762 /* UNREACHABLE */;
10763 abort();
10764 }
10765 case s_n_llhttp__internal__n_start_req_33:
10766 s_n_llhttp__internal__n_start_req_33: {
10767 if (p == endp) {
10768 return s_n_llhttp__internal__n_start_req_33;
10769 }
10770 switch (*p) {
10771 case 'R': {
10772 p++;
10773 goto s_n_llhttp__internal__n_start_req_34;
10774 }
10775 case 'T': {
10776 p++;
10777 match = 4;
10778 goto s_n_llhttp__internal__n_invoke_store_method_1;
10779 }
10780 default: {
10781 goto s_n_llhttp__internal__n_error_46;
10782 }
10783 }
10784 /* UNREACHABLE */;
10785 abort();
10786 }
10787 case s_n_llhttp__internal__n_start_req_25:
10788 s_n_llhttp__internal__n_start_req_25: {
10789 if (p == endp) {
10790 return s_n_llhttp__internal__n_start_req_25;
10791 }
10792 switch (*p) {
10793 case 'A': {
10794 p++;
10795 goto s_n_llhttp__internal__n_start_req_26;
10796 }
10797 case 'O': {
10798 p++;
10799 goto s_n_llhttp__internal__n_start_req_27;
10800 }
10801 case 'R': {
10802 p++;
10803 goto s_n_llhttp__internal__n_start_req_28;
10804 }
10805 case 'U': {
10806 p++;
10807 goto s_n_llhttp__internal__n_start_req_33;
10808 }
10809 default: {
10810 goto s_n_llhttp__internal__n_error_46;
10811 }
10812 }
10813 /* UNREACHABLE */;
10814 abort();
10815 }
10816 case s_n_llhttp__internal__n_start_req_37:
10817 s_n_llhttp__internal__n_start_req_37: {
10818 llparse_match_t match_seq;
10819
10820 if (p == endp) {
10821 return s_n_llhttp__internal__n_start_req_37;
10822 }
10823 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob38, 3);
10824 p = match_seq.current;
10825 switch (match_seq.status) {
10826 case kMatchComplete: {
10827 p++;
10828 match = 17;
10829 goto s_n_llhttp__internal__n_invoke_store_method_1;
10830 }
10831 case kMatchPause: {
10832 return s_n_llhttp__internal__n_start_req_37;
10833 }
10834 case kMatchMismatch: {
10835 goto s_n_llhttp__internal__n_error_46;
10836 }
10837 }
10838 /* UNREACHABLE */;
10839 abort();
10840 }
10841 case s_n_llhttp__internal__n_start_req_38:
10842 s_n_llhttp__internal__n_start_req_38: {
10843 llparse_match_t match_seq;
10844
10845 if (p == endp) {
10846 return s_n_llhttp__internal__n_start_req_38;
10847 }
10848 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob39, 3);
10849 p = match_seq.current;
10850 switch (match_seq.status) {
10851 case kMatchComplete: {
10852 p++;
10853 match = 20;
10854 goto s_n_llhttp__internal__n_invoke_store_method_1;
10855 }
10856 case kMatchPause: {
10857 return s_n_llhttp__internal__n_start_req_38;
10858 }
10859 case kMatchMismatch: {
10860 goto s_n_llhttp__internal__n_error_46;
10861 }
10862 }
10863 /* UNREACHABLE */;
10864 abort();
10865 }
10866 case s_n_llhttp__internal__n_start_req_36:
10867 s_n_llhttp__internal__n_start_req_36: {
10868 if (p == endp) {
10869 return s_n_llhttp__internal__n_start_req_36;
10870 }
10871 switch (*p) {
10872 case 'B': {
10873 p++;
10874 goto s_n_llhttp__internal__n_start_req_37;
10875 }
10876 case 'P': {
10877 p++;
10878 goto s_n_llhttp__internal__n_start_req_38;
10879 }
10880 default: {
10881 goto s_n_llhttp__internal__n_error_46;
10882 }
10883 }
10884 /* UNREACHABLE */;
10885 abort();
10886 }
10887 case s_n_llhttp__internal__n_start_req_35:
10888 s_n_llhttp__internal__n_start_req_35: {
10889 if (p == endp) {
10890 return s_n_llhttp__internal__n_start_req_35;
10891 }
10892 switch (*p) {
10893 case 'E': {
10894 p++;
10895 goto s_n_llhttp__internal__n_start_req_36;
10896 }
10897 default: {
10898 goto s_n_llhttp__internal__n_error_46;
10899 }
10900 }
10901 /* UNREACHABLE */;
10902 abort();
10903 }
10904 case s_n_llhttp__internal__n_start_req_40:
10905 s_n_llhttp__internal__n_start_req_40: {
10906 llparse_match_t match_seq;
10907
10908 if (p == endp) {
10909 return s_n_llhttp__internal__n_start_req_40;
10910 }
10911 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob40, 4);
10912 p = match_seq.current;
10913 switch (match_seq.status) {
10914 case kMatchComplete: {
10915 p++;
10916 match = 14;
10917 goto s_n_llhttp__internal__n_invoke_store_method_1;
10918 }
10919 case kMatchPause: {
10920 return s_n_llhttp__internal__n_start_req_40;
10921 }
10922 case kMatchMismatch: {
10923 goto s_n_llhttp__internal__n_error_46;
10924 }
10925 }
10926 /* UNREACHABLE */;
10927 abort();
10928 }
10929 case s_n_llhttp__internal__n_start_req_41:
10930 s_n_llhttp__internal__n_start_req_41: {
10931 llparse_match_t match_seq;
10932
10933 if (p == endp) {
10934 return s_n_llhttp__internal__n_start_req_41;
10935 }
10936 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob41, 4);
10937 p = match_seq.current;
10938 switch (match_seq.status) {
10939 case kMatchComplete: {
10940 p++;
10941 match = 33;
10942 goto s_n_llhttp__internal__n_invoke_store_method_1;
10943 }
10944 case kMatchPause: {
10945 return s_n_llhttp__internal__n_start_req_41;
10946 }
10947 case kMatchMismatch: {
10948 goto s_n_llhttp__internal__n_error_46;
10949 }
10950 }
10951 /* UNREACHABLE */;
10952 abort();
10953 }
10954 case s_n_llhttp__internal__n_start_req_42:
10955 s_n_llhttp__internal__n_start_req_42: {
10956 llparse_match_t match_seq;
10957
10958 if (p == endp) {
10959 return s_n_llhttp__internal__n_start_req_42;
10960 }
10961 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob42, 7);
10962 p = match_seq.current;
10963 switch (match_seq.status) {
10964 case kMatchComplete: {
10965 p++;
10966 match = 26;
10967 goto s_n_llhttp__internal__n_invoke_store_method_1;
10968 }
10969 case kMatchPause: {
10970 return s_n_llhttp__internal__n_start_req_42;
10971 }
10972 case kMatchMismatch: {
10973 goto s_n_llhttp__internal__n_error_46;
10974 }
10975 }
10976 /* UNREACHABLE */;
10977 abort();
10978 }
10979 case s_n_llhttp__internal__n_start_req_39:
10980 s_n_llhttp__internal__n_start_req_39: {
10981 if (p == endp) {
10982 return s_n_llhttp__internal__n_start_req_39;
10983 }
10984 switch (*p) {
10985 case 'E': {
10986 p++;
10987 goto s_n_llhttp__internal__n_start_req_40;
10988 }
10989 case 'O': {
10990 p++;
10991 goto s_n_llhttp__internal__n_start_req_41;
10992 }
10993 case 'U': {
10994 p++;
10995 goto s_n_llhttp__internal__n_start_req_42;
10996 }
10997 default: {
10998 goto s_n_llhttp__internal__n_error_46;
10999 }
11000 }
11001 /* UNREACHABLE */;
11002 abort();
11003 }
11004 case s_n_llhttp__internal__n_start_req_43:
11005 s_n_llhttp__internal__n_start_req_43: {
11006 llparse_match_t match_seq;
11007
11008 if (p == endp) {
11009 return s_n_llhttp__internal__n_start_req_43;
11010 }
11011 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob43, 4);
11012 p = match_seq.current;
11013 switch (match_seq.status) {
11014 case kMatchComplete: {
11015 p++;
11016 match = 7;
11017 goto s_n_llhttp__internal__n_invoke_store_method_1;
11018 }
11019 case kMatchPause: {
11020 return s_n_llhttp__internal__n_start_req_43;
11021 }
11022 case kMatchMismatch: {
11023 goto s_n_llhttp__internal__n_error_46;
11024 }
11025 }
11026 /* UNREACHABLE */;
11027 abort();
11028 }
11029 case s_n_llhttp__internal__n_start_req_46:
11030 s_n_llhttp__internal__n_start_req_46: {
11031 llparse_match_t match_seq;
11032
11033 if (p == endp) {
11034 return s_n_llhttp__internal__n_start_req_46;
11035 }
11036 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob44, 3);
11037 p = match_seq.current;
11038 switch (match_seq.status) {
11039 case kMatchComplete: {
11040 p++;
11041 match = 18;
11042 goto s_n_llhttp__internal__n_invoke_store_method_1;
11043 }
11044 case kMatchPause: {
11045 return s_n_llhttp__internal__n_start_req_46;
11046 }
11047 case kMatchMismatch: {
11048 goto s_n_llhttp__internal__n_error_46;
11049 }
11050 }
11051 /* UNREACHABLE */;
11052 abort();
11053 }
11054 case s_n_llhttp__internal__n_start_req_48:
11055 s_n_llhttp__internal__n_start_req_48: {
11056 llparse_match_t match_seq;
11057
11058 if (p == endp) {
11059 return s_n_llhttp__internal__n_start_req_48;
11060 }
11061 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob45, 2);
11062 p = match_seq.current;
11063 switch (match_seq.status) {
11064 case kMatchComplete: {
11065 p++;
11066 match = 32;
11067 goto s_n_llhttp__internal__n_invoke_store_method_1;
11068 }
11069 case kMatchPause: {
11070 return s_n_llhttp__internal__n_start_req_48;
11071 }
11072 case kMatchMismatch: {
11073 goto s_n_llhttp__internal__n_error_46;
11074 }
11075 }
11076 /* UNREACHABLE */;
11077 abort();
11078 }
11079 case s_n_llhttp__internal__n_start_req_49:
11080 s_n_llhttp__internal__n_start_req_49: {
11081 llparse_match_t match_seq;
11082
11083 if (p == endp) {
11084 return s_n_llhttp__internal__n_start_req_49;
11085 }
11086 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob46, 2);
11087 p = match_seq.current;
11088 switch (match_seq.status) {
11089 case kMatchComplete: {
11090 p++;
11091 match = 15;
11092 goto s_n_llhttp__internal__n_invoke_store_method_1;
11093 }
11094 case kMatchPause: {
11095 return s_n_llhttp__internal__n_start_req_49;
11096 }
11097 case kMatchMismatch: {
11098 goto s_n_llhttp__internal__n_error_46;
11099 }
11100 }
11101 /* UNREACHABLE */;
11102 abort();
11103 }
11104 case s_n_llhttp__internal__n_start_req_47:
11105 s_n_llhttp__internal__n_start_req_47: {
11106 if (p == endp) {
11107 return s_n_llhttp__internal__n_start_req_47;
11108 }
11109 switch (*p) {
11110 case 'I': {
11111 p++;
11112 goto s_n_llhttp__internal__n_start_req_48;
11113 }
11114 case 'O': {
11115 p++;
11116 goto s_n_llhttp__internal__n_start_req_49;
11117 }
11118 default: {
11119 goto s_n_llhttp__internal__n_error_46;
11120 }
11121 }
11122 /* UNREACHABLE */;
11123 abort();
11124 }
11125 case s_n_llhttp__internal__n_start_req_50:
11126 s_n_llhttp__internal__n_start_req_50: {
11127 llparse_match_t match_seq;
11128
11129 if (p == endp) {
11130 return s_n_llhttp__internal__n_start_req_50;
11131 }
11132 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob47, 8);
11133 p = match_seq.current;
11134 switch (match_seq.status) {
11135 case kMatchComplete: {
11136 p++;
11137 match = 27;
11138 goto s_n_llhttp__internal__n_invoke_store_method_1;
11139 }
11140 case kMatchPause: {
11141 return s_n_llhttp__internal__n_start_req_50;
11142 }
11143 case kMatchMismatch: {
11144 goto s_n_llhttp__internal__n_error_46;
11145 }
11146 }
11147 /* UNREACHABLE */;
11148 abort();
11149 }
11150 case s_n_llhttp__internal__n_start_req_45:
11151 s_n_llhttp__internal__n_start_req_45: {
11152 if (p == endp) {
11153 return s_n_llhttp__internal__n_start_req_45;
11154 }
11155 switch (*p) {
11156 case 'B': {
11157 p++;
11158 goto s_n_llhttp__internal__n_start_req_46;
11159 }
11160 case 'L': {
11161 p++;
11162 goto s_n_llhttp__internal__n_start_req_47;
11163 }
11164 case 'S': {
11165 p++;
11166 goto s_n_llhttp__internal__n_start_req_50;
11167 }
11168 default: {
11169 goto s_n_llhttp__internal__n_error_46;
11170 }
11171 }
11172 /* UNREACHABLE */;
11173 abort();
11174 }
11175 case s_n_llhttp__internal__n_start_req_44:
11176 s_n_llhttp__internal__n_start_req_44: {
11177 if (p == endp) {
11178 return s_n_llhttp__internal__n_start_req_44;
11179 }
11180 switch (*p) {
11181 case 'N': {
11182 p++;
11183 goto s_n_llhttp__internal__n_start_req_45;
11184 }
11185 default: {
11186 goto s_n_llhttp__internal__n_error_46;
11187 }
11188 }
11189 /* UNREACHABLE */;
11190 abort();
11191 }
11192 case s_n_llhttp__internal__n_start_req:
11193 s_n_llhttp__internal__n_start_req: {
11194 if (p == endp) {
11195 return s_n_llhttp__internal__n_start_req;
11196 }
11197 switch (*p) {
11198 case 'A': {
11199 p++;
11200 goto s_n_llhttp__internal__n_start_req_1;
11201 }
11202 case 'B': {
11203 p++;
11204 goto s_n_llhttp__internal__n_start_req_2;
11205 }
11206 case 'C': {
11207 p++;
11208 goto s_n_llhttp__internal__n_start_req_3;
11209 }
11210 case 'D': {
11211 p++;
11212 goto s_n_llhttp__internal__n_start_req_8;
11213 }
11214 case 'G': {
11215 p++;
11216 goto s_n_llhttp__internal__n_start_req_9;
11217 }
11218 case 'H': {
11219 p++;
11220 goto s_n_llhttp__internal__n_start_req_10;
11221 }
11222 case 'L': {
11223 p++;
11224 goto s_n_llhttp__internal__n_start_req_11;
11225 }
11226 case 'M': {
11227 p++;
11228 goto s_n_llhttp__internal__n_start_req_14;
11229 }
11230 case 'N': {
11231 p++;
11232 goto s_n_llhttp__internal__n_start_req_23;
11233 }
11234 case 'O': {
11235 p++;
11236 goto s_n_llhttp__internal__n_start_req_24;
11237 }
11238 case 'P': {
11239 p++;
11240 goto s_n_llhttp__internal__n_start_req_25;
11241 }
11242 case 'R': {
11243 p++;
11244 goto s_n_llhttp__internal__n_start_req_35;
11245 }
11246 case 'S': {
11247 p++;
11248 goto s_n_llhttp__internal__n_start_req_39;
11249 }
11250 case 'T': {
11251 p++;
11252 goto s_n_llhttp__internal__n_start_req_43;
11253 }
11254 case 'U': {
11255 p++;
11256 goto s_n_llhttp__internal__n_start_req_44;
11257 }
11258 default: {
11259 goto s_n_llhttp__internal__n_error_46;
11260 }
11261 }
11262 /* UNREACHABLE */;
11263 abort();
11264 }
11265 case s_n_llhttp__internal__n_res_line_almost_done:
11266 s_n_llhttp__internal__n_res_line_almost_done: {
11267 if (p == endp) {
11268 return s_n_llhttp__internal__n_res_line_almost_done;
11269 }
11270 p++;
11271 goto s_n_llhttp__internal__n_header_field_start;
11272 /* UNREACHABLE */;
11273 abort();
11274 }
11275 case s_n_llhttp__internal__n_res_status:
11276 s_n_llhttp__internal__n_res_status: {
11277 if (p == endp) {
11278 return s_n_llhttp__internal__n_res_status;
11279 }
11280 switch (*p) {
11281 case 10: {
11282 goto s_n_llhttp__internal__n_span_end_llhttp__on_status;
11283 }
11284 case 13: {
11285 goto s_n_llhttp__internal__n_span_end_llhttp__on_status_1;
11286 }
11287 default: {
11288 p++;
11289 goto s_n_llhttp__internal__n_res_status;
11290 }
11291 }
11292 /* UNREACHABLE */;
11293 abort();
11294 }
11295 case s_n_llhttp__internal__n_span_start_llhttp__on_status:
11296 s_n_llhttp__internal__n_span_start_llhttp__on_status: {
11297 if (p == endp) {
11298 return s_n_llhttp__internal__n_span_start_llhttp__on_status;
11299 }
11300 state->_span_pos0 = (void*) p;
11301 state->_span_cb0 = llhttp__on_status;
11302 goto s_n_llhttp__internal__n_res_status;
11303 /* UNREACHABLE */;
11304 abort();
11305 }
11306 case s_n_llhttp__internal__n_res_status_start:
11307 s_n_llhttp__internal__n_res_status_start: {
11308 if (p == endp) {
11309 return s_n_llhttp__internal__n_res_status_start;
11310 }
11311 switch (*p) {
11312 case 10: {
11313 p++;
11314 goto s_n_llhttp__internal__n_header_field_start;
11315 }
11316 case 13: {
11317 p++;
11318 goto s_n_llhttp__internal__n_res_line_almost_done;
11319 }
11320 default: {
11321 goto s_n_llhttp__internal__n_span_start_llhttp__on_status;
11322 }
11323 }
11324 /* UNREACHABLE */;
11325 abort();
11326 }
11327 case s_n_llhttp__internal__n_res_status_code_otherwise:
11328 s_n_llhttp__internal__n_res_status_code_otherwise: {
11329 if (p == endp) {
11330 return s_n_llhttp__internal__n_res_status_code_otherwise;
11331 }
11332 switch (*p) {
11333 case 10: {
11334 goto s_n_llhttp__internal__n_res_status_start;
11335 }
11336 case 13: {
11337 goto s_n_llhttp__internal__n_res_status_start;
11338 }
11339 case ' ': {
11340 p++;
11341 goto s_n_llhttp__internal__n_res_status_start;
11342 }
11343 default: {
11344 goto s_n_llhttp__internal__n_error_40;
11345 }
11346 }
11347 /* UNREACHABLE */;
11348 abort();
11349 }
11350 case s_n_llhttp__internal__n_res_status_code:
11351 s_n_llhttp__internal__n_res_status_code: {
11352 if (p == endp) {
11353 return s_n_llhttp__internal__n_res_status_code;
11354 }
11355 switch (*p) {
11356 case '0': {
11357 p++;
11358 match = 0;
11359 goto s_n_llhttp__internal__n_invoke_mul_add_status_code;
11360 }
11361 case '1': {
11362 p++;
11363 match = 1;
11364 goto s_n_llhttp__internal__n_invoke_mul_add_status_code;
11365 }
11366 case '2': {
11367 p++;
11368 match = 2;
11369 goto s_n_llhttp__internal__n_invoke_mul_add_status_code;
11370 }
11371 case '3': {
11372 p++;
11373 match = 3;
11374 goto s_n_llhttp__internal__n_invoke_mul_add_status_code;
11375 }
11376 case '4': {
11377 p++;
11378 match = 4;
11379 goto s_n_llhttp__internal__n_invoke_mul_add_status_code;
11380 }
11381 case '5': {
11382 p++;
11383 match = 5;
11384 goto s_n_llhttp__internal__n_invoke_mul_add_status_code;
11385 }
11386 case '6': {
11387 p++;
11388 match = 6;
11389 goto s_n_llhttp__internal__n_invoke_mul_add_status_code;
11390 }
11391 case '7': {
11392 p++;
11393 match = 7;
11394 goto s_n_llhttp__internal__n_invoke_mul_add_status_code;
11395 }
11396 case '8': {
11397 p++;
11398 match = 8;
11399 goto s_n_llhttp__internal__n_invoke_mul_add_status_code;
11400 }
11401 case '9': {
11402 p++;
11403 match = 9;
11404 goto s_n_llhttp__internal__n_invoke_mul_add_status_code;
11405 }
11406 default: {
11407 goto s_n_llhttp__internal__n_res_status_code_otherwise;
11408 }
11409 }
11410 /* UNREACHABLE */;
11411 abort();
11412 }
11413 case s_n_llhttp__internal__n_res_http_end:
11414 s_n_llhttp__internal__n_res_http_end: {
11415 if (p == endp) {
11416 return s_n_llhttp__internal__n_res_http_end;
11417 }
11418 switch (*p) {
11419 case ' ': {
11420 p++;
11421 goto s_n_llhttp__internal__n_invoke_update_status_code;
11422 }
11423 default: {
11424 goto s_n_llhttp__internal__n_error_41;
11425 }
11426 }
11427 /* UNREACHABLE */;
11428 abort();
11429 }
11430 case s_n_llhttp__internal__n_res_http_minor:
11431 s_n_llhttp__internal__n_res_http_minor: {
11432 if (p == endp) {
11433 return s_n_llhttp__internal__n_res_http_minor;
11434 }
11435 switch (*p) {
11436 case '0': {
11437 p++;
11438 match = 0;
11439 goto s_n_llhttp__internal__n_invoke_store_http_minor_1;
11440 }
11441 case '1': {
11442 p++;
11443 match = 1;
11444 goto s_n_llhttp__internal__n_invoke_store_http_minor_1;
11445 }
11446 case '2': {
11447 p++;
11448 match = 2;
11449 goto s_n_llhttp__internal__n_invoke_store_http_minor_1;
11450 }
11451 case '3': {
11452 p++;
11453 match = 3;
11454 goto s_n_llhttp__internal__n_invoke_store_http_minor_1;
11455 }
11456 case '4': {
11457 p++;
11458 match = 4;
11459 goto s_n_llhttp__internal__n_invoke_store_http_minor_1;
11460 }
11461 case '5': {
11462 p++;
11463 match = 5;
11464 goto s_n_llhttp__internal__n_invoke_store_http_minor_1;
11465 }
11466 case '6': {
11467 p++;
11468 match = 6;
11469 goto s_n_llhttp__internal__n_invoke_store_http_minor_1;
11470 }
11471 case '7': {
11472 p++;
11473 match = 7;
11474 goto s_n_llhttp__internal__n_invoke_store_http_minor_1;
11475 }
11476 case '8': {
11477 p++;
11478 match = 8;
11479 goto s_n_llhttp__internal__n_invoke_store_http_minor_1;
11480 }
11481 case '9': {
11482 p++;
11483 match = 9;
11484 goto s_n_llhttp__internal__n_invoke_store_http_minor_1;
11485 }
11486 default: {
11487 goto s_n_llhttp__internal__n_error_42;
11488 }
11489 }
11490 /* UNREACHABLE */;
11491 abort();
11492 }
11493 case s_n_llhttp__internal__n_res_http_dot:
11494 s_n_llhttp__internal__n_res_http_dot: {
11495 if (p == endp) {
11496 return s_n_llhttp__internal__n_res_http_dot;
11497 }
11498 switch (*p) {
11499 case '.': {
11500 p++;
11501 goto s_n_llhttp__internal__n_res_http_minor;
11502 }
11503 default: {
11504 goto s_n_llhttp__internal__n_error_43;
11505 }
11506 }
11507 /* UNREACHABLE */;
11508 abort();
11509 }
11510 case s_n_llhttp__internal__n_res_http_major:
11511 s_n_llhttp__internal__n_res_http_major: {
11512 if (p == endp) {
11513 return s_n_llhttp__internal__n_res_http_major;
11514 }
11515 switch (*p) {
11516 case '0': {
11517 p++;
11518 match = 0;
11519 goto s_n_llhttp__internal__n_invoke_store_http_major_1;
11520 }
11521 case '1': {
11522 p++;
11523 match = 1;
11524 goto s_n_llhttp__internal__n_invoke_store_http_major_1;
11525 }
11526 case '2': {
11527 p++;
11528 match = 2;
11529 goto s_n_llhttp__internal__n_invoke_store_http_major_1;
11530 }
11531 case '3': {
11532 p++;
11533 match = 3;
11534 goto s_n_llhttp__internal__n_invoke_store_http_major_1;
11535 }
11536 case '4': {
11537 p++;
11538 match = 4;
11539 goto s_n_llhttp__internal__n_invoke_store_http_major_1;
11540 }
11541 case '5': {
11542 p++;
11543 match = 5;
11544 goto s_n_llhttp__internal__n_invoke_store_http_major_1;
11545 }
11546 case '6': {
11547 p++;
11548 match = 6;
11549 goto s_n_llhttp__internal__n_invoke_store_http_major_1;
11550 }
11551 case '7': {
11552 p++;
11553 match = 7;
11554 goto s_n_llhttp__internal__n_invoke_store_http_major_1;
11555 }
11556 case '8': {
11557 p++;
11558 match = 8;
11559 goto s_n_llhttp__internal__n_invoke_store_http_major_1;
11560 }
11561 case '9': {
11562 p++;
11563 match = 9;
11564 goto s_n_llhttp__internal__n_invoke_store_http_major_1;
11565 }
11566 default: {
11567 goto s_n_llhttp__internal__n_error_44;
11568 }
11569 }
11570 /* UNREACHABLE */;
11571 abort();
11572 }
11573 case s_n_llhttp__internal__n_start_res:
11574 s_n_llhttp__internal__n_start_res: {
11575 llparse_match_t match_seq;
11576
11577 if (p == endp) {
11578 return s_n_llhttp__internal__n_start_res;
11579 }
11580 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob48, 5);
11581 p = match_seq.current;
11582 switch (match_seq.status) {
11583 case kMatchComplete: {
11584 p++;
11585 goto s_n_llhttp__internal__n_res_http_major;
11586 }
11587 case kMatchPause: {
11588 return s_n_llhttp__internal__n_start_res;
11589 }
11590 case kMatchMismatch: {
11591 goto s_n_llhttp__internal__n_error_47;
11592 }
11593 }
11594 /* UNREACHABLE */;
11595 abort();
11596 }
11597 case s_n_llhttp__internal__n_req_or_res_method_2:
11598 s_n_llhttp__internal__n_req_or_res_method_2: {
11599 llparse_match_t match_seq;
11600
11601 if (p == endp) {
11602 return s_n_llhttp__internal__n_req_or_res_method_2;
11603 }
11604 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob49, 2);
11605 p = match_seq.current;
11606 switch (match_seq.status) {
11607 case kMatchComplete: {
11608 p++;
11609 match = 2;
11610 goto s_n_llhttp__internal__n_invoke_store_method;
11611 }
11612 case kMatchPause: {
11613 return s_n_llhttp__internal__n_req_or_res_method_2;
11614 }
11615 case kMatchMismatch: {
11616 goto s_n_llhttp__internal__n_error_45;
11617 }
11618 }
11619 /* UNREACHABLE */;
11620 abort();
11621 }
11622 case s_n_llhttp__internal__n_req_or_res_method_3:
11623 s_n_llhttp__internal__n_req_or_res_method_3: {
11624 llparse_match_t match_seq;
11625
11626 if (p == endp) {
11627 return s_n_llhttp__internal__n_req_or_res_method_3;
11628 }
11629 match_seq = llparse__match_sequence_id(state, p, endp, llparse_blob50, 3);
11630 p = match_seq.current;
11631 switch (match_seq.status) {
11632 case kMatchComplete: {
11633 p++;
11634 goto s_n_llhttp__internal__n_invoke_update_type_1;
11635 }
11636 case kMatchPause: {
11637 return s_n_llhttp__internal__n_req_or_res_method_3;
11638 }
11639 case kMatchMismatch: {
11640 goto s_n_llhttp__internal__n_error_45;
11641 }
11642 }
11643 /* UNREACHABLE */;
11644 abort();
11645 }
11646 case s_n_llhttp__internal__n_req_or_res_method_1:
11647 s_n_llhttp__internal__n_req_or_res_method_1: {
11648 if (p == endp) {
11649 return s_n_llhttp__internal__n_req_or_res_method_1;
11650 }
11651 switch (*p) {
11652 case 'E': {
11653 p++;
11654 goto s_n_llhttp__internal__n_req_or_res_method_2;
11655 }
11656 case 'T': {
11657 p++;
11658 goto s_n_llhttp__internal__n_req_or_res_method_3;
11659 }
11660 default: {
11661 goto s_n_llhttp__internal__n_error_45;
11662 }
11663 }
11664 /* UNREACHABLE */;
11665 abort();
11666 }
11667 case s_n_llhttp__internal__n_req_or_res_method:
11668 s_n_llhttp__internal__n_req_or_res_method: {
11669 if (p == endp) {
11670 return s_n_llhttp__internal__n_req_or_res_method;
11671 }
11672 switch (*p) {
11673 case 'H': {
11674 p++;
11675 goto s_n_llhttp__internal__n_req_or_res_method_1;
11676 }
11677 default: {
11678 goto s_n_llhttp__internal__n_error_45;
11679 }
11680 }
11681 /* UNREACHABLE */;
11682 abort();
11683 }
11684 case s_n_llhttp__internal__n_start_req_or_res:
11685 s_n_llhttp__internal__n_start_req_or_res: {
11686 if (p == endp) {
11687 return s_n_llhttp__internal__n_start_req_or_res;
11688 }
11689 switch (*p) {
11690 case 'H': {
11691 goto s_n_llhttp__internal__n_req_or_res_method;
11692 }
11693 default: {
11694 goto s_n_llhttp__internal__n_invoke_update_type_2;
11695 }
11696 }
11697 /* UNREACHABLE */;
11698 abort();
11699 }
11700 case s_n_llhttp__internal__n_invoke_load_type:
11701 s_n_llhttp__internal__n_invoke_load_type: {
11702 switch (llhttp__internal__c_load_type(state, p, endp)) {
11703 case 1:
11704 goto s_n_llhttp__internal__n_start_req;
11705 case 2:
11706 goto s_n_llhttp__internal__n_start_res;
11707 default:
11708 goto s_n_llhttp__internal__n_start_req_or_res;
11709 }
11710 /* UNREACHABLE */;
11711 abort();
11712 }
11713 case s_n_llhttp__internal__n_start:
11714 s_n_llhttp__internal__n_start: {
11715 if (p == endp) {
11716 return s_n_llhttp__internal__n_start;
11717 }
11718 switch (*p) {
11719 case 10: {
11720 p++;
11721 goto s_n_llhttp__internal__n_start;
11722 }
11723 case 13: {
11724 p++;
11725 goto s_n_llhttp__internal__n_start;
11726 }
11727 default: {
11728 goto s_n_llhttp__internal__n_invoke_update_finish;
11729 }
11730 }
11731 /* UNREACHABLE */;
11732 abort();
11733 }
11734 default:
11735 /* UNREACHABLE */
11736 abort();
11737 }
11738 s_n_llhttp__internal__n_error_34: {
11739 state->error = 0x7;
11740 state->reason = "Invalid characters in url";
11741 state->error_pos = (const char*) p;
11742 state->_current = (void*) (intptr_t) s_error;
11743 return s_error;
11744 /* UNREACHABLE */;
11745 abort();
11746 }
11747 s_n_llhttp__internal__n_invoke_update_finish_1: {
11748 switch (llhttp__internal__c_update_finish_1(state, p, endp)) {
11749 default:
11750 goto s_n_llhttp__internal__n_start;
11751 }
11752 /* UNREACHABLE */;
11753 abort();
11754 }
11755 s_n_llhttp__internal__n_pause_5: {
11756 state->error = 0x15;
11757 state->reason = "on_message_complete pause";
11758 state->error_pos = (const char*) p;
11759 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_invoke_is_equal_upgrade;
11760 return s_error;
11761 /* UNREACHABLE */;
11762 abort();
11763 }
11764 s_n_llhttp__internal__n_error_9: {
11765 state->error = 0x12;
11766 state->reason = "`on_message_complete` callback error";
11767 state->error_pos = (const char*) p;
11768 state->_current = (void*) (intptr_t) s_error;
11769 return s_error;
11770 /* UNREACHABLE */;
11771 abort();
11772 }
11773 s_n_llhttp__internal__n_pause_7: {
11774 state->error = 0x15;
11775 state->reason = "on_chunk_complete pause";
11776 state->error_pos = (const char*) p;
11777 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_invoke_llhttp__on_message_complete_2;
11778 return s_error;
11779 /* UNREACHABLE */;
11780 abort();
11781 }
11782 s_n_llhttp__internal__n_error_13: {
11783 state->error = 0x14;
11784 state->reason = "`on_chunk_complete` callback error";
11785 state->error_pos = (const char*) p;
11786 state->_current = (void*) (intptr_t) s_error;
11787 return s_error;
11788 /* UNREACHABLE */;
11789 abort();
11790 }
11791 s_n_llhttp__internal__n_invoke_llhttp__on_chunk_complete_1: {
11792 switch (llhttp__on_chunk_complete(state, p, endp)) {
11793 case 0:
11794 goto s_n_llhttp__internal__n_invoke_llhttp__on_message_complete_2;
11795 case 21:
11796 goto s_n_llhttp__internal__n_pause_7;
11797 default:
11798 goto s_n_llhttp__internal__n_error_13;
11799 }
11800 /* UNREACHABLE */;
11801 abort();
11802 }
11803 s_n_llhttp__internal__n_error_11: {
11804 state->error = 0x4;
11805 state->reason = "Content-Length can't be present with Transfer-Encoding";
11806 state->error_pos = (const char*) p;
11807 state->_current = (void*) (intptr_t) s_error;
11808 return s_error;
11809 /* UNREACHABLE */;
11810 abort();
11811 }
11812 s_n_llhttp__internal__n_error_12: {
11813 state->error = 0x4;
11814 state->reason = "Content-Length can't be present with chunked encoding";
11815 state->error_pos = (const char*) p;
11816 state->_current = (void*) (intptr_t) s_error;
11817 return s_error;
11818 /* UNREACHABLE */;
11819 abort();
11820 }
11821 s_n_llhttp__internal__n_pause_2: {
11822 state->error = 0x15;
11823 state->reason = "on_message_complete pause";
11824 state->error_pos = (const char*) p;
11825 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_pause_1;
11826 return s_error;
11827 /* UNREACHABLE */;
11828 abort();
11829 }
11830 s_n_llhttp__internal__n_error_3: {
11831 state->error = 0x12;
11832 state->reason = "`on_message_complete` callback error";
11833 state->error_pos = (const char*) p;
11834 state->_current = (void*) (intptr_t) s_error;
11835 return s_error;
11836 /* UNREACHABLE */;
11837 abort();
11838 }
11839 s_n_llhttp__internal__n_invoke_llhttp__on_message_complete_1: {
11840 switch (llhttp__on_message_complete(state, p, endp)) {
11841 case 0:
11842 goto s_n_llhttp__internal__n_pause_1;
11843 case 21:
11844 goto s_n_llhttp__internal__n_pause_2;
11845 default:
11846 goto s_n_llhttp__internal__n_error_3;
11847 }
11848 /* UNREACHABLE */;
11849 abort();
11850 }
11851 s_n_llhttp__internal__n_error_7: {
11852 state->error = 0xc;
11853 state->reason = "Chunk size overflow";
11854 state->error_pos = (const char*) p;
11855 state->_current = (void*) (intptr_t) s_error;
11856 return s_error;
11857 /* UNREACHABLE */;
11858 abort();
11859 }
11860 s_n_llhttp__internal__n_pause_3: {
11861 state->error = 0x15;
11862 state->reason = "on_chunk_complete pause";
11863 state->error_pos = (const char*) p;
11864 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_invoke_update_content_length;
11865 return s_error;
11866 /* UNREACHABLE */;
11867 abort();
11868 }
11869 s_n_llhttp__internal__n_error_5: {
11870 state->error = 0x14;
11871 state->reason = "`on_chunk_complete` callback error";
11872 state->error_pos = (const char*) p;
11873 state->_current = (void*) (intptr_t) s_error;
11874 return s_error;
11875 /* UNREACHABLE */;
11876 abort();
11877 }
11878 s_n_llhttp__internal__n_invoke_llhttp__on_chunk_complete: {
11879 switch (llhttp__on_chunk_complete(state, p, endp)) {
11880 case 0:
11881 goto s_n_llhttp__internal__n_invoke_update_content_length;
11882 case 21:
11883 goto s_n_llhttp__internal__n_pause_3;
11884 default:
11885 goto s_n_llhttp__internal__n_error_5;
11886 }
11887 /* UNREACHABLE */;
11888 abort();
11889 }
11890 s_n_llhttp__internal__n_span_end_llhttp__on_body: {
11891 const unsigned char* start;
11892 int err;
11893
11894 start = state->_span_pos0;
11895 state->_span_pos0 = NULL;
11896 err = llhttp__on_body(state, start, p);
11897 if (err != 0) {
11898 state->error = err;
11899 state->error_pos = (const char*) p;
11900 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_chunk_data_almost_done;
11901 return s_error;
11902 }
11903 goto s_n_llhttp__internal__n_chunk_data_almost_done;
11904 /* UNREACHABLE */;
11905 abort();
11906 }
11907 s_n_llhttp__internal__n_invoke_or_flags: {
11908 switch (llhttp__internal__c_or_flags(state, p, endp)) {
11909 default:
11910 goto s_n_llhttp__internal__n_header_field_start;
11911 }
11912 /* UNREACHABLE */;
11913 abort();
11914 }
11915 s_n_llhttp__internal__n_pause_4: {
11916 state->error = 0x15;
11917 state->reason = "on_chunk_header pause";
11918 state->error_pos = (const char*) p;
11919 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_invoke_is_equal_content_length;
11920 return s_error;
11921 /* UNREACHABLE */;
11922 abort();
11923 }
11924 s_n_llhttp__internal__n_error_4: {
11925 state->error = 0x13;
11926 state->reason = "`on_chunk_header` callback error";
11927 state->error_pos = (const char*) p;
11928 state->_current = (void*) (intptr_t) s_error;
11929 return s_error;
11930 /* UNREACHABLE */;
11931 abort();
11932 }
11933 s_n_llhttp__internal__n_invoke_llhttp__on_chunk_header: {
11934 switch (llhttp__on_chunk_header(state, p, endp)) {
11935 case 0:
11936 goto s_n_llhttp__internal__n_invoke_is_equal_content_length;
11937 case 21:
11938 goto s_n_llhttp__internal__n_pause_4;
11939 default:
11940 goto s_n_llhttp__internal__n_error_4;
11941 }
11942 /* UNREACHABLE */;
11943 abort();
11944 }
11945 s_n_llhttp__internal__n_error_6: {
11946 state->error = 0xc;
11947 state->reason = "Invalid character in chunk size";
11948 state->error_pos = (const char*) p;
11949 state->_current = (void*) (intptr_t) s_error;
11950 return s_error;
11951 /* UNREACHABLE */;
11952 abort();
11953 }
11954 s_n_llhttp__internal__n_invoke_mul_add_content_length: {
11955 switch (llhttp__internal__c_mul_add_content_length(state, p, endp, match)) {
11956 case 1:
11957 goto s_n_llhttp__internal__n_error_7;
11958 default:
11959 goto s_n_llhttp__internal__n_chunk_size;
11960 }
11961 /* UNREACHABLE */;
11962 abort();
11963 }
11964 s_n_llhttp__internal__n_error_8: {
11965 state->error = 0xc;
11966 state->reason = "Invalid character in chunk size";
11967 state->error_pos = (const char*) p;
11968 state->_current = (void*) (intptr_t) s_error;
11969 return s_error;
11970 /* UNREACHABLE */;
11971 abort();
11972 }
11973 s_n_llhttp__internal__n_span_end_llhttp__on_body_1: {
11974 const unsigned char* start;
11975 int err;
11976
11977 start = state->_span_pos0;
11978 state->_span_pos0 = NULL;
11979 err = llhttp__on_body(state, start, p);
11980 if (err != 0) {
11981 state->error = err;
11982 state->error_pos = (const char*) p;
11983 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_invoke_llhttp__on_message_complete_2;
11984 return s_error;
11985 }
11986 goto s_n_llhttp__internal__n_invoke_llhttp__on_message_complete_2;
11987 /* UNREACHABLE */;
11988 abort();
11989 }
11990 s_n_llhttp__internal__n_invoke_update_finish_2: {
11991 switch (llhttp__internal__c_update_finish_2(state, p, endp)) {
11992 default:
11993 goto s_n_llhttp__internal__n_span_start_llhttp__on_body_2;
11994 }
11995 /* UNREACHABLE */;
11996 abort();
11997 }
11998 s_n_llhttp__internal__n_error_10: {
11999 state->error = 0xf;
12000 state->reason = "Request has invalid `Transfer-Encoding`";
12001 state->error_pos = (const char*) p;
12002 state->_current = (void*) (intptr_t) s_error;
12003 return s_error;
12004 /* UNREACHABLE */;
12005 abort();
12006 }
12007 s_n_llhttp__internal__n_pause: {
12008 state->error = 0x15;
12009 state->reason = "on_message_complete pause";
12010 state->error_pos = (const char*) p;
12011 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_invoke_llhttp__after_message_complete;
12012 return s_error;
12013 /* UNREACHABLE */;
12014 abort();
12015 }
12016 s_n_llhttp__internal__n_error_2: {
12017 state->error = 0x12;
12018 state->reason = "`on_message_complete` callback error";
12019 state->error_pos = (const char*) p;
12020 state->_current = (void*) (intptr_t) s_error;
12021 return s_error;
12022 /* UNREACHABLE */;
12023 abort();
12024 }
12025 s_n_llhttp__internal__n_invoke_llhttp__on_message_complete: {
12026 switch (llhttp__on_message_complete(state, p, endp)) {
12027 case 0:
12028 goto s_n_llhttp__internal__n_invoke_llhttp__after_message_complete;
12029 case 21:
12030 goto s_n_llhttp__internal__n_pause;
12031 default:
12032 goto s_n_llhttp__internal__n_error_2;
12033 }
12034 /* UNREACHABLE */;
12035 abort();
12036 }
12037 s_n_llhttp__internal__n_invoke_or_flags_1: {
12038 switch (llhttp__internal__c_or_flags_1(state, p, endp)) {
12039 default:
12040 goto s_n_llhttp__internal__n_invoke_llhttp__after_headers_complete;
12041 }
12042 /* UNREACHABLE */;
12043 abort();
12044 }
12045 s_n_llhttp__internal__n_invoke_or_flags_2: {
12046 switch (llhttp__internal__c_or_flags_1(state, p, endp)) {
12047 default:
12048 goto s_n_llhttp__internal__n_invoke_llhttp__after_headers_complete;
12049 }
12050 /* UNREACHABLE */;
12051 abort();
12052 }
12053 s_n_llhttp__internal__n_invoke_update_upgrade: {
12054 switch (llhttp__internal__c_update_upgrade(state, p, endp)) {
12055 default:
12056 goto s_n_llhttp__internal__n_invoke_or_flags_2;
12057 }
12058 /* UNREACHABLE */;
12059 abort();
12060 }
12061 s_n_llhttp__internal__n_pause_6: {
12062 state->error = 0x15;
12063 state->reason = "Paused by on_headers_complete";
12064 state->error_pos = (const char*) p;
12065 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_invoke_llhttp__after_headers_complete;
12066 return s_error;
12067 /* UNREACHABLE */;
12068 abort();
12069 }
12070 s_n_llhttp__internal__n_error_1: {
12071 state->error = 0x11;
12072 state->reason = "User callback error";
12073 state->error_pos = (const char*) p;
12074 state->_current = (void*) (intptr_t) s_error;
12075 return s_error;
12076 /* UNREACHABLE */;
12077 abort();
12078 }
12079 s_n_llhttp__internal__n_invoke_llhttp__on_headers_complete: {
12080 switch (llhttp__on_headers_complete(state, p, endp)) {
12081 case 0:
12082 goto s_n_llhttp__internal__n_invoke_llhttp__after_headers_complete;
12083 case 1:
12084 goto s_n_llhttp__internal__n_invoke_or_flags_1;
12085 case 2:
12086 goto s_n_llhttp__internal__n_invoke_update_upgrade;
12087 case 21:
12088 goto s_n_llhttp__internal__n_pause_6;
12089 default:
12090 goto s_n_llhttp__internal__n_error_1;
12091 }
12092 /* UNREACHABLE */;
12093 abort();
12094 }
12095 s_n_llhttp__internal__n_invoke_llhttp__before_headers_complete: {
12096 switch (llhttp__before_headers_complete(state, p, endp)) {
12097 default:
12098 goto s_n_llhttp__internal__n_invoke_llhttp__on_headers_complete;
12099 }
12100 /* UNREACHABLE */;
12101 abort();
12102 }
12103 s_n_llhttp__internal__n_invoke_test_flags_3: {
12104 switch (llhttp__internal__c_test_flags_3(state, p, endp)) {
12105 case 1:
12106 goto s_n_llhttp__internal__n_error_12;
12107 default:
12108 goto s_n_llhttp__internal__n_invoke_llhttp__before_headers_complete;
12109 }
12110 /* UNREACHABLE */;
12111 abort();
12112 }
12113 s_n_llhttp__internal__n_invoke_test_flags_2: {
12114 switch (llhttp__internal__c_test_flags_2(state, p, endp)) {
12115 case 0:
12116 goto s_n_llhttp__internal__n_error_11;
12117 case 1:
12118 goto s_n_llhttp__internal__n_invoke_test_flags_3;
12119 default:
12120 goto s_n_llhttp__internal__n_invoke_llhttp__before_headers_complete;
12121 }
12122 /* UNREACHABLE */;
12123 abort();
12124 }
12125 s_n_llhttp__internal__n_invoke_test_flags_1: {
12126 switch (llhttp__internal__c_test_flags_1(state, p, endp)) {
12127 case 1:
12128 goto s_n_llhttp__internal__n_invoke_test_flags_2;
12129 default:
12130 goto s_n_llhttp__internal__n_invoke_llhttp__before_headers_complete;
12131 }
12132 /* UNREACHABLE */;
12133 abort();
12134 }
12135 s_n_llhttp__internal__n_invoke_test_flags: {
12136 switch (llhttp__internal__c_test_flags(state, p, endp)) {
12137 case 1:
12138 goto s_n_llhttp__internal__n_invoke_llhttp__on_chunk_complete_1;
12139 default:
12140 goto s_n_llhttp__internal__n_invoke_test_flags_1;
12141 }
12142 /* UNREACHABLE */;
12143 abort();
12144 }
12145 s_n_llhttp__internal__n_error_14: {
12146 state->error = 0xb;
12147 state->reason = "Empty Content-Length";
12148 state->error_pos = (const char*) p;
12149 state->_current = (void*) (intptr_t) s_error;
12150 return s_error;
12151 /* UNREACHABLE */;
12152 abort();
12153 }
12154 s_n_llhttp__internal__n_span_end_llhttp__on_header_value: {
12155 const unsigned char* start;
12156 int err;
12157
12158 start = state->_span_pos0;
12159 state->_span_pos0 = NULL;
12160 err = llhttp__on_header_value(state, start, p);
12161 if (err != 0) {
12162 state->error = err;
12163 state->error_pos = (const char*) p;
12164 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_header_field_start;
12165 return s_error;
12166 }
12167 goto s_n_llhttp__internal__n_header_field_start;
12168 /* UNREACHABLE */;
12169 abort();
12170 }
12171 s_n_llhttp__internal__n_invoke_update_header_state: {
12172 switch (llhttp__internal__c_update_header_state(state, p, endp)) {
12173 default:
12174 goto s_n_llhttp__internal__n_span_start_llhttp__on_header_value;
12175 }
12176 /* UNREACHABLE */;
12177 abort();
12178 }
12179 s_n_llhttp__internal__n_invoke_or_flags_3: {
12180 switch (llhttp__internal__c_or_flags_3(state, p, endp)) {
12181 default:
12182 goto s_n_llhttp__internal__n_invoke_update_header_state;
12183 }
12184 /* UNREACHABLE */;
12185 abort();
12186 }
12187 s_n_llhttp__internal__n_invoke_or_flags_4: {
12188 switch (llhttp__internal__c_or_flags_4(state, p, endp)) {
12189 default:
12190 goto s_n_llhttp__internal__n_invoke_update_header_state;
12191 }
12192 /* UNREACHABLE */;
12193 abort();
12194 }
12195 s_n_llhttp__internal__n_invoke_or_flags_5: {
12196 switch (llhttp__internal__c_or_flags_5(state, p, endp)) {
12197 default:
12198 goto s_n_llhttp__internal__n_invoke_update_header_state;
12199 }
12200 /* UNREACHABLE */;
12201 abort();
12202 }
12203 s_n_llhttp__internal__n_invoke_or_flags_6: {
12204 switch (llhttp__internal__c_or_flags_6(state, p, endp)) {
12205 default:
12206 goto s_n_llhttp__internal__n_span_start_llhttp__on_header_value;
12207 }
12208 /* UNREACHABLE */;
12209 abort();
12210 }
12211 s_n_llhttp__internal__n_invoke_load_header_state_1: {
12212 switch (llhttp__internal__c_load_header_state(state, p, endp)) {
12213 case 5:
12214 goto s_n_llhttp__internal__n_invoke_or_flags_3;
12215 case 6:
12216 goto s_n_llhttp__internal__n_invoke_or_flags_4;
12217 case 7:
12218 goto s_n_llhttp__internal__n_invoke_or_flags_5;
12219 case 8:
12220 goto s_n_llhttp__internal__n_invoke_or_flags_6;
12221 default:
12222 goto s_n_llhttp__internal__n_span_start_llhttp__on_header_value;
12223 }
12224 /* UNREACHABLE */;
12225 abort();
12226 }
12227 s_n_llhttp__internal__n_invoke_load_header_state: {
12228 switch (llhttp__internal__c_load_header_state(state, p, endp)) {
12229 case 2:
12230 goto s_n_llhttp__internal__n_error_14;
12231 default:
12232 goto s_n_llhttp__internal__n_invoke_load_header_state_1;
12233 }
12234 /* UNREACHABLE */;
12235 abort();
12236 }
12237 s_n_llhttp__internal__n_invoke_update_header_state_1: {
12238 switch (llhttp__internal__c_update_header_state(state, p, endp)) {
12239 default:
12240 goto s_n_llhttp__internal__n_header_field_start;
12241 }
12242 /* UNREACHABLE */;
12243 abort();
12244 }
12245 s_n_llhttp__internal__n_invoke_or_flags_7: {
12246 switch (llhttp__internal__c_or_flags_3(state, p, endp)) {
12247 default:
12248 goto s_n_llhttp__internal__n_invoke_update_header_state_1;
12249 }
12250 /* UNREACHABLE */;
12251 abort();
12252 }
12253 s_n_llhttp__internal__n_invoke_or_flags_8: {
12254 switch (llhttp__internal__c_or_flags_4(state, p, endp)) {
12255 default:
12256 goto s_n_llhttp__internal__n_invoke_update_header_state_1;
12257 }
12258 /* UNREACHABLE */;
12259 abort();
12260 }
12261 s_n_llhttp__internal__n_invoke_or_flags_9: {
12262 switch (llhttp__internal__c_or_flags_5(state, p, endp)) {
12263 default:
12264 goto s_n_llhttp__internal__n_invoke_update_header_state_1;
12265 }
12266 /* UNREACHABLE */;
12267 abort();
12268 }
12269 s_n_llhttp__internal__n_invoke_or_flags_10: {
12270 switch (llhttp__internal__c_or_flags_6(state, p, endp)) {
12271 default:
12272 goto s_n_llhttp__internal__n_header_field_start;
12273 }
12274 /* UNREACHABLE */;
12275 abort();
12276 }
12277 s_n_llhttp__internal__n_invoke_load_header_state_3: {
12278 switch (llhttp__internal__c_load_header_state(state, p, endp)) {
12279 case 5:
12280 goto s_n_llhttp__internal__n_invoke_or_flags_7;
12281 case 6:
12282 goto s_n_llhttp__internal__n_invoke_or_flags_8;
12283 case 7:
12284 goto s_n_llhttp__internal__n_invoke_or_flags_9;
12285 case 8:
12286 goto s_n_llhttp__internal__n_invoke_or_flags_10;
12287 default:
12288 goto s_n_llhttp__internal__n_header_field_start;
12289 }
12290 /* UNREACHABLE */;
12291 abort();
12292 }
12293 s_n_llhttp__internal__n_error_15: {
12294 state->error = 0x3;
12295 state->reason = "Missing expected LF after header value";
12296 state->error_pos = (const char*) p;
12297 state->_current = (void*) (intptr_t) s_error;
12298 return s_error;
12299 /* UNREACHABLE */;
12300 abort();
12301 }
12302 s_n_llhttp__internal__n_span_end_llhttp__on_header_value_1: {
12303 const unsigned char* start;
12304 int err;
12305
12306 start = state->_span_pos0;
12307 state->_span_pos0 = NULL;
12308 err = llhttp__on_header_value(state, start, p);
12309 if (err != 0) {
12310 state->error = err;
12311 state->error_pos = (const char*) p;
12312 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_header_value_almost_done;
12313 return s_error;
12314 }
12315 goto s_n_llhttp__internal__n_header_value_almost_done;
12316 /* UNREACHABLE */;
12317 abort();
12318 }
12319 s_n_llhttp__internal__n_span_end_llhttp__on_header_value_2: {
12320 const unsigned char* start;
12321 int err;
12322
12323 start = state->_span_pos0;
12324 state->_span_pos0 = NULL;
12325 err = llhttp__on_header_value(state, start, p);
12326 if (err != 0) {
12327 state->error = err;
12328 state->error_pos = (const char*) (p + 1);
12329 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_header_value_almost_done;
12330 return s_error;
12331 }
12332 p++;
12333 goto s_n_llhttp__internal__n_header_value_almost_done;
12334 /* UNREACHABLE */;
12335 abort();
12336 }
12337 s_n_llhttp__internal__n_span_end_llhttp__on_header_value_3: {
12338 const unsigned char* start;
12339 int err;
12340
12341 start = state->_span_pos0;
12342 state->_span_pos0 = NULL;
12343 err = llhttp__on_header_value(state, start, p);
12344 if (err != 0) {
12345 state->error = err;
12346 state->error_pos = (const char*) (p + 1);
12347 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_header_value_almost_done;
12348 return s_error;
12349 }
12350 p++;
12351 goto s_n_llhttp__internal__n_header_value_almost_done;
12352 /* UNREACHABLE */;
12353 abort();
12354 }
12355 s_n_llhttp__internal__n_error_16: {
12356 state->error = 0xa;
12357 state->reason = "Invalid header value char";
12358 state->error_pos = (const char*) p;
12359 state->_current = (void*) (intptr_t) s_error;
12360 return s_error;
12361 /* UNREACHABLE */;
12362 abort();
12363 }
12364 s_n_llhttp__internal__n_invoke_test_flags_4: {
12365 switch (llhttp__internal__c_test_flags_2(state, p, endp)) {
12366 case 1:
12367 goto s_n_llhttp__internal__n_header_value_lenient;
12368 default:
12369 goto s_n_llhttp__internal__n_error_16;
12370 }
12371 /* UNREACHABLE */;
12372 abort();
12373 }
12374 s_n_llhttp__internal__n_invoke_update_header_state_3: {
12375 switch (llhttp__internal__c_update_header_state(state, p, endp)) {
12376 default:
12377 goto s_n_llhttp__internal__n_header_value_connection;
12378 }
12379 /* UNREACHABLE */;
12380 abort();
12381 }
12382 s_n_llhttp__internal__n_invoke_or_flags_11: {
12383 switch (llhttp__internal__c_or_flags_3(state, p, endp)) {
12384 default:
12385 goto s_n_llhttp__internal__n_invoke_update_header_state_3;
12386 }
12387 /* UNREACHABLE */;
12388 abort();
12389 }
12390 s_n_llhttp__internal__n_invoke_or_flags_12: {
12391 switch (llhttp__internal__c_or_flags_4(state, p, endp)) {
12392 default:
12393 goto s_n_llhttp__internal__n_invoke_update_header_state_3;
12394 }
12395 /* UNREACHABLE */;
12396 abort();
12397 }
12398 s_n_llhttp__internal__n_invoke_or_flags_13: {
12399 switch (llhttp__internal__c_or_flags_5(state, p, endp)) {
12400 default:
12401 goto s_n_llhttp__internal__n_invoke_update_header_state_3;
12402 }
12403 /* UNREACHABLE */;
12404 abort();
12405 }
12406 s_n_llhttp__internal__n_invoke_or_flags_14: {
12407 switch (llhttp__internal__c_or_flags_6(state, p, endp)) {
12408 default:
12409 goto s_n_llhttp__internal__n_header_value_connection;
12410 }
12411 /* UNREACHABLE */;
12412 abort();
12413 }
12414 s_n_llhttp__internal__n_invoke_load_header_state_4: {
12415 switch (llhttp__internal__c_load_header_state(state, p, endp)) {
12416 case 5:
12417 goto s_n_llhttp__internal__n_invoke_or_flags_11;
12418 case 6:
12419 goto s_n_llhttp__internal__n_invoke_or_flags_12;
12420 case 7:
12421 goto s_n_llhttp__internal__n_invoke_or_flags_13;
12422 case 8:
12423 goto s_n_llhttp__internal__n_invoke_or_flags_14;
12424 default:
12425 goto s_n_llhttp__internal__n_header_value_connection;
12426 }
12427 /* UNREACHABLE */;
12428 abort();
12429 }
12430 s_n_llhttp__internal__n_invoke_update_header_state_4: {
12431 switch (llhttp__internal__c_update_header_state_4(state, p, endp)) {
12432 default:
12433 goto s_n_llhttp__internal__n_header_value_connection_token;
12434 }
12435 /* UNREACHABLE */;
12436 abort();
12437 }
12438 s_n_llhttp__internal__n_invoke_update_header_state_2: {
12439 switch (llhttp__internal__c_update_header_state_2(state, p, endp)) {
12440 default:
12441 goto s_n_llhttp__internal__n_header_value_connection_ws;
12442 }
12443 /* UNREACHABLE */;
12444 abort();
12445 }
12446 s_n_llhttp__internal__n_invoke_update_header_state_5: {
12447 switch (llhttp__internal__c_update_header_state_5(state, p, endp)) {
12448 default:
12449 goto s_n_llhttp__internal__n_header_value_connection_ws;
12450 }
12451 /* UNREACHABLE */;
12452 abort();
12453 }
12454 s_n_llhttp__internal__n_invoke_update_header_state_6: {
12455 switch (llhttp__internal__c_update_header_state_6(state, p, endp)) {
12456 default:
12457 goto s_n_llhttp__internal__n_header_value_connection_ws;
12458 }
12459 /* UNREACHABLE */;
12460 abort();
12461 }
12462 s_n_llhttp__internal__n_span_end_llhttp__on_header_value_4: {
12463 const unsigned char* start;
12464 int err;
12465
12466 start = state->_span_pos0;
12467 state->_span_pos0 = NULL;
12468 err = llhttp__on_header_value(state, start, p);
12469 if (err != 0) {
12470 state->error = err;
12471 state->error_pos = (const char*) p;
12472 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_18;
12473 return s_error;
12474 }
12475 goto s_n_llhttp__internal__n_error_18;
12476 /* UNREACHABLE */;
12477 abort();
12478 }
12479 s_n_llhttp__internal__n_invoke_mul_add_content_length_1: {
12480 switch (llhttp__internal__c_mul_add_content_length_1(state, p, endp, match)) {
12481 case 1:
12482 goto s_n_llhttp__internal__n_span_end_llhttp__on_header_value_4;
12483 default:
12484 goto s_n_llhttp__internal__n_header_value_content_length;
12485 }
12486 /* UNREACHABLE */;
12487 abort();
12488 }
12489 s_n_llhttp__internal__n_invoke_or_flags_15: {
12490 switch (llhttp__internal__c_or_flags_15(state, p, endp)) {
12491 default:
12492 goto s_n_llhttp__internal__n_header_value_otherwise;
12493 }
12494 /* UNREACHABLE */;
12495 abort();
12496 }
12497 s_n_llhttp__internal__n_span_end_llhttp__on_header_value_5: {
12498 const unsigned char* start;
12499 int err;
12500
12501 start = state->_span_pos0;
12502 state->_span_pos0 = NULL;
12503 err = llhttp__on_header_value(state, start, p);
12504 if (err != 0) {
12505 state->error = err;
12506 state->error_pos = (const char*) p;
12507 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_error_19;
12508 return s_error;
12509 }
12510 goto s_n_llhttp__internal__n_error_19;
12511 /* UNREACHABLE */;
12512 abort();
12513 }
12514 s_n_llhttp__internal__n_error_17: {
12515 state->error = 0x4;
12516 state->reason = "Duplicate Content-Length";
12517 state->error_pos = (const char*) p;
12518 state->_current = (void*) (intptr_t) s_error;
12519 return s_error;
12520 /* UNREACHABLE */;
12521 abort();
12522 }
12523 s_n_llhttp__internal__n_invoke_test_flags_5: {
12524 switch (llhttp__internal__c_test_flags_5(state, p, endp)) {
12525 case 0:
12526 goto s_n_llhttp__internal__n_header_value_content_length;
12527 default:
12528 goto s_n_llhttp__internal__n_error_17;
12529 }
12530 /* UNREACHABLE */;
12531 abort();
12532 }
12533 s_n_llhttp__internal__n_invoke_update_header_state_7: {
12534 switch (llhttp__internal__c_update_header_state_7(state, p, endp)) {
12535 default:
12536 goto s_n_llhttp__internal__n_header_value_otherwise;
12537 }
12538 /* UNREACHABLE */;
12539 abort();
12540 }
12541 s_n_llhttp__internal__n_invoke_update_header_state_8: {
12542 switch (llhttp__internal__c_update_header_state_4(state, p, endp)) {
12543 default:
12544 goto s_n_llhttp__internal__n_header_value;
12545 }
12546 /* UNREACHABLE */;
12547 abort();
12548 }
12549 s_n_llhttp__internal__n_invoke_and_flags: {
12550 switch (llhttp__internal__c_and_flags(state, p, endp)) {
12551 default:
12552 goto s_n_llhttp__internal__n_header_value_te_chunked;
12553 }
12554 /* UNREACHABLE */;
12555 abort();
12556 }
12557 s_n_llhttp__internal__n_invoke_or_flags_16: {
12558 switch (llhttp__internal__c_or_flags_16(state, p, endp)) {
12559 default:
12560 goto s_n_llhttp__internal__n_invoke_and_flags;
12561 }
12562 /* UNREACHABLE */;
12563 abort();
12564 }
12565 s_n_llhttp__internal__n_invoke_or_flags_17: {
12566 switch (llhttp__internal__c_or_flags_17(state, p, endp)) {
12567 default:
12568 goto s_n_llhttp__internal__n_invoke_update_header_state_8;
12569 }
12570 /* UNREACHABLE */;
12571 abort();
12572 }
12573 s_n_llhttp__internal__n_invoke_load_header_state_2: {
12574 switch (llhttp__internal__c_load_header_state(state, p, endp)) {
12575 case 1:
12576 goto s_n_llhttp__internal__n_header_value_connection;
12577 case 2:
12578 goto s_n_llhttp__internal__n_invoke_test_flags_5;
12579 case 3:
12580 goto s_n_llhttp__internal__n_invoke_or_flags_16;
12581 case 4:
12582 goto s_n_llhttp__internal__n_invoke_or_flags_17;
12583 default:
12584 goto s_n_llhttp__internal__n_header_value;
12585 }
12586 /* UNREACHABLE */;
12587 abort();
12588 }
12589 s_n_llhttp__internal__n_span_end_llhttp__on_header_field: {
12590 const unsigned char* start;
12591 int err;
12592
12593 start = state->_span_pos0;
12594 state->_span_pos0 = NULL;
12595 err = llhttp__on_header_field(state, start, p);
12596 if (err != 0) {
12597 state->error = err;
12598 state->error_pos = (const char*) (p + 1);
12599 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_header_value_discard_ws;
12600 return s_error;
12601 }
12602 p++;
12603 goto s_n_llhttp__internal__n_header_value_discard_ws;
12604 /* UNREACHABLE */;
12605 abort();
12606 }
12607 s_n_llhttp__internal__n_span_end_llhttp__on_header_field_1: {
12608 const unsigned char* start;
12609 int err;
12610
12611 start = state->_span_pos0;
12612 state->_span_pos0 = NULL;
12613 err = llhttp__on_header_field(state, start, p);
12614 if (err != 0) {
12615 state->error = err;
12616 state->error_pos = (const char*) (p + 1);
12617 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_header_value_discard_ws;
12618 return s_error;
12619 }
12620 p++;
12621 goto s_n_llhttp__internal__n_header_value_discard_ws;
12622 /* UNREACHABLE */;
12623 abort();
12624 }
12625 s_n_llhttp__internal__n_error_20: {
12626 state->error = 0xa;
12627 state->reason = "Invalid header token";
12628 state->error_pos = (const char*) p;
12629 state->_current = (void*) (intptr_t) s_error;
12630 return s_error;
12631 /* UNREACHABLE */;
12632 abort();
12633 }
12634 s_n_llhttp__internal__n_invoke_update_header_state_9: {
12635 switch (llhttp__internal__c_update_header_state_4(state, p, endp)) {
12636 default:
12637 goto s_n_llhttp__internal__n_header_field_general;
12638 }
12639 /* UNREACHABLE */;
12640 abort();
12641 }
12642 s_n_llhttp__internal__n_invoke_store_header_state: {
12643 switch (llhttp__internal__c_store_header_state(state, p, endp, match)) {
12644 default:
12645 goto s_n_llhttp__internal__n_header_field_colon;
12646 }
12647 /* UNREACHABLE */;
12648 abort();
12649 }
12650 s_n_llhttp__internal__n_invoke_update_header_state_10: {
12651 switch (llhttp__internal__c_update_header_state_4(state, p, endp)) {
12652 default:
12653 goto s_n_llhttp__internal__n_header_field_general;
12654 }
12655 /* UNREACHABLE */;
12656 abort();
12657 }
12658 s_n_llhttp__internal__n_invoke_update_http_minor: {
12659 switch (llhttp__internal__c_update_http_minor(state, p, endp)) {
12660 default:
12661 goto s_n_llhttp__internal__n_header_field_start;
12662 }
12663 /* UNREACHABLE */;
12664 abort();
12665 }
12666 s_n_llhttp__internal__n_invoke_update_http_major: {
12667 switch (llhttp__internal__c_update_http_major(state, p, endp)) {
12668 default:
12669 goto s_n_llhttp__internal__n_invoke_update_http_minor;
12670 }
12671 /* UNREACHABLE */;
12672 abort();
12673 }
12674 s_n_llhttp__internal__n_span_end_llhttp__on_url_3: {
12675 const unsigned char* start;
12676 int err;
12677
12678 start = state->_span_pos0;
12679 state->_span_pos0 = NULL;
12680 err = llhttp__on_url(state, start, p);
12681 if (err != 0) {
12682 state->error = err;
12683 state->error_pos = (const char*) p;
12684 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_url_skip_to_http09;
12685 return s_error;
12686 }
12687 goto s_n_llhttp__internal__n_url_skip_to_http09;
12688 /* UNREACHABLE */;
12689 abort();
12690 }
12691 s_n_llhttp__internal__n_error_21: {
12692 state->error = 0x7;
12693 state->reason = "Expected CRLF";
12694 state->error_pos = (const char*) p;
12695 state->_current = (void*) (intptr_t) s_error;
12696 return s_error;
12697 /* UNREACHABLE */;
12698 abort();
12699 }
12700 s_n_llhttp__internal__n_span_end_llhttp__on_url_4: {
12701 const unsigned char* start;
12702 int err;
12703
12704 start = state->_span_pos0;
12705 state->_span_pos0 = NULL;
12706 err = llhttp__on_url(state, start, p);
12707 if (err != 0) {
12708 state->error = err;
12709 state->error_pos = (const char*) p;
12710 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_url_skip_lf_to_http09;
12711 return s_error;
12712 }
12713 goto s_n_llhttp__internal__n_url_skip_lf_to_http09;
12714 /* UNREACHABLE */;
12715 abort();
12716 }
12717 s_n_llhttp__internal__n_error_22: {
12718 state->error = 0x9;
12719 state->reason = "Expected CRLF after version";
12720 state->error_pos = (const char*) p;
12721 state->_current = (void*) (intptr_t) s_error;
12722 return s_error;
12723 /* UNREACHABLE */;
12724 abort();
12725 }
12726 s_n_llhttp__internal__n_invoke_store_http_minor: {
12727 switch (llhttp__internal__c_store_http_minor(state, p, endp, match)) {
12728 default:
12729 goto s_n_llhttp__internal__n_req_http_end;
12730 }
12731 /* UNREACHABLE */;
12732 abort();
12733 }
12734 s_n_llhttp__internal__n_error_23: {
12735 state->error = 0x9;
12736 state->reason = "Invalid minor version";
12737 state->error_pos = (const char*) p;
12738 state->_current = (void*) (intptr_t) s_error;
12739 return s_error;
12740 /* UNREACHABLE */;
12741 abort();
12742 }
12743 s_n_llhttp__internal__n_error_24: {
12744 state->error = 0x9;
12745 state->reason = "Expected dot";
12746 state->error_pos = (const char*) p;
12747 state->_current = (void*) (intptr_t) s_error;
12748 return s_error;
12749 /* UNREACHABLE */;
12750 abort();
12751 }
12752 s_n_llhttp__internal__n_invoke_store_http_major: {
12753 switch (llhttp__internal__c_store_http_major(state, p, endp, match)) {
12754 default:
12755 goto s_n_llhttp__internal__n_req_http_dot;
12756 }
12757 /* UNREACHABLE */;
12758 abort();
12759 }
12760 s_n_llhttp__internal__n_error_25: {
12761 state->error = 0x9;
12762 state->reason = "Invalid major version";
12763 state->error_pos = (const char*) p;
12764 state->_current = (void*) (intptr_t) s_error;
12765 return s_error;
12766 /* UNREACHABLE */;
12767 abort();
12768 }
12769 s_n_llhttp__internal__n_error_27: {
12770 state->error = 0x8;
12771 state->reason = "Expected HTTP/";
12772 state->error_pos = (const char*) p;
12773 state->_current = (void*) (intptr_t) s_error;
12774 return s_error;
12775 /* UNREACHABLE */;
12776 abort();
12777 }
12778 s_n_llhttp__internal__n_error_26: {
12779 state->error = 0x8;
12780 state->reason = "Expected SOURCE method for ICE/x.x request";
12781 state->error_pos = (const char*) p;
12782 state->_current = (void*) (intptr_t) s_error;
12783 return s_error;
12784 /* UNREACHABLE */;
12785 abort();
12786 }
12787 s_n_llhttp__internal__n_invoke_is_equal_method_1: {
12788 switch (llhttp__internal__c_is_equal_method_1(state, p, endp)) {
12789 case 0:
12790 goto s_n_llhttp__internal__n_error_26;
12791 default:
12792 goto s_n_llhttp__internal__n_req_http_major;
12793 }
12794 /* UNREACHABLE */;
12795 abort();
12796 }
12797 s_n_llhttp__internal__n_span_end_llhttp__on_url_5: {
12798 const unsigned char* start;
12799 int err;
12800
12801 start = state->_span_pos0;
12802 state->_span_pos0 = NULL;
12803 err = llhttp__on_url(state, start, p);
12804 if (err != 0) {
12805 state->error = err;
12806 state->error_pos = (const char*) p;
12807 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_url_skip_to_http;
12808 return s_error;
12809 }
12810 goto s_n_llhttp__internal__n_url_skip_to_http;
12811 /* UNREACHABLE */;
12812 abort();
12813 }
12814 s_n_llhttp__internal__n_span_end_llhttp__on_url_6: {
12815 const unsigned char* start;
12816 int err;
12817
12818 start = state->_span_pos0;
12819 state->_span_pos0 = NULL;
12820 err = llhttp__on_url(state, start, p);
12821 if (err != 0) {
12822 state->error = err;
12823 state->error_pos = (const char*) p;
12824 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_url_skip_to_http09;
12825 return s_error;
12826 }
12827 goto s_n_llhttp__internal__n_url_skip_to_http09;
12828 /* UNREACHABLE */;
12829 abort();
12830 }
12831 s_n_llhttp__internal__n_span_end_llhttp__on_url_7: {
12832 const unsigned char* start;
12833 int err;
12834
12835 start = state->_span_pos0;
12836 state->_span_pos0 = NULL;
12837 err = llhttp__on_url(state, start, p);
12838 if (err != 0) {
12839 state->error = err;
12840 state->error_pos = (const char*) p;
12841 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_url_skip_lf_to_http09;
12842 return s_error;
12843 }
12844 goto s_n_llhttp__internal__n_url_skip_lf_to_http09;
12845 /* UNREACHABLE */;
12846 abort();
12847 }
12848 s_n_llhttp__internal__n_span_end_llhttp__on_url_8: {
12849 const unsigned char* start;
12850 int err;
12851
12852 start = state->_span_pos0;
12853 state->_span_pos0 = NULL;
12854 err = llhttp__on_url(state, start, p);
12855 if (err != 0) {
12856 state->error = err;
12857 state->error_pos = (const char*) p;
12858 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_url_skip_to_http;
12859 return s_error;
12860 }
12861 goto s_n_llhttp__internal__n_url_skip_to_http;
12862 /* UNREACHABLE */;
12863 abort();
12864 }
12865 s_n_llhttp__internal__n_error_28: {
12866 state->error = 0x7;
12867 state->reason = "Invalid char in url fragment start";
12868 state->error_pos = (const char*) p;
12869 state->_current = (void*) (intptr_t) s_error;
12870 return s_error;
12871 /* UNREACHABLE */;
12872 abort();
12873 }
12874 s_n_llhttp__internal__n_span_end_llhttp__on_url_9: {
12875 const unsigned char* start;
12876 int err;
12877
12878 start = state->_span_pos0;
12879 state->_span_pos0 = NULL;
12880 err = llhttp__on_url(state, start, p);
12881 if (err != 0) {
12882 state->error = err;
12883 state->error_pos = (const char*) p;
12884 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_url_skip_to_http09;
12885 return s_error;
12886 }
12887 goto s_n_llhttp__internal__n_url_skip_to_http09;
12888 /* UNREACHABLE */;
12889 abort();
12890 }
12891 s_n_llhttp__internal__n_span_end_llhttp__on_url_10: {
12892 const unsigned char* start;
12893 int err;
12894
12895 start = state->_span_pos0;
12896 state->_span_pos0 = NULL;
12897 err = llhttp__on_url(state, start, p);
12898 if (err != 0) {
12899 state->error = err;
12900 state->error_pos = (const char*) p;
12901 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_url_skip_lf_to_http09;
12902 return s_error;
12903 }
12904 goto s_n_llhttp__internal__n_url_skip_lf_to_http09;
12905 /* UNREACHABLE */;
12906 abort();
12907 }
12908 s_n_llhttp__internal__n_span_end_llhttp__on_url_11: {
12909 const unsigned char* start;
12910 int err;
12911
12912 start = state->_span_pos0;
12913 state->_span_pos0 = NULL;
12914 err = llhttp__on_url(state, start, p);
12915 if (err != 0) {
12916 state->error = err;
12917 state->error_pos = (const char*) p;
12918 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_url_skip_to_http;
12919 return s_error;
12920 }
12921 goto s_n_llhttp__internal__n_url_skip_to_http;
12922 /* UNREACHABLE */;
12923 abort();
12924 }
12925 s_n_llhttp__internal__n_error_29: {
12926 state->error = 0x7;
12927 state->reason = "Invalid char in url query";
12928 state->error_pos = (const char*) p;
12929 state->_current = (void*) (intptr_t) s_error;
12930 return s_error;
12931 /* UNREACHABLE */;
12932 abort();
12933 }
12934 s_n_llhttp__internal__n_error_30: {
12935 state->error = 0x7;
12936 state->reason = "Invalid char in url path";
12937 state->error_pos = (const char*) p;
12938 state->_current = (void*) (intptr_t) s_error;
12939 return s_error;
12940 /* UNREACHABLE */;
12941 abort();
12942 }
12943 s_n_llhttp__internal__n_span_end_llhttp__on_url: {
12944 const unsigned char* start;
12945 int err;
12946
12947 start = state->_span_pos0;
12948 state->_span_pos0 = NULL;
12949 err = llhttp__on_url(state, start, p);
12950 if (err != 0) {
12951 state->error = err;
12952 state->error_pos = (const char*) p;
12953 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_url_skip_to_http09;
12954 return s_error;
12955 }
12956 goto s_n_llhttp__internal__n_url_skip_to_http09;
12957 /* UNREACHABLE */;
12958 abort();
12959 }
12960 s_n_llhttp__internal__n_span_end_llhttp__on_url_1: {
12961 const unsigned char* start;
12962 int err;
12963
12964 start = state->_span_pos0;
12965 state->_span_pos0 = NULL;
12966 err = llhttp__on_url(state, start, p);
12967 if (err != 0) {
12968 state->error = err;
12969 state->error_pos = (const char*) p;
12970 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_url_skip_lf_to_http09;
12971 return s_error;
12972 }
12973 goto s_n_llhttp__internal__n_url_skip_lf_to_http09;
12974 /* UNREACHABLE */;
12975 abort();
12976 }
12977 s_n_llhttp__internal__n_span_end_llhttp__on_url_2: {
12978 const unsigned char* start;
12979 int err;
12980
12981 start = state->_span_pos0;
12982 state->_span_pos0 = NULL;
12983 err = llhttp__on_url(state, start, p);
12984 if (err != 0) {
12985 state->error = err;
12986 state->error_pos = (const char*) p;
12987 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_url_skip_to_http;
12988 return s_error;
12989 }
12990 goto s_n_llhttp__internal__n_url_skip_to_http;
12991 /* UNREACHABLE */;
12992 abort();
12993 }
12994 s_n_llhttp__internal__n_span_end_llhttp__on_url_12: {
12995 const unsigned char* start;
12996 int err;
12997
12998 start = state->_span_pos0;
12999 state->_span_pos0 = NULL;
13000 err = llhttp__on_url(state, start, p);
13001 if (err != 0) {
13002 state->error = err;
13003 state->error_pos = (const char*) p;
13004 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_url_skip_to_http09;
13005 return s_error;
13006 }
13007 goto s_n_llhttp__internal__n_url_skip_to_http09;
13008 /* UNREACHABLE */;
13009 abort();
13010 }
13011 s_n_llhttp__internal__n_span_end_llhttp__on_url_13: {
13012 const unsigned char* start;
13013 int err;
13014
13015 start = state->_span_pos0;
13016 state->_span_pos0 = NULL;
13017 err = llhttp__on_url(state, start, p);
13018 if (err != 0) {
13019 state->error = err;
13020 state->error_pos = (const char*) p;
13021 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_url_skip_lf_to_http09;
13022 return s_error;
13023 }
13024 goto s_n_llhttp__internal__n_url_skip_lf_to_http09;
13025 /* UNREACHABLE */;
13026 abort();
13027 }
13028 s_n_llhttp__internal__n_span_end_llhttp__on_url_14: {
13029 const unsigned char* start;
13030 int err;
13031
13032 start = state->_span_pos0;
13033 state->_span_pos0 = NULL;
13034 err = llhttp__on_url(state, start, p);
13035 if (err != 0) {
13036 state->error = err;
13037 state->error_pos = (const char*) p;
13038 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_url_skip_to_http;
13039 return s_error;
13040 }
13041 goto s_n_llhttp__internal__n_url_skip_to_http;
13042 /* UNREACHABLE */;
13043 abort();
13044 }
13045 s_n_llhttp__internal__n_error_31: {
13046 state->error = 0x7;
13047 state->reason = "Double @ in url";
13048 state->error_pos = (const char*) p;
13049 state->_current = (void*) (intptr_t) s_error;
13050 return s_error;
13051 /* UNREACHABLE */;
13052 abort();
13053 }
13054 s_n_llhttp__internal__n_error_32: {
13055 state->error = 0x7;
13056 state->reason = "Unexpected char in url server";
13057 state->error_pos = (const char*) p;
13058 state->_current = (void*) (intptr_t) s_error;
13059 return s_error;
13060 /* UNREACHABLE */;
13061 abort();
13062 }
13063 s_n_llhttp__internal__n_error_33: {
13064 state->error = 0x7;
13065 state->reason = "Unexpected char in url server";
13066 state->error_pos = (const char*) p;
13067 state->_current = (void*) (intptr_t) s_error;
13068 return s_error;
13069 /* UNREACHABLE */;
13070 abort();
13071 }
13072 s_n_llhttp__internal__n_error_35: {
13073 state->error = 0x7;
13074 state->reason = "Unexpected char in url schema";
13075 state->error_pos = (const char*) p;
13076 state->_current = (void*) (intptr_t) s_error;
13077 return s_error;
13078 /* UNREACHABLE */;
13079 abort();
13080 }
13081 s_n_llhttp__internal__n_error_36: {
13082 state->error = 0x7;
13083 state->reason = "Unexpected char in url schema";
13084 state->error_pos = (const char*) p;
13085 state->_current = (void*) (intptr_t) s_error;
13086 return s_error;
13087 /* UNREACHABLE */;
13088 abort();
13089 }
13090 s_n_llhttp__internal__n_error_37: {
13091 state->error = 0x7;
13092 state->reason = "Unexpected start char in url";
13093 state->error_pos = (const char*) p;
13094 state->_current = (void*) (intptr_t) s_error;
13095 return s_error;
13096 /* UNREACHABLE */;
13097 abort();
13098 }
13099 s_n_llhttp__internal__n_invoke_is_equal_method: {
13100 switch (llhttp__internal__c_is_equal_method(state, p, endp)) {
13101 case 0:
13102 goto s_n_llhttp__internal__n_span_start_llhttp__on_url_1;
13103 default:
13104 goto s_n_llhttp__internal__n_span_start_llhttp__on_url;
13105 }
13106 /* UNREACHABLE */;
13107 abort();
13108 }
13109 s_n_llhttp__internal__n_error_38: {
13110 state->error = 0x6;
13111 state->reason = "Expected space after method";
13112 state->error_pos = (const char*) p;
13113 state->_current = (void*) (intptr_t) s_error;
13114 return s_error;
13115 /* UNREACHABLE */;
13116 abort();
13117 }
13118 s_n_llhttp__internal__n_invoke_store_method_1: {
13119 switch (llhttp__internal__c_store_method(state, p, endp, match)) {
13120 default:
13121 goto s_n_llhttp__internal__n_req_first_space_before_url;
13122 }
13123 /* UNREACHABLE */;
13124 abort();
13125 }
13126 s_n_llhttp__internal__n_error_46: {
13127 state->error = 0x6;
13128 state->reason = "Invalid method encountered";
13129 state->error_pos = (const char*) p;
13130 state->_current = (void*) (intptr_t) s_error;
13131 return s_error;
13132 /* UNREACHABLE */;
13133 abort();
13134 }
13135 s_n_llhttp__internal__n_error_39: {
13136 state->error = 0xd;
13137 state->reason = "Response overflow";
13138 state->error_pos = (const char*) p;
13139 state->_current = (void*) (intptr_t) s_error;
13140 return s_error;
13141 /* UNREACHABLE */;
13142 abort();
13143 }
13144 s_n_llhttp__internal__n_invoke_mul_add_status_code: {
13145 switch (llhttp__internal__c_mul_add_status_code(state, p, endp, match)) {
13146 case 1:
13147 goto s_n_llhttp__internal__n_error_39;
13148 default:
13149 goto s_n_llhttp__internal__n_res_status_code;
13150 }
13151 /* UNREACHABLE */;
13152 abort();
13153 }
13154 s_n_llhttp__internal__n_span_end_llhttp__on_status: {
13155 const unsigned char* start;
13156 int err;
13157
13158 start = state->_span_pos0;
13159 state->_span_pos0 = NULL;
13160 err = llhttp__on_status(state, start, p);
13161 if (err != 0) {
13162 state->error = err;
13163 state->error_pos = (const char*) (p + 1);
13164 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_header_field_start;
13165 return s_error;
13166 }
13167 p++;
13168 goto s_n_llhttp__internal__n_header_field_start;
13169 /* UNREACHABLE */;
13170 abort();
13171 }
13172 s_n_llhttp__internal__n_span_end_llhttp__on_status_1: {
13173 const unsigned char* start;
13174 int err;
13175
13176 start = state->_span_pos0;
13177 state->_span_pos0 = NULL;
13178 err = llhttp__on_status(state, start, p);
13179 if (err != 0) {
13180 state->error = err;
13181 state->error_pos = (const char*) (p + 1);
13182 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_res_line_almost_done;
13183 return s_error;
13184 }
13185 p++;
13186 goto s_n_llhttp__internal__n_res_line_almost_done;
13187 /* UNREACHABLE */;
13188 abort();
13189 }
13190 s_n_llhttp__internal__n_error_40: {
13191 state->error = 0xd;
13192 state->reason = "Invalid response status";
13193 state->error_pos = (const char*) p;
13194 state->_current = (void*) (intptr_t) s_error;
13195 return s_error;
13196 /* UNREACHABLE */;
13197 abort();
13198 }
13199 s_n_llhttp__internal__n_invoke_update_status_code: {
13200 switch (llhttp__internal__c_update_status_code(state, p, endp)) {
13201 default:
13202 goto s_n_llhttp__internal__n_res_status_code;
13203 }
13204 /* UNREACHABLE */;
13205 abort();
13206 }
13207 s_n_llhttp__internal__n_error_41: {
13208 state->error = 0x9;
13209 state->reason = "Expected space after version";
13210 state->error_pos = (const char*) p;
13211 state->_current = (void*) (intptr_t) s_error;
13212 return s_error;
13213 /* UNREACHABLE */;
13214 abort();
13215 }
13216 s_n_llhttp__internal__n_invoke_store_http_minor_1: {
13217 switch (llhttp__internal__c_store_http_minor(state, p, endp, match)) {
13218 default:
13219 goto s_n_llhttp__internal__n_res_http_end;
13220 }
13221 /* UNREACHABLE */;
13222 abort();
13223 }
13224 s_n_llhttp__internal__n_error_42: {
13225 state->error = 0x9;
13226 state->reason = "Invalid minor version";
13227 state->error_pos = (const char*) p;
13228 state->_current = (void*) (intptr_t) s_error;
13229 return s_error;
13230 /* UNREACHABLE */;
13231 abort();
13232 }
13233 s_n_llhttp__internal__n_error_43: {
13234 state->error = 0x9;
13235 state->reason = "Expected dot";
13236 state->error_pos = (const char*) p;
13237 state->_current = (void*) (intptr_t) s_error;
13238 return s_error;
13239 /* UNREACHABLE */;
13240 abort();
13241 }
13242 s_n_llhttp__internal__n_invoke_store_http_major_1: {
13243 switch (llhttp__internal__c_store_http_major(state, p, endp, match)) {
13244 default:
13245 goto s_n_llhttp__internal__n_res_http_dot;
13246 }
13247 /* UNREACHABLE */;
13248 abort();
13249 }
13250 s_n_llhttp__internal__n_error_44: {
13251 state->error = 0x9;
13252 state->reason = "Invalid major version";
13253 state->error_pos = (const char*) p;
13254 state->_current = (void*) (intptr_t) s_error;
13255 return s_error;
13256 /* UNREACHABLE */;
13257 abort();
13258 }
13259 s_n_llhttp__internal__n_error_47: {
13260 state->error = 0x8;
13261 state->reason = "Expected HTTP/";
13262 state->error_pos = (const char*) p;
13263 state->_current = (void*) (intptr_t) s_error;
13264 return s_error;
13265 /* UNREACHABLE */;
13266 abort();
13267 }
13268 s_n_llhttp__internal__n_invoke_update_type: {
13269 switch (llhttp__internal__c_update_type(state, p, endp)) {
13270 default:
13271 goto s_n_llhttp__internal__n_req_first_space_before_url;
13272 }
13273 /* UNREACHABLE */;
13274 abort();
13275 }
13276 s_n_llhttp__internal__n_invoke_store_method: {
13277 switch (llhttp__internal__c_store_method(state, p, endp, match)) {
13278 default:
13279 goto s_n_llhttp__internal__n_invoke_update_type;
13280 }
13281 /* UNREACHABLE */;
13282 abort();
13283 }
13284 s_n_llhttp__internal__n_error_45: {
13285 state->error = 0x8;
13286 state->reason = "Invalid word encountered";
13287 state->error_pos = (const char*) p;
13288 state->_current = (void*) (intptr_t) s_error;
13289 return s_error;
13290 /* UNREACHABLE */;
13291 abort();
13292 }
13293 s_n_llhttp__internal__n_invoke_update_type_1: {
13294 switch (llhttp__internal__c_update_type_1(state, p, endp)) {
13295 default:
13296 goto s_n_llhttp__internal__n_res_http_major;
13297 }
13298 /* UNREACHABLE */;
13299 abort();
13300 }
13301 s_n_llhttp__internal__n_invoke_update_type_2: {
13302 switch (llhttp__internal__c_update_type(state, p, endp)) {
13303 default:
13304 goto s_n_llhttp__internal__n_start_req;
13305 }
13306 /* UNREACHABLE */;
13307 abort();
13308 }
13309 s_n_llhttp__internal__n_pause_8: {
13310 state->error = 0x15;
13311 state->reason = "on_message_begin pause";
13312 state->error_pos = (const char*) p;
13313 state->_current = (void*) (intptr_t) s_n_llhttp__internal__n_invoke_load_type;
13314 return s_error;
13315 /* UNREACHABLE */;
13316 abort();
13317 }
13318 s_n_llhttp__internal__n_error: {
13319 state->error = 0x10;
13320 state->reason = "`on_message_begin` callback error";
13321 state->error_pos = (const char*) p;
13322 state->_current = (void*) (intptr_t) s_error;
13323 return s_error;
13324 /* UNREACHABLE */;
13325 abort();
13326 }
13327 s_n_llhttp__internal__n_invoke_llhttp__on_message_begin: {
13328 switch (llhttp__on_message_begin(state, p, endp)) {
13329 case 0:
13330 goto s_n_llhttp__internal__n_invoke_load_type;
13331 case 21:
13332 goto s_n_llhttp__internal__n_pause_8;
13333 default:
13334 goto s_n_llhttp__internal__n_error;
13335 }
13336 /* UNREACHABLE */;
13337 abort();
13338 }
13339 s_n_llhttp__internal__n_invoke_update_finish: {
13340 switch (llhttp__internal__c_update_finish(state, p, endp)) {
13341 default:
13342 goto s_n_llhttp__internal__n_invoke_llhttp__on_message_begin;
13343 }
13344 /* UNREACHABLE */;
13345 abort();
13346 }
13347 }
13348
llhttp__internal_execute(llhttp__internal_t * state,const char * p,const char * endp)13349 int llhttp__internal_execute(llhttp__internal_t* state, const char* p, const char* endp) {
13350 llparse_state_t next;
13351
13352 /* check lingering errors */
13353 if (state->error != 0) {
13354 return state->error;
13355 }
13356
13357 /* restart spans */
13358 if (state->_span_pos0 != NULL) {
13359 state->_span_pos0 = (void*) p;
13360 }
13361
13362 next = llhttp__internal__run(state, (const unsigned char*) p, (const unsigned char*) endp);
13363 if (next == s_error) {
13364 return state->error;
13365 }
13366 state->_current = (void*) (intptr_t) next;
13367
13368 /* execute spans */
13369 if (state->_span_pos0 != NULL) {
13370 int error;
13371
13372 error = ((llhttp__internal__span_cb) state->_span_cb0)(state, state->_span_pos0, (const char*) endp);
13373 if (error != 0) {
13374 state->error = error;
13375 state->error_pos = endp;
13376 return error;
13377 }
13378 }
13379
13380 return 0;
13381 }
13382
13383 #endif /* LLHTTP_STRICT_MODE */
13384