# HG changeset patch # User Igor Sysoev # Date 1169630048 0 # Node ID d82560e9d14713ad6859b1852a9a0a7713161891 # Parent f303d33f39270a2bc2a864cdf5c2ed2cc5fcc6aa client_body_in_file_only any diff --git a/src/http/ngx_http_core_module.c b/src/http/ngx_http_core_module.c --- a/src/http/ngx_http_core_module.c +++ b/src/http/ngx_http_core_module.c @@ -23,6 +23,11 @@ typedef struct { #define NGX_HTTP_LOCATION_REGEX 4 +#define NGX_HTTP_REQUEST_BODY_FILE_OFF 0 +#define NGX_HTTP_REQUEST_BODY_FILE_ON 1 +#define NGX_HTTP_REQUEST_BODY_FILE_ANY 2 + + static ngx_int_t ngx_http_core_find_location(ngx_http_request_t *r, ngx_array_t *locations, size_t len); @@ -74,6 +79,14 @@ static ngx_conf_deprecated_t ngx_conf_d }; +static ngx_conf_enum_t ngx_http_core_request_body_in_file[] = { + { ngx_string("off"), NGX_HTTP_REQUEST_BODY_FILE_OFF }, + { ngx_string("on"), NGX_HTTP_REQUEST_BODY_FILE_ON }, + { ngx_string("any"), NGX_HTTP_REQUEST_BODY_FILE_ANY }, + { ngx_null_string, 0 } +}; + + static ngx_command_t ngx_http_core_commands[] = { { ngx_string("variables_hash_max_size"), @@ -269,10 +282,10 @@ static ngx_command_t ngx_http_core_comm { ngx_string("client_body_in_file_only"), NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG, - ngx_conf_set_flag_slot, + ngx_conf_set_enum_slot, NGX_HTTP_LOC_CONF_OFFSET, offsetof(ngx_http_core_loc_conf_t, client_body_in_file_only), - NULL }, + &ngx_http_core_request_body_in_file }, { ngx_string("sendfile"), NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF @@ -879,6 +892,10 @@ ngx_http_update_location_config(ngx_http r->request_body_in_persistent_file = 1; r->request_body_file_log_level = NGX_LOG_NOTICE; + if (clcf->client_body_in_file_only == NGX_HTTP_REQUEST_BODY_FILE_ON) { + r->request_body_delete_incomplete_file = 1; + } + } else { r->request_body_file_log_level = NGX_LOG_WARN; }