#include <ngx_config.h>
#include <ngx_core.h>
#include <ngx_http.h>
ngx_http_fastcgi_main_conf_t;
ngx_http_fastcgi_params_t;
ngx_http_fastcgi_loc_conf_t;
ngx_http_fastcgi_state_e;
ngx_http_fastcgi_split_part_t;
ngx_http_fastcgi_ctx_t;
#define NGX_HTTP_FASTCGI_RESPONDER …
#define NGX_HTTP_FASTCGI_KEEP_CONN …
#define NGX_HTTP_FASTCGI_BEGIN_REQUEST …
#define NGX_HTTP_FASTCGI_ABORT_REQUEST …
#define NGX_HTTP_FASTCGI_END_REQUEST …
#define NGX_HTTP_FASTCGI_PARAMS …
#define NGX_HTTP_FASTCGI_STDIN …
#define NGX_HTTP_FASTCGI_STDOUT …
#define NGX_HTTP_FASTCGI_STDERR …
#define NGX_HTTP_FASTCGI_DATA …
ngx_http_fastcgi_header_t;
ngx_http_fastcgi_begin_request_t;
ngx_http_fastcgi_header_small_t;
ngx_http_fastcgi_request_start_t;
static ngx_int_t ngx_http_fastcgi_eval(ngx_http_request_t *r,
ngx_http_fastcgi_loc_conf_t *flcf);
#if (NGX_HTTP_CACHE)
static ngx_int_t ngx_http_fastcgi_create_key(ngx_http_request_t *r);
#endif
static ngx_int_t ngx_http_fastcgi_create_request(ngx_http_request_t *r);
static ngx_int_t ngx_http_fastcgi_reinit_request(ngx_http_request_t *r);
static ngx_int_t ngx_http_fastcgi_body_output_filter(void *data,
ngx_chain_t *in);
static ngx_int_t ngx_http_fastcgi_process_header(ngx_http_request_t *r);
static ngx_int_t ngx_http_fastcgi_input_filter_init(void *data);
static ngx_int_t ngx_http_fastcgi_input_filter(ngx_event_pipe_t *p,
ngx_buf_t *buf);
static ngx_int_t ngx_http_fastcgi_non_buffered_filter(void *data,
ssize_t bytes);
static ngx_int_t ngx_http_fastcgi_process_record(ngx_http_request_t *r,
ngx_http_fastcgi_ctx_t *f);
static void ngx_http_fastcgi_abort_request(ngx_http_request_t *r);
static void ngx_http_fastcgi_finalize_request(ngx_http_request_t *r,
ngx_int_t rc);
static ngx_int_t ngx_http_fastcgi_add_variables(ngx_conf_t *cf);
static void *ngx_http_fastcgi_create_main_conf(ngx_conf_t *cf);
static void *ngx_http_fastcgi_create_loc_conf(ngx_conf_t *cf);
static char *ngx_http_fastcgi_merge_loc_conf(ngx_conf_t *cf,
void *parent, void *child);
static ngx_int_t ngx_http_fastcgi_init_params(ngx_conf_t *cf,
ngx_http_fastcgi_loc_conf_t *conf, ngx_http_fastcgi_params_t *params,
ngx_keyval_t *default_params);
static ngx_int_t ngx_http_fastcgi_script_name_variable(ngx_http_request_t *r,
ngx_http_variable_value_t *v, uintptr_t data);
static ngx_int_t ngx_http_fastcgi_path_info_variable(ngx_http_request_t *r,
ngx_http_variable_value_t *v, uintptr_t data);
static ngx_http_fastcgi_ctx_t *ngx_http_fastcgi_split(ngx_http_request_t *r,
ngx_http_fastcgi_loc_conf_t *flcf);
static char *ngx_http_fastcgi_pass(ngx_conf_t *cf, ngx_command_t *cmd,
void *conf);
static char *ngx_http_fastcgi_split_path_info(ngx_conf_t *cf,
ngx_command_t *cmd, void *conf);
static char *ngx_http_fastcgi_store(ngx_conf_t *cf, ngx_command_t *cmd,
void *conf);
#if (NGX_HTTP_CACHE)
static char *ngx_http_fastcgi_cache(ngx_conf_t *cf, ngx_command_t *cmd,
void *conf);
static char *ngx_http_fastcgi_cache_key(ngx_conf_t *cf, ngx_command_t *cmd,
void *conf);
#endif
static char *ngx_http_fastcgi_lowat_check(ngx_conf_t *cf, void *post,
void *data);
static ngx_conf_post_t ngx_http_fastcgi_lowat_post = …;
static ngx_conf_bitmask_t ngx_http_fastcgi_next_upstream_masks[] = …;
ngx_module_t ngx_http_fastcgi_module;
static ngx_command_t ngx_http_fastcgi_commands[] = …;
static ngx_http_module_t ngx_http_fastcgi_module_ctx = …;
ngx_module_t ngx_http_fastcgi_module = …;
static ngx_http_fastcgi_request_start_t ngx_http_fastcgi_request_start = …;
static ngx_http_variable_t ngx_http_fastcgi_vars[] = …;
static ngx_str_t ngx_http_fastcgi_hide_headers[] = …;
#if (NGX_HTTP_CACHE)
static ngx_keyval_t ngx_http_fastcgi_cache_headers[] = …;
#endif
static ngx_path_init_t ngx_http_fastcgi_temp_path = …;
static ngx_int_t
ngx_http_fastcgi_handler(ngx_http_request_t *r)
{ … }
static ngx_int_t
ngx_http_fastcgi_eval(ngx_http_request_t *r, ngx_http_fastcgi_loc_conf_t *flcf)
{ … }
#if (NGX_HTTP_CACHE)
static ngx_int_t
ngx_http_fastcgi_create_key(ngx_http_request_t *r)
{ … }
#endif
static ngx_int_t
ngx_http_fastcgi_create_request(ngx_http_request_t *r)
{ … }
static ngx_int_t
ngx_http_fastcgi_reinit_request(ngx_http_request_t *r)
{ … }
static ngx_int_t
ngx_http_fastcgi_body_output_filter(void *data, ngx_chain_t *in)
{ … }
static ngx_int_t
ngx_http_fastcgi_process_header(ngx_http_request_t *r)
{ … }
static ngx_int_t
ngx_http_fastcgi_input_filter_init(void *data)
{ … }
static ngx_int_t
ngx_http_fastcgi_input_filter(ngx_event_pipe_t *p, ngx_buf_t *buf)
{ … }
static ngx_int_t
ngx_http_fastcgi_non_buffered_filter(void *data, ssize_t bytes)
{ … }
static ngx_int_t
ngx_http_fastcgi_process_record(ngx_http_request_t *r,
ngx_http_fastcgi_ctx_t *f)
{ … }
static void
ngx_http_fastcgi_abort_request(ngx_http_request_t *r)
{ … }
static void
ngx_http_fastcgi_finalize_request(ngx_http_request_t *r, ngx_int_t rc)
{ … }
static ngx_int_t
ngx_http_fastcgi_add_variables(ngx_conf_t *cf)
{ … }
static void *
ngx_http_fastcgi_create_main_conf(ngx_conf_t *cf)
{ … }
static void *
ngx_http_fastcgi_create_loc_conf(ngx_conf_t *cf)
{ … }
static char *
ngx_http_fastcgi_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
{ … }
static ngx_int_t
ngx_http_fastcgi_init_params(ngx_conf_t *cf, ngx_http_fastcgi_loc_conf_t *conf,
ngx_http_fastcgi_params_t *params, ngx_keyval_t *default_params)
{ … }
static ngx_int_t
ngx_http_fastcgi_script_name_variable(ngx_http_request_t *r,
ngx_http_variable_value_t *v, uintptr_t data)
{ … }
static ngx_int_t
ngx_http_fastcgi_path_info_variable(ngx_http_request_t *r,
ngx_http_variable_value_t *v, uintptr_t data)
{ … }
static ngx_http_fastcgi_ctx_t *
ngx_http_fastcgi_split(ngx_http_request_t *r, ngx_http_fastcgi_loc_conf_t *flcf)
{ … }
static char *
ngx_http_fastcgi_pass(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
{ … }
static char *
ngx_http_fastcgi_split_path_info(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
{ … }
static char *
ngx_http_fastcgi_store(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
{ … }
#if (NGX_HTTP_CACHE)
static char *
ngx_http_fastcgi_cache(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
{ … }
static char *
ngx_http_fastcgi_cache_key(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
{ … }
#endif
static char *
ngx_http_fastcgi_lowat_check(ngx_conf_t *cf, void *post, void *data)
{ … }