tvote.c: use 307 redirect to avoid additional voting through refresh - vote - s… | |
git clone git://src.adamsgaard.dk/vote | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 6cf52771bc127fbf083ca9badeeac6dba89d65fb | |
parent 0b3501599120c01cca8c2e8532fcd31e781f48ec | |
Author: Anders Damsgaard <[email protected]> | |
Date: Mon, 28 Sep 2020 14:47:37 +0200 | |
vote.c: use 307 redirect to avoid additional voting through refresh | |
Diffstat: | |
M vote.c | 32 ++++++++++++++++++++++-------… | |
1 file changed, 23 insertions(+), 9 deletions(-) | |
--- | |
diff --git a/vote.c b/vote.c | |
t@@ -25,6 +25,10 @@ void | |
http_status(int statuscode) | |
{ | |
switch(statuscode) { | |
+ case 307: | |
+ printf("Status: 307 Temporary Redirect\r\n"); | |
+ printf("Location: /vote?poll=%s&choice=0\r\n\r\n", poll); | |
+ break; | |
case 401: | |
printf("Status: 401 Bad Request\r\n\r\n"); | |
break; | |
t@@ -402,28 +406,38 @@ main() | |
} | |
} | |
- print_html_head(); | |
- | |
parse_query(); | |
if (*create) { | |
- if (create_poll_file(poll, question, options) == 0) | |
+ if (create_poll_file(poll, question, options) == 0) { | |
+ print_html_head(); | |
show_poll(poll, 0); | |
+ print_html_foot(); | |
+ } | |
} else if (*poll) { | |
if (*choice) { | |
- c = strtonum(choice, 1, 256, &errstr); | |
+ c = strtonum(choice, 0, 256, &errstr); | |
if (errstr != NULL) | |
errx(1, "could not parse choice: %s, %s", errs… | |
- increment_option(poll, c); | |
- show_poll(poll, 0); | |
- } else | |
+ if (c > 0) { | |
+ increment_option(poll, c); | |
+ http_status(307); | |
+ } else { | |
+ print_html_head(); | |
+ show_poll(poll, 0); | |
+ print_html_foot(); | |
+ } | |
+ } else { | |
+ print_html_head(); | |
show_poll(poll, 1); | |
+ print_html_foot(); | |
+ } | |
} else { | |
+ print_html_head(); | |
list_polls(); | |
print_poll_create_form(); | |
+ print_html_foot(); | |
} | |
- print_html_foot(); | |
- | |
return 0; | |
} |