diff options
author | Igor Sysoev <igor@sysoev.ru> | 2003-11-03 01:56:18 +0300 |
---|---|---|
committer | Igor Sysoev <igor@sysoev.ru> | 2003-11-03 01:56:18 +0300 |
commit | 659774979feb9741a441505e26774b35830fd4ca (patch) | |
tree | 596059bbe20959ad54cbfde8bcdf24cd7f9e9f83 /src/http/modules/proxy/ngx_http_proxy_handler.h | |
parent | fe0f5cc6e1e48412235ae91c2f71ec2ec9110a60 (diff) |
nginx-0.0.1-2003-11-03-01:56:18 import
Diffstat (limited to 'src/http/modules/proxy/ngx_http_proxy_handler.h')
-rw-r--r-- | src/http/modules/proxy/ngx_http_proxy_handler.h | 140 |
1 files changed, 89 insertions, 51 deletions
diff --git a/src/http/modules/proxy/ngx_http_proxy_handler.h b/src/http/modules/proxy/ngx_http_proxy_handler.h index c211afbba..ed515b84c 100644 --- a/src/http/modules/proxy/ngx_http_proxy_handler.h +++ b/src/http/modules/proxy/ngx_http_proxy_handler.h @@ -5,10 +5,13 @@ #include <ngx_config.h> #include <ngx_core.h> #include <ngx_event.h> +#include <ngx_event_connect.h> +#include <ngx_event_pipe.h> #include <ngx_http.h> typedef struct { + ngx_str_t url; ngx_str_t host; ngx_str_t uri; ngx_str_t host_header; @@ -19,51 +22,62 @@ typedef struct { typedef struct { - ssize_t request_buffer_size; - ngx_msec_t connect_timeout; - ngx_msec_t send_timeout; - ssize_t header_buffer_size; - ngx_msec_t read_timeout; + ssize_t request_buffer_size; + ngx_msec_t connect_timeout; + ngx_msec_t send_timeout; + ssize_t header_buffer_size; + ngx_msec_t read_timeout; - ngx_bufs_t bufs; - ssize_t busy_buffers_size; + ngx_bufs_t bufs; + ssize_t busy_buffers_size; - ssize_t max_temp_file_size; - ssize_t temp_file_write_size; - int cyclic_temp_file; + ssize_t max_temp_file_size; + ssize_t temp_file_write_size; + int cyclic_temp_file; - int pass_server; + int cache; + int pass_server; - int next_upstream; + int next_upstream; + int use_stale; - ngx_path_t *temp_path; + ngx_path_t *cache_path; + ngx_path_t *temp_path; - ngx_http_proxy_upstream_t *upstream; - ngx_peers_t *peers; + ngx_http_proxy_upstream_t *upstream; + ngx_peers_t *peers; } ngx_http_proxy_loc_conf_t; typedef struct { - int status; - ngx_str_t *peer; + int status; + ngx_str_t *peer; } ngx_http_proxy_state_t; typedef struct { - ngx_table_t *headers; /* it must be first field */ + ngx_table_t *headers; /* it must be first field */ - ngx_table_elt_t *date; - ngx_table_elt_t *server; - ngx_table_elt_t *connection; - ngx_table_elt_t *content_type; - ngx_table_elt_t *content_length; - ngx_table_elt_t *last_modified; - ngx_table_elt_t *accept_ranges; + ngx_table_elt_t *date; + ngx_table_elt_t *server; + ngx_table_elt_t *connection; + ngx_table_elt_t *content_type; + ngx_table_elt_t *content_length; + ngx_table_elt_t *last_modified; + ngx_table_elt_t *accept_ranges; - off_t content_length_n; + off_t content_length_n; } ngx_http_proxy_headers_in_t; +typedef struct { + ngx_http_cache_ctx_t ctx; + int status; + ngx_str_t status_line; + ngx_http_proxy_headers_in_t headers_in; +} ngx_http_proxy_cache_t; + + typedef struct ngx_http_proxy_ctx_s ngx_http_proxy_ctx_t; struct ngx_http_proxy_ctx_s { @@ -72,45 +86,69 @@ struct ngx_http_proxy_ctx_s { ngx_http_request_t *request; ngx_http_proxy_loc_conf_t *lcf; + ngx_http_proxy_cache_t *cache; ngx_http_proxy_headers_in_t headers_in; - ngx_hunk_t *header_in; - int status; - ngx_str_t status_line; + ngx_hunk_t *header_in; + int status; + ngx_str_t status_line; - ngx_output_chain_ctx_t *output_chain_ctx; + ngx_output_chain_ctx_t *output_chain_ctx; - int method; + int method; - ngx_event_pipe_t *event_pipe; + ngx_event_pipe_t *event_pipe; - unsigned accel:1; - unsigned cachable:1; - unsigned fatal_error:1; - unsigned request_sent:1; - unsigned timedout:1; - unsigned header_sent:1; + unsigned accel:1; + + unsigned cachable:1; + unsigned stale:1; + + unsigned request_sent:1; + unsigned header_sent:1; /* used to parse an upstream HTTP header */ - char *status_start; - char *status_end; - int status_count; - int state; + char *status_start; + char *status_end; + int status_count; + int state; - ngx_array_t states; /* of ngx_http_proxy_state_t */ + ngx_array_t states; /* of ngx_http_proxy_state_t */ - char *action; - ngx_http_log_ctx_t *saved_ctx; - ngx_log_handler_pt saved_handler; + char *action; + ngx_http_log_ctx_t *saved_ctx; + ngx_log_handler_pt saved_handler; }; -#define NGX_HTTP_PROXY_PARSE_NO_HEADER 20 +#define NGX_STALE 1 + +#define NGX_HTTP_PROXY_PARSE_NO_HEADER 20 + +#define NGX_HTTP_PROXY_FT_ERROR 2 +#define NGX_HTTP_PROXY_FT_TIMEOUT 4 +#define NGX_HTTP_PROXY_FT_INVALID_HEADER 8 +#define NGX_HTTP_PROXY_FT_HTTP_500 16 +#define NGX_HTTP_PROXY_FT_HTTP_404 32 +#define NGX_HTTP_PROXY_FT_BUSY_LOCK 64 +#define NGX_HTTP_PROXY_FT_MAX_WAITING 128 + + +void ngx_http_proxy_reinit_upstream(ngx_http_proxy_ctx_t *p); + +int ngx_http_proxy_get_cached_response(ngx_http_proxy_ctx_t *p); +int ngx_http_proxy_process_cached_response(ngx_http_proxy_ctx_t *p); +int ngx_http_proxy_send_cached_response(ngx_http_proxy_ctx_t *p); + +int ngx_http_proxy_parse_status_line(ngx_http_proxy_ctx_t *p); +int ngx_http_proxy_copy_header(ngx_http_proxy_ctx_t *p, + ngx_http_proxy_headers_in_t *headers_in); + + + +extern ngx_module_t ngx_http_proxy_module; +extern ngx_http_header_t ngx_http_proxy_headers_in[]; -#define NGX_HTTP_PROXY_FT_ERROR 1 -#define NGX_HTTP_PROXY_FT_TIMEOUT 2 -#define NGX_HTTP_PROXY_FT_HTTP_HEADER 4 -#define NGX_HTTP_PROXY_FT_HTTP_500 8 #endif /* _NGX_HTTP_PROXY_HANDLER_H_INCLUDED_ */ |