MCPcopy Create free account
hub / github.com/NatronGitHub/Natron / http_parser_parse_url

Function http_parser_parse_url

libs/qhttpserver/http-parser/http_parser.c:2306–2403  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2304}
2305
2306int
2307http_parser_parse_url(const char *buf, size_t buflen, int is_connect,
2308 struct http_parser_url *u)
2309{
2310 enum state s;
2311 const char *p;
2312 enum http_parser_url_fields uf, old_uf;
2313 int found_at = 0;
2314
2315 u->port = u->field_set = 0;
2316 s = is_connect ? s_req_server_start : s_req_spaces_before_url;
2317 old_uf = UF_MAX;
2318
2319 for (p = buf; p < buf + buflen; p++) {
2320 s = parse_url_char(s, *p);
2321
2322 /* Figure out the next field that we're operating on */
2323 switch (s) {
2324 case s_dead:
2325 return 1;
2326
2327 /* Skip delimeters */
2328 case s_req_schema_slash:
2329 case s_req_schema_slash_slash:
2330 case s_req_server_start:
2331 case s_req_query_string_start:
2332 case s_req_fragment_start:
2333 continue;
2334
2335 case s_req_schema:
2336 uf = UF_SCHEMA;
2337 break;
2338
2339 case s_req_server_with_at:
2340 found_at = 1;
2341
2342 /* FALLTHROUGH */
2343 case s_req_server:
2344 uf = UF_HOST;
2345 break;
2346
2347 case s_req_path:
2348 uf = UF_PATH;
2349 break;
2350
2351 case s_req_query_string:
2352 uf = UF_QUERY;
2353 break;
2354
2355 case s_req_fragment:
2356 uf = UF_FRAGMENT;
2357 break;
2358
2359 default:
2360 assert(!"Unexpected state");
2361 return 1;
2362 }
2363

Callers 4

HeadersCompleteMethod · 0.85
message_eqFunction · 0.85
test_parse_urlFunction · 0.85
mainFunction · 0.85

Calls 2

parse_url_charFunction · 0.85
http_parse_hostFunction · 0.85

Tested by 2

message_eqFunction · 0.68
test_parse_urlFunction · 0.68