MCPcopy Create free account
hub / github.com/apache/cloudberry / http_parser_parse_url

Function http_parser_parse_url

gpcontrib/gpcloud/lib/http_parser.cpp:2368–2470  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2366}
2367
2368int
2369http_parser_parse_url(const char *buf, size_t buflen, int is_connect,
2370 struct http_parser_url *u)
2371{
2372 enum state s;
2373 const char *p;
2374 enum http_parser_url_fields uf, old_uf;
2375 int found_at = 0;
2376
2377 u->port = u->field_set = 0;
2378 s = is_connect ? s_req_server_start : s_req_spaces_before_url;
2379 old_uf = UF_MAX;
2380
2381 for (p = buf; p < buf + buflen; p++) {
2382 s = parse_url_char(s, *p);
2383
2384 /* Figure out the next field that we're operating on */
2385 switch (s) {
2386 case s_dead:
2387 return 1;
2388
2389 /* Skip delimeters */
2390 case s_req_schema_slash:
2391 case s_req_schema_slash_slash:
2392 case s_req_server_start:
2393 case s_req_query_string_start:
2394 case s_req_fragment_start:
2395 continue;
2396
2397 case s_req_schema:
2398 uf = UF_SCHEMA;
2399 break;
2400
2401 case s_req_server_with_at:
2402 found_at = 1;
2403
2404 /* fallthrough */
2405 case s_req_server:
2406 uf = UF_HOST;
2407 break;
2408
2409 case s_req_path:
2410 uf = UF_PATH;
2411 break;
2412
2413 case s_req_query_string:
2414 uf = UF_QUERY;
2415 break;
2416
2417 case s_req_fragment:
2418 uf = UF_FRAGMENT;
2419 break;
2420
2421 default:
2422 assert(!"Unexpected state");
2423 return 1;
2424 }
2425

Callers 1

S3UrlMethod · 0.85

Calls 2

parse_url_charFunction · 0.85
http_parse_hostFunction · 0.85

Tested by

no test coverage detected