+ let body = request.body();
+ // Valid votes look like "0 foo" or "1 bar"
+ if body.len() < 3
+ || (body[0] != b'0' && body[0] != b'1')
+ || body[1] != b' '
+ || body.contains(&b'\n')
+ {
+ return Err(cgi::text_response(415, "Invalid vote"));
+ }
+ write_vote(dir, &get_voter(&request)?, body)
+ .map_err(|_| cgi::text_response(503, "Couldn't record vote"))?;
+ Ok(cgi::text_response(200, "Vote recorded"))
+}
+
+fn strip_body(mut response: cgi::Response) -> cgi::Response {
+ response.body_mut().clear();
+ response