nginx/src/http/ngx_http_core_module.h


/*
 * Copyright (C) Igor Sysoev
 * Copyright (C) Nginx, Inc.
 */


#ifndef _NGX_HTTP_CORE_H_INCLUDED_
#define _NGX_HTTP_CORE_H_INCLUDED_


#include <ngx_config.h>
#include <ngx_core.h>
#include <ngx_http.h>

#if (NGX_THREADS)
#include <ngx_thread_pool.h>
#elif (NGX_COMPAT)
typedef struct ngx_thread_pool_s  ngx_thread_pool_t;
#endif


#define NGX_HTTP_GZIP_PROXIED_OFF
#define NGX_HTTP_GZIP_PROXIED_EXPIRED
#define NGX_HTTP_GZIP_PROXIED_NO_CACHE
#define NGX_HTTP_GZIP_PROXIED_NO_STORE
#define NGX_HTTP_GZIP_PROXIED_PRIVATE
#define NGX_HTTP_GZIP_PROXIED_NO_LM
#define NGX_HTTP_GZIP_PROXIED_NO_ETAG
#define NGX_HTTP_GZIP_PROXIED_AUTH
#define NGX_HTTP_GZIP_PROXIED_ANY


#define NGX_HTTP_AIO_OFF
#define NGX_HTTP_AIO_ON
#define NGX_HTTP_AIO_THREADS


#define NGX_HTTP_SATISFY_ALL
#define NGX_HTTP_SATISFY_ANY


#define NGX_HTTP_LINGERING_OFF
#define NGX_HTTP_LINGERING_ON
#define NGX_HTTP_LINGERING_ALWAYS


#define NGX_HTTP_IMS_OFF
#define NGX_HTTP_IMS_EXACT
#define NGX_HTTP_IMS_BEFORE


#define NGX_HTTP_KEEPALIVE_DISABLE_NONE
#define NGX_HTTP_KEEPALIVE_DISABLE_MSIE6
#define NGX_HTTP_KEEPALIVE_DISABLE_SAFARI


#define NGX_HTTP_SERVER_TOKENS_OFF
#define NGX_HTTP_SERVER_TOKENS_ON
#define NGX_HTTP_SERVER_TOKENS_BUILD


ngx_http_location_tree_node_t;
ngx_http_core_loc_conf_t;


ngx_http_listen_opt_t;


ngx_http_phases;

ngx_http_phase_handler_t;

ngx_http_phase_handler_pt;

struct ngx_http_phase_handler_s {};


ngx_http_phase_engine_t;


ngx_http_phase_t;


ngx_http_core_main_conf_t;


ngx_http_core_srv_conf_t;


/* list of structures to find core_srv_conf quickly at run time */


ngx_http_server_name_t;


ngx_http_virtual_names_t;


struct ngx_http_addr_conf_s {};


ngx_http_in_addr_t;


#if (NGX_HAVE_INET6)

ngx_http_in6_addr_t;

#endif


ngx_http_port_t;


ngx_http_conf_port_t;


ngx_http_conf_addr_t;


ngx_http_err_page_t;


struct ngx_http_core_loc_conf_s {};


ngx_http_location_queue_t;


struct ngx_http_location_tree_node_s {};


void ngx_http_core_run_phases(ngx_http_request_t *r);
ngx_int_t ngx_http_core_generic_phase(ngx_http_request_t *r,
    ngx_http_phase_handler_t *ph);
ngx_int_t ngx_http_core_rewrite_phase(ngx_http_request_t *r,
    ngx_http_phase_handler_t *ph);
ngx_int_t ngx_http_core_find_config_phase(ngx_http_request_t *r,
    ngx_http_phase_handler_t *ph);
ngx_int_t ngx_http_core_post_rewrite_phase(ngx_http_request_t *r,
    ngx_http_phase_handler_t *ph);
ngx_int_t ngx_http_core_access_phase(ngx_http_request_t *r,
    ngx_http_phase_handler_t *ph);
ngx_int_t ngx_http_core_post_access_phase(ngx_http_request_t *r,
    ngx_http_phase_handler_t *ph);
ngx_int_t ngx_http_core_content_phase(ngx_http_request_t *r,
    ngx_http_phase_handler_t *ph);


void *ngx_http_test_content_type(ngx_http_request_t *r, ngx_hash_t *types_hash);
ngx_int_t ngx_http_set_content_type(ngx_http_request_t *r);
void ngx_http_set_exten(ngx_http_request_t *r);
ngx_int_t ngx_http_set_etag(ngx_http_request_t *r);
void ngx_http_weak_etag(ngx_http_request_t *r);
ngx_int_t ngx_http_send_response(ngx_http_request_t *r, ngx_uint_t status,
    ngx_str_t *ct, ngx_http_complex_value_t *cv);
u_char *ngx_http_map_uri_to_path(ngx_http_request_t *r, ngx_str_t *name,
    size_t *root_length, size_t reserved);
ngx_int_t ngx_http_auth_basic_user(ngx_http_request_t *r);
#if (NGX_HTTP_GZIP)
ngx_int_t ngx_http_gzip_ok(ngx_http_request_t *r);
#endif


ngx_int_t ngx_http_subrequest(ngx_http_request_t *r,
    ngx_str_t *uri, ngx_str_t *args, ngx_http_request_t **psr,
    ngx_http_post_subrequest_t *ps, ngx_uint_t flags);
ngx_int_t ngx_http_internal_redirect(ngx_http_request_t *r,
    ngx_str_t *uri, ngx_str_t *args);
ngx_int_t ngx_http_named_location(ngx_http_request_t *r, ngx_str_t *name);


ngx_http_cleanup_t *ngx_http_cleanup_add(ngx_http_request_t *r, size_t size);


ngx_http_output_header_filter_pt;
ngx_http_output_body_filter_pt;
ngx_http_request_body_filter_pt;


ngx_int_t ngx_http_output_filter(ngx_http_request_t *r, ngx_chain_t *chain);
ngx_int_t ngx_http_write_filter(ngx_http_request_t *r, ngx_chain_t *chain);
ngx_int_t ngx_http_request_body_save_filter(ngx_http_request_t *r,
    ngx_chain_t *chain);


ngx_int_t ngx_http_set_disable_symlinks(ngx_http_request_t *r,
    ngx_http_core_loc_conf_t *clcf, ngx_str_t *path, ngx_open_file_info_t *of);

ngx_int_t ngx_http_get_forwarded_addr(ngx_http_request_t *r, ngx_addr_t *addr,
    ngx_table_elt_t *headers, ngx_str_t *value, ngx_array_t *proxies,
    int recursive);

ngx_int_t ngx_http_link_multi_headers(ngx_http_request_t *r);


extern ngx_module_t  ngx_http_core_module;

extern ngx_uint_t ngx_http_max_module;

extern ngx_str_t  ngx_http_core_get_method;


#define ngx_http_clear_content_length(r)

#define ngx_http_clear_accept_ranges(r)

#define ngx_http_clear_last_modified(r)

#define ngx_http_clear_location(r)

#define ngx_http_clear_etag(r)


#endif /* _NGX_HTTP_CORE_H_INCLUDED_ */