From b54bed506105bef2af9c1bb03cb0f709d0acdb3d Mon Sep 17 00:00:00 2001 From: Aleksey Veresov Date: Tue, 17 Mar 2020 23:57:32 +0300 Subject: [magi] Cookies parse rewritten. --- src/urlencoded.c | 30 +++++++++++------------------- 1 file changed, 11 insertions(+), 19 deletions(-) (limited to 'src/urlencoded.c') diff --git a/src/urlencoded.c b/src/urlencoded.c index b0891dc..755b059 100644 --- a/src/urlencoded.c +++ b/src/urlencoded.c @@ -79,17 +79,11 @@ static void state_parse_name(automata *a, char c) { if (c == '&' || c == ';') { a->s = 0; - return; - } - if (c == '=') { - if (!deurl(&a->name)) { - a->s = 0; - return; - } - a->s = state_parse_data; - return; + } else if (c == '=') { + a->s = deurl(&a->name) ? state_parse_data : 0; + } else { + magi_str_add(&a->name, &a->nlen, &a->nsize, c); } - magi_str_add(&a->name, &a->nlen, &a->nsize, c); } static void add_to_list(automata *a) @@ -106,18 +100,16 @@ static void state_parse_data(automata *a, char c) { if (c == '=') { a->s = 0; - return; - } - if (c == '&' || c == ';') { - if (!deurl(&a->data)) { + } else if (c == '&' || c == ';') { + if (deurl(&a->data)) { + a->s = state_parse_name; + add_to_list(a); + } else { a->s = 0; - return; } - add_to_list(a); - a->s = state_parse_name; - return; + } else { + magi_str_add(&a->data, &a->dlen, &a->dsize, c); } - magi_str_add(&a->data, &a->dlen, &a->dsize, c); } magi_error magi_parse_urlencoded(magi_params **list, const char *encoded) -- cgit v1.2.3