HTTPD_ERR_RET(req, 400, FALSE);
HTTPD_ERR_MSG_RET(req, 400, "<PROTO>/Version", FALSE);
static int http_req_parse_version(struct Con *con, struct Httpd_req_data *req){  Vstr_base *data = con->evnt->io_r;  size_t op_pos = VSTR_SECTS_NUM(req->sects, 3)->pos;  size_t op_len = VSTR_SECTS_NUM(req->sects, 3)->len;  unsigned int major = 0;  unsigned int minor = 0;  size_t num_len = 0;  unsigned int num_flags = 10 | (VSTR_FLAG_PARSE_NUM_NO_BEG_PM |                                 VSTR_FLAG_PARSE_NUM_OVERFLOW);    if (!VPREFIX(data, op_pos, op_len, "HTTP"))    HTTPD_ERR_RET(req, 400, FALSE);  op_len -= CLEN("HTTP"); op_pos += CLEN("HTTP");  HTTP_SKIP_LWS(data, op_pos, op_len);    if (!VPREFIX(data, op_pos, op_len, "/"))    HTTPD_ERR_RET(req, 400, FALSE);  op_len -= CLEN("/"); op_pos += CLEN("/");  HTTP_SKIP_LWS(data, op_pos, op_len);    major = vstr_parse_uint(data, op_pos, op_len, num_flags, &num_len, NULL);  op_len -= num_len; op_pos += num_len;  HTTP_SKIP_LWS(data, op_pos, op_len);    if (!num_len || !VPREFIX(data, op_pos, op_len, "."))    HTTPD_ERR_RET(req, 400, FALSE);  op_len -= CLEN("."); op_pos += CLEN(".");  HTTP_SKIP_LWS(data, op_pos, op_len);    minor = vstr_parse_uint(data, op_pos, op_len, num_flags, &num_len, NULL);  op_len -= num_len; op_pos += num_len;  HTTP_SKIP_LWS(data, op_pos, op_len);    if (!num_len || op_len)    HTTPD_ERR_RET(req, 400, FALSE);    if (0) { } /* not allowing HTTP/0.9 here */  else if ((major == 1) && (minor >= 1))    req->ver_1_1 = TRUE;  else if ((major == 1) && (minor == 0))  { /* do nothing */ }  else    HTTPD_ERR_RET(req, 505, FALSE);          return (TRUE);}