|
| #define | CROW_HTTP_PARSER_VERSION_MAJOR 2 |
| |
| #define | CROW_HTTP_PARSER_VERSION_MINOR 3 |
| |
| #define | CROW_HTTP_PARSER_VERSION_PATCH 0 |
| |
| #define | CROW_HTTP_PARSER_STRICT 1 |
| |
| #define | CROW_HTTP_MAX_HEADER_SIZE (80*1024) |
| |
| #define | CROW_HTTP_METHOD_MAP(CROW_XX) |
| |
| #define | CROW_XX(num, name, string) HTTP_##name = num, |
| |
| #define | CROW_HTTP_ERRNO_MAP(CROW_XX) |
| |
| #define | CROW_HTTP_ERRNO_GEN(n, s) HPE_##n, |
| |
| #define | CROW_HTTP_PARSER_ERRNO(p) ((enum http_errno) (p)->http_errno) |
| |
| #define | CROW_ULLONG_MAX ((uint64_t) -1) /* 2^64-1 */ |
| |
| #define | CROW_MIN(a, b) ((a) < (b) ? (a) : (b)) |
| |
| #define | CROW_ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) |
| |
| #define | CROW_BIT_AT(a, i) |
| |
| #define | CROW_ELEM_AT(a, i, v) ((unsigned int) (i) < CROW_ARRAY_SIZE(a) ? (a)[(i)] : (v)) |
| |
| #define | CROW_SET_ERRNO(e) |
| |
| #define | CROW_CALLBACK_NOTIFY_(FOR, ER) |
| |
| #define | CROW_CALLBACK_NOTIFY(FOR) CROW_CALLBACK_NOTIFY_(FOR, p - data + 1) |
| |
| #define | CROW_CALLBACK_NOTIFY_NOADVANCE(FOR) CROW_CALLBACK_NOTIFY_(FOR, p - data) |
| |
| #define | CROW_CALLBACK_DATA_(FOR, LEN, ER) |
| |
| #define | CROW_CALLBACK_DATA(FOR) CROW_CALLBACK_DATA_(FOR, p - FOR##_mark, p - data + 1) |
| |
| #define | CROW_CALLBACK_DATA_NOADVANCE(FOR) CROW_CALLBACK_DATA_(FOR, p - FOR##_mark, p - data) |
| |
| #define | CROW_MARK(FOR) |
| |
| #define | CROW_PROXY_CONNECTION "proxy-connection" |
| |
| #define | CROW_CONNECTION "connection" |
| |
| #define | CROW_CONTENT_LENGTH "content-length" |
| |
| #define | CROW_TRANSFER_ENCODING "transfer-encoding" |
| |
| #define | CROW_UPGRADE "upgrade" |
| |
| #define | CROW_CHUNKED "chunked" |
| |
| #define | CROW_KEEP_ALIVE "keep-alive" |
| |
| #define | CROW_CLOSE "close" |
| |
| #define | CROW_PARSING_HEADER(state) (state <= s_headers_done) |
| |
| #define | CROW_CR '\r' |
| |
| #define | CROW_LF '\n' |
| |
| #define | CROW_LOWER(c) (unsigned char)(c | 0x20) |
| |
| #define | CROW_IS_ALPHA(c) (CROW_LOWER(c) >= 'a' && CROW_LOWER(c) <= 'z') |
| |
| #define | CROW_IS_NUM(c) ((c) >= '0' && (c) <= '9') |
| |
| #define | CROW_IS_ALPHANUM(c) (CROW_IS_ALPHA(c) || CROW_IS_NUM(c)) |
| |
| #define | CROW_IS_HEX(c) (CROW_IS_NUM(c) || (CROW_LOWER(c) >= 'a' && CROW_LOWER(c) <= 'f')) |
| |
| #define | CROW_IS_MARK(c) |
| |
| #define | CROW_IS_USERINFO_CHAR(c) |
| |
| #define | CROW_TOKEN(c) (tokens[(unsigned char)c]) |
| |
| #define | CROW_IS_URL_CHAR(c) (CROW_BIT_AT(normal_url_char, (unsigned char)c)) |
| |
| #define | CROW_IS_HOST_CHAR(c) (CROW_IS_ALPHANUM(c) || (c) == '.' || (c) == '-') |
| |
| #define | CROW_start_state (parser->type == HTTP_REQUEST ? s_start_req : s_start_res) |
| |
| #define | CROW_STRICT_CHECK(cond) |
| |
| #define | CROW_NEW_MESSAGE() (http_should_keep_alive(parser) ? CROW_start_state : s_dead) |
| |
| #define | CROW_T(v) 0 |
| |
| #define | CROW_XX(num, name, string) #string, |
| |
| #define | CROW_XX(num, name, string) #string, |
| |
| #define | CROW_HTTP_STRERROR_GEN(n, s) { "HPE_" #n, s }, |
| |
| #define | CROW_HTTP_STRERROR_GEN(n, s) { "HPE_" #n, s }, |
| |
|
| enum | http_method |
| |
| enum | http_parser_type { HTTP_REQUEST,
HTTP_RESPONSE,
HTTP_BOTH
} |
| |
| enum | flags {
F_CHUNKED = 1 << 0,
F_CONNECTION_KEEP_ALIVE = 1 << 1,
F_CONNECTION_CLOSE = 1 << 2,
F_TRAILING = 1 << 3,
F_UPGRADE = 1 << 4,
F_SKIPBODY = 1 << 5
} |
| |
| enum | http_errno |
| |
| enum | http_parser_url_fields {
UF_SCHEMA = 0,
UF_HOST = 1,
UF_PORT = 2,
UF_PATH = 3,
UF_QUERY = 4,
UF_FRAGMENT = 5,
UF_USERINFO = 6,
UF_MAX = 7
} |
| |
| enum | state {
s_dead = 1,
s_start_req_or_res,
s_res_or_resp_H,
s_start_res,
s_res_H,
s_res_HT,
s_res_HTT,
s_res_HTTP,
s_res_first_http_major,
s_res_http_major,
s_res_first_http_minor,
s_res_http_minor,
s_res_first_status_code,
s_res_status_code,
s_res_status_start,
s_res_status,
s_res_line_almost_done,
s_start_req,
s_req_method,
s_req_spaces_before_url,
s_req_schema,
s_req_schema_slash,
s_req_schema_slash_slash,
s_req_server_start,
s_req_server,
s_req_server_with_at,
s_req_path,
s_req_query_string_start,
s_req_query_string,
s_req_fragment_start,
s_req_fragment,
s_req_http_start,
s_req_http_H,
s_req_http_HT,
s_req_http_HTT,
s_req_http_HTTP,
s_req_first_http_major,
s_req_http_major,
s_req_first_http_minor,
s_req_http_minor,
s_req_line_almost_done,
s_header_field_start,
s_header_field,
s_header_value_discard_ws,
s_header_value_discard_ws_almost_done,
s_header_value_discard_lws,
s_header_value_start,
s_header_value,
s_header_value_lws,
s_header_almost_done,
s_chunk_size_start,
s_chunk_size,
s_chunk_parameters,
s_chunk_size_almost_done,
s_headers_almost_done,
s_headers_done,
s_chunk_data,
s_chunk_data_almost_done,
s_chunk_data_done,
s_body_identity,
s_body_identity_eof,
s_message_done
} |
| |
| enum | header_states {
h_general = 0,
h_C,
h_CO,
h_CON,
h_matching_connection,
h_matching_proxy_connection,
h_matching_content_length,
h_matching_transfer_encoding,
h_matching_upgrade,
h_connection,
h_content_length,
h_transfer_encoding,
h_upgrade,
h_matching_transfer_encoding_chunked,
h_matching_connection_keep_alive,
h_matching_connection_close,
h_transfer_encoding_chunked,
h_connection_keep_alive,
h_connection_close
} |
| |
| enum | http_host_state {
s_http_host_dead = 1,
s_http_userinfo_start,
s_http_userinfo,
s_http_host_start,
s_http_host_v6_start,
s_http_host,
s_http_host_v6,
s_http_host_v6_end,
s_http_host_port_start,
s_http_host_port
} |
| |
|
| unsigned long | http_parser_version (void) |
| |
| void | http_parser_init (http_parser *parser, enum http_parser_type type) |
| |
| size_t | http_parser_execute (http_parser *parser, const http_parser_settings *settings, const char *data, size_t len) |
| |
| int | http_should_keep_alive (const http_parser *parser) |
| |
| const char * | http_method_str (enum http_method m) |
| |
| const char * | http_errno_name (enum http_errno err) |
| |
| const char * | http_errno_description (enum http_errno err) |
| |
| int | http_parser_parse_url (const char *buf, size_t buflen, int is_connect, struct http_parser_url *u) |
| |
| void | http_parser_pause (http_parser *parser, int paused) |
| |
| int | http_body_is_final (const http_parser *parser) |
| |
| int | http_message_needs_eof (const http_parser *parser) |
| |
| enum state | parse_url_char (enum state s, const char ch) |
| |
| static enum http_host_state | http_parse_host_char (enum http_host_state s, const char ch) |
| |
| int | http_parse_host (const char *buf, struct http_parser_url *u, int found_at) |
| |
| int | http_body_is_final (const struct http_parser *parser) |
| |