MCPcopy Create free account
hub / github.com/boostorg/beast / http_parser_parse_url

Function http_parser_parse_url

test/bench/parser/nodejs-parser/http_parser.c:2340–2442  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2338}
2339
2340int
2341http_parser_parse_url(const char *buf, size_t buflen, int is_connect,
2342 struct http_parser_url *u)
2343{
2344 enum state s;
2345 const char *p;
2346 enum http_parser_url_fields uf, old_uf;
2347 int found_at = 0;
2348
2349 u->port = u->field_set = 0;
2350 s = is_connect ? s_req_server_start : s_req_spaces_before_url;
2351 old_uf = UF_MAX;
2352
2353 for (p = buf; p < buf + buflen; p++) {
2354 s = parse_url_char(s, *p);
2355
2356 /* Figure out the next field that we're operating on */
2357 switch (s) {
2358 case s_dead:
2359 return 1;
2360
2361 /* Skip delimeters */
2362 case s_req_schema_slash:
2363 case s_req_schema_slash_slash:
2364 case s_req_server_start:
2365 case s_req_query_string_start:
2366 case s_req_fragment_start:
2367 continue;
2368
2369 case s_req_schema:
2370 uf = UF_SCHEMA;
2371 break;
2372
2373 case s_req_server_with_at:
2374 found_at = 1;
2375
2376 /* FALLTROUGH */
2377 case s_req_server:
2378 uf = UF_HOST;
2379 break;
2380
2381 case s_req_path:
2382 uf = UF_PATH;
2383 break;
2384
2385 case s_req_query_string:
2386 uf = UF_QUERY;
2387 break;
2388
2389 case s_req_fragment:
2390 uf = UF_FRAGMENT;
2391 break;
2392
2393 default:
2394 assert(!"Unexpected state");
2395 return 1;
2396 }
2397

Callers

nothing calls this directly

Calls 2

parse_url_charFunction · 0.85
http_parse_hostFunction · 0.85

Tested by

no test coverage detected