aboutsummaryrefslogtreecommitdiff
path: root/src/urlencoded.c
diff options
context:
space:
mode:
authorAleksey Veresov <aleksey@veresov.pro>2020-03-17 23:57:32 +0300
committerAleksey Veresov <aleksey@veresov.pro>2020-03-17 23:57:32 +0300
commitb54bed506105bef2af9c1bb03cb0f709d0acdb3d (patch)
tree23d0f3ca371b1f9472affab6b20a996558778b92 /src/urlencoded.c
parent1d8e7d8ef36de7bae2c62f63bec0e9914f18e77d (diff)
downloadmagi-b54bed506105bef2af9c1bb03cb0f709d0acdb3d.tar
magi-b54bed506105bef2af9c1bb03cb0f709d0acdb3d.tar.xz
magi-b54bed506105bef2af9c1bb03cb0f709d0acdb3d.zip
[magi] Cookies parse rewritten.
Diffstat (limited to 'src/urlencoded.c')
-rw-r--r--src/urlencoded.c30
1 files changed, 11 insertions, 19 deletions
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)