| #ifndef _NGX_HTTP_H_INCLUDED_ |
| #define _NGX_HTTP_H_INCLUDED_ |
| |
| |
| #include <ngx_config.h> |
| |
| #include <ngx_types.h> |
| #include <ngx_string.h> |
| #include <ngx_table.h> |
| #include <ngx_hunk.h> |
| #include <ngx_files.h> |
| #include <ngx_connection.h> |
| #include <ngx_conf_file.h> |
| |
| /* STUB */ |
| #include <ngx_event_timer.h> |
| |
| #define NGX_HTTP_VERSION_9 9 |
| #define NGX_HTTP_VERSION_10 1000 |
| #define NGX_HTTP_VERSION_11 1001 |
| |
| #define NGX_HTTP_GET 1 |
| #define NGX_HTTP_HEAD 2 |
| #define NGX_HTTP_POST 3 |
| |
| #define NGX_HTTP_CONN_CLOSE 0 |
| #define NGX_HTTP_CONN_KEEP_ALIVE 1 |
| |
| |
| #define NGX_HTTP_PARSE_HEADER_DONE 1 |
| #define NGX_HTTP_PARSE_INVALID_METHOD 10 |
| #define NGX_HTTP_PARSE_INVALID_REQUEST 11 |
| #define NGX_HTTP_PARSE_TOO_LONG_URI 12 |
| #define NGX_HTTP_PARSE_INVALID_HEAD 13 |
| #define NGX_HTTP_PARSE_INVALID_HEADER 14 |
| #define NGX_HTTP_PARSE_TOO_LONG_HEADER 15 |
| #define NGX_HTTP_PARSE_NO_HOST_HEADER 16 |
| |
| |
| #define NGX_HTTP_OK 200 |
| #define NGX_HTTP_SPECIAL_RESPONSE 300 |
| #define NGX_HTTP_MOVED_PERMANENTLY 301 |
| #define NGX_HTTP_MOVED_TEMPORARILY 302 |
| #define NGX_HTTP_NOT_MODIFIED 304 |
| #define NGX_HTTP_BAD_REQUEST 400 |
| #define NGX_HTTP_FORBIDDEN 403 |
| #define NGX_HTTP_NOT_FOUND 404 |
| #define NGX_HTTP_REQUEST_URI_TOO_LARGE 414 |
| #define NGX_HTTP_INTERNAL_SERVER_ERROR 500 |
| |
| |
| #define NGX_HTTP_STATIC_HANDLER 0 |
| #define NGX_HTTP_DIRECTORY_HANDLER 1 |
| |
| |
| |
| typedef struct { |
| char *doc_root; |
| size_t doc_root_len; |
| |
| size_t connection_pool_size; |
| size_t request_pool_size; |
| |
| size_t header_buffer_size; |
| size_t discarded_buffer_size; |
| |
| ngx_msec_t header_timeout; |
| ngx_msec_t lingering_timeout; |
| time_t lingering_time; |
| } ngx_http_server_t; |
| |
| |
| typedef struct { |
| size_t len; |
| char *data; |
| int offset; |
| } ngx_http_header_t; |
| |
| |
| typedef struct { |
| size_t host_name_len; |
| |
| ngx_table_elt_t *host; |
| ngx_table_elt_t *connection; |
| ngx_table_elt_t *if_modified_since; |
| ngx_table_elt_t *user_agent; |
| ngx_table_elt_t *accept_encoding; |
| |
| ngx_table_t *headers; |
| } ngx_http_headers_in_t; |
| |
| |
| typedef struct { |
| int status; |
| ngx_str_t status_line; |
| |
| ngx_table_elt_t *server; |
| ngx_table_elt_t *date; |
| ngx_table_elt_t *content_type; |
| ngx_table_elt_t *location; |
| ngx_table_elt_t *last_modified; |
| |
| ngx_table_t *headers; |
| |
| off_t content_length; |
| char *charset; |
| char *etag; |
| time_t date_time; |
| time_t last_modified_time; |
| } ngx_http_headers_out_t; |
| |
| |
| typedef struct ngx_http_request_s ngx_http_request_t; |
| |
| struct ngx_http_request_s { |
| ngx_file_t file; |
| |
| void **ctx; |
| void **srv_conf; |
| void **loc_conf; |
| |
| ngx_pool_t *pool; |
| ngx_hunk_t *header_in; |
| |
| ngx_http_headers_in_t headers_in; |
| ngx_http_headers_out_t headers_out; |
| |
| int (*handler)(ngx_http_request_t *r); |
| |
| int method; |
| |
| time_t lingering_time; |
| |
| int http_version; |
| int http_major; |
| int http_minor; |
| |
| ngx_str_t request_line; |
| ngx_str_t uri; |
| ngx_str_t exten; |
| ngx_http_request_t *main; |
| |
| ngx_connection_t *connection; |
| |
| u_int in_addr; |
| |
| int port; |
| ngx_str_t port_name; |
| |
| int filter; |
| |
| ssize_t client_content_length; |
| char *discarded_buffer; |
| |
| ngx_str_t path; |
| int path_err; |
| |
| unsigned keepalive:1; |
| unsigned lingering_close:1; |
| |
| unsigned header_read:1; |
| unsigned header_timeout_set:1; |
| |
| unsigned logging:1; |
| |
| unsigned header_only:1; |
| unsigned unusual_uri:1; /* URI is not started with '/' - "GET http://" */ |
| unsigned complex_uri:1; /* URI with "/." or with "//" (WIN32) */ |
| unsigned path_not_found:1; |
| #ifdef NGX_EVENT |
| unsigned write_level_event:1; |
| #endif |
| |
| int state; |
| char *uri_start; |
| char *uri_end; |
| char *uri_ext; |
| char *args_start; |
| char *request_end; |
| char *header_name_start; |
| char *header_name_end; |
| char *header_start; |
| char *header_end; |
| #ifdef NGX_EVENT |
| int (*state_handler)(ngx_http_request_t *r); |
| #endif |
| }; |
| |
| |
| typedef struct { |
| char *action; |
| char *client; |
| char *url; |
| } ngx_http_log_ctx_t; |
| |
| |
| typedef int (*ngx_http_handler_pt)(ngx_http_request_t *r); |
| |
| typedef int (*ngx_http_output_header_filter_p)(ngx_http_request_t *r); |
| |
| typedef int (*ngx_http_output_body_filter_p) |
| (ngx_http_request_t *r, ngx_chain_t *chain); |
| |
| |
| |
| typedef struct { |
| int index; |
| |
| void *(*create_srv_conf)(ngx_pool_t *p); |
| char *(*init_srv_conf)(ngx_pool_t *p, void *conf); |
| void *(*create_loc_conf)(ngx_pool_t *p); |
| char *(*merge_loc_conf)(ngx_pool_t *p, void *prev, void *conf); |
| |
| int (*translate_handler)(ngx_http_request_t *r); |
| |
| int (*output_header_filter) (ngx_http_request_t *r); |
| int (*next_output_header_filter) (ngx_http_request_t *r); |
| |
| int (*output_body_filter) (ngx_http_request_t *r, ngx_chain_t *ch); |
| int (*next_output_body_filter) (ngx_http_request_t *r, ngx_chain_t *ch); |
| } ngx_http_module_t; |
| |
| |
| #define NGX_HTTP_MODULE 0x80000000 |
| |
| #define NGX_HTTP_MODULE_TYPE 0x50545448 /* "HTTP" */ |
| |
| |
| #define ngx_http_get_module_srv_conf(r, module) r->srv_conf[module.index] |
| #define ngx_http_get_module_loc_conf(r, module) r->loc_conf[module.index] |
| #define ngx_http_get_module_ctx(r, module) r->ctx[module.index] |
| |
| #define ngx_http_create_ctx(r, cx, module, size) \ |
| do { \ |
| ngx_test_null(cx, ngx_pcalloc(r->pool, size), NGX_ERROR); \ |
| r->ctx[module.index] = cx; \ |
| } while (0) |
| |
| |
| |
| /* STUB */ |
| #define NGX_INDEX "index.html" |
| |
| |
| /* STUB */ |
| int ngx_http_init(ngx_pool_t *pool, ngx_log_t *log); |
| /**/ |
| |
| int ngx_http_init_connection(ngx_connection_t *c); |
| int ngx_read_http_request_line(ngx_http_request_t *r); |
| int ngx_read_http_header_line(ngx_http_request_t *r, ngx_hunk_t *h); |
| int ngx_http_handler(ngx_http_request_t *r); |
| |
| |
| int ngx_http_send_header(ngx_http_request_t *r); |
| int ngx_http_special_response(ngx_http_request_t *r, int error); |
| |
| |
| time_t ngx_http_parse_time(char *value, size_t len); |
| size_t ngx_http_get_time(char *buf, time_t t); |
| |
| |
| int ngx_http_discard_body(ngx_http_request_t *r); |
| |
| |
| |
| |
| extern int ngx_max_module; |
| extern ngx_array_t ngx_http_servers; |
| |
| |
| extern int ngx_http_post_accept_timeout; |
| extern int ngx_http_connection_pool_size; |
| extern int ngx_http_request_pool_size; |
| extern int ngx_http_client_header_timeout; |
| extern int ngx_http_client_header_buffer_size; |
| extern int ngx_http_large_client_header; |
| extern int ngx_http_discarded_buffer_size; |
| |
| extern int ngx_http_lingering_timeout; |
| extern int ngx_http_lingering_time; |
| |
| extern int ngx_http_url_in_error_log; |
| |
| extern ngx_array_t ngx_http_index_handlers; |
| |
| |
| extern ngx_http_module_t *ngx_http_modules[]; |
| |
| |
| /* STUB */ |
| int ngx_http_log_handler(ngx_http_request_t *r); |
| /**/ |
| |
| |
| #endif /* _NGX_HTTP_H_INCLUDED_ */ |