annotate src/http/modules/ngx_http_uwsgi_module.c @ 4437:3a1507f48686 stable-1.0

Merge of r4372, r4373, r4374: SCGI fixes: *) Fixed incorrect use of r->http_version in scgi module. The r->http_version is a version of client's request, and modules must not set it unless they are really willing to downgrade protocol version used for a response (i.e. to HTTP/0.9 if no response headers are available). In neither case r->http_version may be upgraded. The former code downgraded response from HTTP/1.1 to HTTP/1.0 for no reason, causing various problems (see ticket #66). It was also possible that HTTP/0.9 requests were upgraded to HTTP/1.0. *) Removed duplicate function declaration. *) Removed error if there is no Status header. The SCGI specification doesn't specify format of the response, and assuming CGI specs should be used there is no reason to complain. RFC 3875 explicitly states that "A Status header field is optional, and status 200 'OK' is assumed if it is omitted".
author Maxim Dounin <mdounin@mdounin.ru>
date Sun, 05 Feb 2012 13:53:50 +0000
parents 94b995c7c614
children 2b2d51cdbd97
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2 /*
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
3 * Copyright (C) Unbit S.a.s. 2009-2010
3544
6048c77cfbb2 fix copyrights
Igor Sysoev <igor@sysoev.ru>
parents: 3543
diff changeset
4 * Copyright (C) 2008 Manlio Perillo (manlio.perillo@gmail.com)
6048c77cfbb2 fix copyrights
Igor Sysoev <igor@sysoev.ru>
parents: 3543
diff changeset
5 * Copyright (C) Igor Sysoev
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
6 */
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
7
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
8
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
9 #include <ngx_config.h>
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
10 #include <ngx_core.h>
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
11 #include <ngx_http.h>
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
12
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
13
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
14 typedef struct {
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
15 ngx_http_upstream_conf_t upstream;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
16
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
17 ngx_array_t *flushes;
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
18 ngx_array_t *params_len;
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
19 ngx_array_t *params;
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
20 ngx_array_t *params_source;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
21
3566
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
22 ngx_hash_t headers_hash;
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
23 ngx_uint_t header_params;
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
24
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
25 ngx_array_t *uwsgi_lengths;
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
26 ngx_array_t *uwsgi_values;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
27
3568
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
28 #if (NGX_HTTP_CACHE)
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
29 ngx_http_complex_value_t cache_key;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
30 #endif
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
31
3550
9f715c9e5b82 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 3549
diff changeset
32 ngx_str_t uwsgi_string;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
33
3552
40eba0271b1d improve uwsgi_modifierX processing:
Igor Sysoev <igor@sysoev.ru>
parents: 3551
diff changeset
34 ngx_uint_t modifier1;
40eba0271b1d improve uwsgi_modifierX processing:
Igor Sysoev <igor@sysoev.ru>
parents: 3551
diff changeset
35 ngx_uint_t modifier2;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
36 } ngx_http_uwsgi_loc_conf_t;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
37
3556
b9415935d95d style fix
Igor Sysoev <igor@sysoev.ru>
parents: 3555
diff changeset
38
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
39 static ngx_int_t ngx_http_uwsgi_eval(ngx_http_request_t *r,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
40 ngx_http_uwsgi_loc_conf_t *uwcf);
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
41 static ngx_int_t ngx_http_uwsgi_create_request(ngx_http_request_t *r);
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
42 static ngx_int_t ngx_http_uwsgi_reinit_request(ngx_http_request_t *r);
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
43 static ngx_int_t ngx_http_uwsgi_process_status_line(ngx_http_request_t *r);
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
44 static ngx_int_t ngx_http_uwsgi_process_header(ngx_http_request_t *r);
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
45 static ngx_int_t ngx_http_uwsgi_process_header(ngx_http_request_t *r);
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
46 static void ngx_http_uwsgi_abort_request(ngx_http_request_t *r);
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
47 static void ngx_http_uwsgi_finalize_request(ngx_http_request_t *r,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
48 ngx_int_t rc);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
49
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
50 static void *ngx_http_uwsgi_create_loc_conf(ngx_conf_t *cf);
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
51 static char *ngx_http_uwsgi_merge_loc_conf(ngx_conf_t *cf, void *parent,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
52 void *child);
4358
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
53 static ngx_int_t ngx_http_uwsgi_merge_params(ngx_conf_t *cf,
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
54 ngx_http_uwsgi_loc_conf_t *conf, ngx_http_uwsgi_loc_conf_t *prev);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
55
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
56 static char *ngx_http_uwsgi_pass(ngx_conf_t *cf, ngx_command_t *cmd,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
57 void *conf);
3565
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
58 static char *ngx_http_uwsgi_store(ngx_conf_t *cf, ngx_command_t *cmd,
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
59 void *conf);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
60
3568
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
61 #if (NGX_HTTP_CACHE)
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
62 static ngx_int_t ngx_http_uwsgi_create_key(ngx_http_request_t *r);
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
63 static char *ngx_http_uwsgi_cache(ngx_conf_t *cf, ngx_command_t *cmd,
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
64 void *conf);
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
65 static char *ngx_http_uwsgi_cache_key(ngx_conf_t *cf, ngx_command_t *cmd,
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
66 void *conf);
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
67 #endif
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
68
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
69
3552
40eba0271b1d improve uwsgi_modifierX processing:
Igor Sysoev <igor@sysoev.ru>
parents: 3551
diff changeset
70 static ngx_conf_num_bounds_t ngx_http_uwsgi_modifier_bounds = {
40eba0271b1d improve uwsgi_modifierX processing:
Igor Sysoev <igor@sysoev.ru>
parents: 3551
diff changeset
71 ngx_conf_check_num_bounds, 0, 255
40eba0271b1d improve uwsgi_modifierX processing:
Igor Sysoev <igor@sysoev.ru>
parents: 3551
diff changeset
72 };
40eba0271b1d improve uwsgi_modifierX processing:
Igor Sysoev <igor@sysoev.ru>
parents: 3551
diff changeset
73
40eba0271b1d improve uwsgi_modifierX processing:
Igor Sysoev <igor@sysoev.ru>
parents: 3551
diff changeset
74
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
75 static ngx_conf_bitmask_t ngx_http_uwsgi_next_upstream_masks[] = {
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
76 { ngx_string("error"), NGX_HTTP_UPSTREAM_FT_ERROR },
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
77 { ngx_string("timeout"), NGX_HTTP_UPSTREAM_FT_TIMEOUT },
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
78 { ngx_string("invalid_header"), NGX_HTTP_UPSTREAM_FT_INVALID_HEADER },
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
79 { ngx_string("http_500"), NGX_HTTP_UPSTREAM_FT_HTTP_500 },
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
80 { ngx_string("http_503"), NGX_HTTP_UPSTREAM_FT_HTTP_503 },
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
81 { ngx_string("http_404"), NGX_HTTP_UPSTREAM_FT_HTTP_404 },
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
82 { ngx_string("updating"), NGX_HTTP_UPSTREAM_FT_UPDATING },
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
83 { ngx_string("off"), NGX_HTTP_UPSTREAM_FT_OFF },
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
84 { ngx_null_string, 0 }
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
85 };
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
86
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
87
3568
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
88 ngx_module_t ngx_http_uwsgi_module;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
89
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
90
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
91 static ngx_command_t ngx_http_uwsgi_commands[] = {
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
92
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
93 { ngx_string("uwsgi_pass"),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
94 NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
95 ngx_http_uwsgi_pass,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
96 NGX_HTTP_LOC_CONF_OFFSET,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
97 0,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
98 NULL },
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
99
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
100 { ngx_string("uwsgi_modifier1"),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
101 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
3552
40eba0271b1d improve uwsgi_modifierX processing:
Igor Sysoev <igor@sysoev.ru>
parents: 3551
diff changeset
102 ngx_conf_set_num_slot,
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
103 NGX_HTTP_LOC_CONF_OFFSET,
3552
40eba0271b1d improve uwsgi_modifierX processing:
Igor Sysoev <igor@sysoev.ru>
parents: 3551
diff changeset
104 offsetof(ngx_http_uwsgi_loc_conf_t, modifier1),
40eba0271b1d improve uwsgi_modifierX processing:
Igor Sysoev <igor@sysoev.ru>
parents: 3551
diff changeset
105 &ngx_http_uwsgi_modifier_bounds },
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
106
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
107 { ngx_string("uwsgi_modifier2"),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
108 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
3552
40eba0271b1d improve uwsgi_modifierX processing:
Igor Sysoev <igor@sysoev.ru>
parents: 3551
diff changeset
109 ngx_conf_set_num_slot,
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
110 NGX_HTTP_LOC_CONF_OFFSET,
3552
40eba0271b1d improve uwsgi_modifierX processing:
Igor Sysoev <igor@sysoev.ru>
parents: 3551
diff changeset
111 offsetof(ngx_http_uwsgi_loc_conf_t, modifier2),
40eba0271b1d improve uwsgi_modifierX processing:
Igor Sysoev <igor@sysoev.ru>
parents: 3551
diff changeset
112 &ngx_http_uwsgi_modifier_bounds },
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
113
3565
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
114 { ngx_string("uwsgi_store"),
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
115 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
116 ngx_http_uwsgi_store,
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
117 NGX_HTTP_LOC_CONF_OFFSET,
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
118 0,
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
119 NULL },
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
120
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
121 { ngx_string("uwsgi_store_access"),
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
122 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE123,
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
123 ngx_conf_set_access_slot,
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
124 NGX_HTTP_LOC_CONF_OFFSET,
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
125 offsetof(ngx_http_uwsgi_loc_conf_t, upstream.store_access),
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
126 NULL },
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
127
4252
94049ec3eeda Merging r4158:
Igor Sysoev <igor@sysoev.ru>
parents: 4050
diff changeset
128 { ngx_string("uwsgi_buffering"),
94049ec3eeda Merging r4158:
Igor Sysoev <igor@sysoev.ru>
parents: 4050
diff changeset
129 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
94049ec3eeda Merging r4158:
Igor Sysoev <igor@sysoev.ru>
parents: 4050
diff changeset
130 ngx_conf_set_flag_slot,
94049ec3eeda Merging r4158:
Igor Sysoev <igor@sysoev.ru>
parents: 4050
diff changeset
131 NGX_HTTP_LOC_CONF_OFFSET,
94049ec3eeda Merging r4158:
Igor Sysoev <igor@sysoev.ru>
parents: 4050
diff changeset
132 offsetof(ngx_http_uwsgi_loc_conf_t, upstream.buffering),
94049ec3eeda Merging r4158:
Igor Sysoev <igor@sysoev.ru>
parents: 4050
diff changeset
133 NULL },
94049ec3eeda Merging r4158:
Igor Sysoev <igor@sysoev.ru>
parents: 4050
diff changeset
134
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
135 { ngx_string("uwsgi_ignore_client_abort"),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
136 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
137 ngx_conf_set_flag_slot,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
138 NGX_HTTP_LOC_CONF_OFFSET,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
139 offsetof(ngx_http_uwsgi_loc_conf_t, upstream.ignore_client_abort),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
140 NULL },
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
141
3567
9bbfce117cfb uwsgi_bind
Igor Sysoev <igor@sysoev.ru>
parents: 3566
diff changeset
142 { ngx_string("uwsgi_bind"),
9bbfce117cfb uwsgi_bind
Igor Sysoev <igor@sysoev.ru>
parents: 3566
diff changeset
143 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
9bbfce117cfb uwsgi_bind
Igor Sysoev <igor@sysoev.ru>
parents: 3566
diff changeset
144 ngx_http_upstream_bind_set_slot,
9bbfce117cfb uwsgi_bind
Igor Sysoev <igor@sysoev.ru>
parents: 3566
diff changeset
145 NGX_HTTP_LOC_CONF_OFFSET,
9bbfce117cfb uwsgi_bind
Igor Sysoev <igor@sysoev.ru>
parents: 3566
diff changeset
146 offsetof(ngx_http_uwsgi_loc_conf_t, upstream.local),
9bbfce117cfb uwsgi_bind
Igor Sysoev <igor@sysoev.ru>
parents: 3566
diff changeset
147 NULL },
9bbfce117cfb uwsgi_bind
Igor Sysoev <igor@sysoev.ru>
parents: 3566
diff changeset
148
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
149 { ngx_string("uwsgi_connect_timeout"),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
150 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
151 ngx_conf_set_msec_slot,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
152 NGX_HTTP_LOC_CONF_OFFSET,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
153 offsetof(ngx_http_uwsgi_loc_conf_t, upstream.connect_timeout),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
154 NULL },
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
155
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
156 { ngx_string("uwsgi_send_timeout"),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
157 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
158 ngx_conf_set_msec_slot,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
159 NGX_HTTP_LOC_CONF_OFFSET,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
160 offsetof(ngx_http_uwsgi_loc_conf_t, upstream.send_timeout),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
161 NULL },
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
162
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
163 { ngx_string("uwsgi_buffer_size"),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
164 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
165 ngx_conf_set_size_slot,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
166 NGX_HTTP_LOC_CONF_OFFSET,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
167 offsetof(ngx_http_uwsgi_loc_conf_t, upstream.buffer_size),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
168 NULL },
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
169
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
170 { ngx_string("uwsgi_pass_request_headers"),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
171 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
172 ngx_conf_set_flag_slot,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
173 NGX_HTTP_LOC_CONF_OFFSET,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
174 offsetof(ngx_http_uwsgi_loc_conf_t, upstream.pass_request_headers),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
175 NULL },
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
176
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
177 { ngx_string("uwsgi_pass_request_body"),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
178 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
179 ngx_conf_set_flag_slot,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
180 NGX_HTTP_LOC_CONF_OFFSET,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
181 offsetof(ngx_http_uwsgi_loc_conf_t, upstream.pass_request_body),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
182 NULL },
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
183
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
184 { ngx_string("uwsgi_intercept_errors"),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
185 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
186 ngx_conf_set_flag_slot,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
187 NGX_HTTP_LOC_CONF_OFFSET,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
188 offsetof(ngx_http_uwsgi_loc_conf_t, upstream.intercept_errors),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
189 NULL },
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
190
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
191 { ngx_string("uwsgi_read_timeout"),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
192 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
193 ngx_conf_set_msec_slot,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
194 NGX_HTTP_LOC_CONF_OFFSET,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
195 offsetof(ngx_http_uwsgi_loc_conf_t, upstream.read_timeout),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
196 NULL },
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
197
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
198 { ngx_string("uwsgi_buffers"),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
199 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE2,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
200 ngx_conf_set_bufs_slot,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
201 NGX_HTTP_LOC_CONF_OFFSET,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
202 offsetof(ngx_http_uwsgi_loc_conf_t, upstream.bufs),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
203 NULL },
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
204
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
205 { ngx_string("uwsgi_busy_buffers_size"),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
206 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
207 ngx_conf_set_size_slot,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
208 NGX_HTTP_LOC_CONF_OFFSET,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
209 offsetof(ngx_http_uwsgi_loc_conf_t, upstream.busy_buffers_size_conf),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
210 NULL },
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
211
3568
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
212 #if (NGX_HTTP_CACHE)
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
213
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
214 { ngx_string("uwsgi_cache"),
3729
4b773fc06336 fix directive type
Igor Sysoev <igor@sysoev.ru>
parents: 3699
diff changeset
215 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
3568
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
216 ngx_http_uwsgi_cache,
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
217 NGX_HTTP_LOC_CONF_OFFSET,
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
218 0,
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
219 NULL },
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
220
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
221 { ngx_string("uwsgi_cache_key"),
3729
4b773fc06336 fix directive type
Igor Sysoev <igor@sysoev.ru>
parents: 3699
diff changeset
222 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
3568
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
223 ngx_http_uwsgi_cache_key,
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
224 NGX_HTTP_LOC_CONF_OFFSET,
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
225 0,
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
226 NULL },
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
227
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
228 { ngx_string("uwsgi_cache_path"),
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
229 NGX_HTTP_MAIN_CONF|NGX_CONF_2MORE,
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
230 ngx_http_file_cache_set_slot,
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
231 0,
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
232 0,
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
233 &ngx_http_uwsgi_module },
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
234
3699
b0a0686a85bb proxy_cache_pass, fastcgi_cache_bypass, uwsgi_cache_bypass, scgi_cache_bypass
Igor Sysoev <igor@sysoev.ru>
parents: 3693
diff changeset
235 { ngx_string("uwsgi_cache_bypass"),
b0a0686a85bb proxy_cache_pass, fastcgi_cache_bypass, uwsgi_cache_bypass, scgi_cache_bypass
Igor Sysoev <igor@sysoev.ru>
parents: 3693
diff changeset
236 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE,
b0a0686a85bb proxy_cache_pass, fastcgi_cache_bypass, uwsgi_cache_bypass, scgi_cache_bypass
Igor Sysoev <igor@sysoev.ru>
parents: 3693
diff changeset
237 ngx_http_set_predicate_slot,
b0a0686a85bb proxy_cache_pass, fastcgi_cache_bypass, uwsgi_cache_bypass, scgi_cache_bypass
Igor Sysoev <igor@sysoev.ru>
parents: 3693
diff changeset
238 NGX_HTTP_LOC_CONF_OFFSET,
b0a0686a85bb proxy_cache_pass, fastcgi_cache_bypass, uwsgi_cache_bypass, scgi_cache_bypass
Igor Sysoev <igor@sysoev.ru>
parents: 3693
diff changeset
239 offsetof(ngx_http_uwsgi_loc_conf_t, upstream.cache_bypass),
b0a0686a85bb proxy_cache_pass, fastcgi_cache_bypass, uwsgi_cache_bypass, scgi_cache_bypass
Igor Sysoev <igor@sysoev.ru>
parents: 3693
diff changeset
240 NULL },
b0a0686a85bb proxy_cache_pass, fastcgi_cache_bypass, uwsgi_cache_bypass, scgi_cache_bypass
Igor Sysoev <igor@sysoev.ru>
parents: 3693
diff changeset
241
3568
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
242 { ngx_string("uwsgi_no_cache"),
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
243 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE,
3692
045ea40cbfe8 use ngx_http_test_predicates(), ngx_http_set_predicate_slot()
Igor Sysoev <igor@sysoev.ru>
parents: 3670
diff changeset
244 ngx_http_set_predicate_slot,
3568
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
245 NGX_HTTP_LOC_CONF_OFFSET,
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
246 offsetof(ngx_http_uwsgi_loc_conf_t, upstream.no_cache),
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
247 NULL },
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
248
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
249 { ngx_string("uwsgi_cache_valid"),
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
250 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE,
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
251 ngx_http_file_cache_valid_set_slot,
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
252 NGX_HTTP_LOC_CONF_OFFSET,
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
253 offsetof(ngx_http_uwsgi_loc_conf_t, upstream.cache_valid),
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
254 NULL },
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
255
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
256 { ngx_string("uwsgi_cache_min_uses"),
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
257 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
258 ngx_conf_set_num_slot,
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
259 NGX_HTTP_LOC_CONF_OFFSET,
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
260 offsetof(ngx_http_uwsgi_loc_conf_t, upstream.cache_min_uses),
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
261 NULL },
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
262
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
263 { ngx_string("uwsgi_cache_use_stale"),
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
264 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE,
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
265 ngx_conf_set_bitmask_slot,
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
266 NGX_HTTP_LOC_CONF_OFFSET,
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
267 offsetof(ngx_http_uwsgi_loc_conf_t, upstream.cache_use_stale),
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
268 &ngx_http_uwsgi_next_upstream_masks },
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
269
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
270 { ngx_string("uwsgi_cache_methods"),
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
271 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE,
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
272 ngx_conf_set_bitmask_slot,
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
273 NGX_HTTP_LOC_CONF_OFFSET,
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
274 offsetof(ngx_http_uwsgi_loc_conf_t, upstream.cache_methods),
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
275 &ngx_http_upstream_cache_method_mask },
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
276
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
277 #endif
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
278
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
279 { ngx_string("uwsgi_temp_path"),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
280 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1234,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
281 ngx_conf_set_path_slot,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
282 NGX_HTTP_LOC_CONF_OFFSET,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
283 offsetof(ngx_http_uwsgi_loc_conf_t, upstream.temp_path),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
284 NULL },
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
285
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
286 { ngx_string("uwsgi_max_temp_file_size"),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
287 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
288 ngx_conf_set_size_slot,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
289 NGX_HTTP_LOC_CONF_OFFSET,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
290 offsetof(ngx_http_uwsgi_loc_conf_t, upstream.max_temp_file_size_conf),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
291 NULL },
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
292
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
293 { ngx_string("uwsgi_temp_file_write_size"),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
294 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
295 ngx_conf_set_size_slot,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
296 NGX_HTTP_LOC_CONF_OFFSET,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
297 offsetof(ngx_http_uwsgi_loc_conf_t, upstream.temp_file_write_size_conf),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
298 NULL },
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
299
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
300 { ngx_string("uwsgi_next_upstream"),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
301 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
302 ngx_conf_set_bitmask_slot,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
303 NGX_HTTP_LOC_CONF_OFFSET,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
304 offsetof(ngx_http_uwsgi_loc_conf_t, upstream.next_upstream),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
305 &ngx_http_uwsgi_next_upstream_masks },
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
306
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
307 { ngx_string("uwsgi_param"),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
308 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE2,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
309 ngx_conf_set_keyval_slot,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
310 NGX_HTTP_LOC_CONF_OFFSET,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
311 offsetof(ngx_http_uwsgi_loc_conf_t, params_source),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
312 NULL },
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
313
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
314 { ngx_string("uwsgi_string"),
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
315 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
316 ngx_conf_set_str_slot,
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
317 NGX_HTTP_LOC_CONF_OFFSET,
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
318 offsetof(ngx_http_uwsgi_loc_conf_t, uwsgi_string),
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
319 NULL },
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
320
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
321 { ngx_string("uwsgi_pass_header"),
3729
4b773fc06336 fix directive type
Igor Sysoev <igor@sysoev.ru>
parents: 3699
diff changeset
322 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
323 ngx_conf_set_str_array_slot,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
324 NGX_HTTP_LOC_CONF_OFFSET,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
325 offsetof(ngx_http_uwsgi_loc_conf_t, upstream.pass_headers),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
326 NULL },
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
327
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
328 { ngx_string("uwsgi_hide_header"),
3729
4b773fc06336 fix directive type
Igor Sysoev <igor@sysoev.ru>
parents: 3699
diff changeset
329 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
330 ngx_conf_set_str_array_slot,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
331 NGX_HTTP_LOC_CONF_OFFSET,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
332 offsetof(ngx_http_uwsgi_loc_conf_t, upstream.hide_headers),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
333 NULL },
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
334
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
335 { ngx_string("uwsgi_ignore_headers"),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
336 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
337 ngx_conf_set_bitmask_slot,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
338 NGX_HTTP_LOC_CONF_OFFSET,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
339 offsetof(ngx_http_uwsgi_loc_conf_t, upstream.ignore_headers),
3667
12bd9e26fadb use shared ngx_http_upstream_ignore_headers_masks[]
Igor Sysoev <igor@sysoev.ru>
parents: 3630
diff changeset
340 &ngx_http_upstream_ignore_headers_masks },
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
341
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
342 ngx_null_command
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
343 };
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
344
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
345
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
346 static ngx_http_module_t ngx_http_uwsgi_module_ctx = {
3553
b4a60663f6c0 delete unused ngx_http_uwsgi_add_variables()
Igor Sysoev <igor@sysoev.ru>
parents: 3552
diff changeset
347 NULL, /* preconfiguration */
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
348 NULL, /* postconfiguration */
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
349
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
350 NULL, /* create main configuration */
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
351 NULL, /* init main configuration */
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
352
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
353 NULL, /* create server configuration */
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
354 NULL, /* merge server configuration */
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
355
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
356 ngx_http_uwsgi_create_loc_conf, /* create location configuration */
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
357 ngx_http_uwsgi_merge_loc_conf /* merge location configuration */
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
358 };
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
359
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
360
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
361 ngx_module_t ngx_http_uwsgi_module = {
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
362 NGX_MODULE_V1,
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
363 &ngx_http_uwsgi_module_ctx, /* module context */
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
364 ngx_http_uwsgi_commands, /* module directives */
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
365 NGX_HTTP_MODULE, /* module type */
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
366 NULL, /* init master */
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
367 NULL, /* init module */
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
368 NULL, /* init process */
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
369 NULL, /* init thread */
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
370 NULL, /* exit thread */
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
371 NULL, /* exit process */
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
372 NULL, /* exit master */
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
373 NGX_MODULE_V1_PADDING
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
374 };
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
375
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
376
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
377 static ngx_str_t ngx_http_uwsgi_hide_headers[] = {
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
378 ngx_string("X-Accel-Expires"),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
379 ngx_string("X-Accel-Redirect"),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
380 ngx_string("X-Accel-Limit-Rate"),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
381 ngx_string("X-Accel-Buffering"),
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
382 ngx_string("X-Accel-Charset"),
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
383 ngx_null_string
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
384 };
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
385
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
386
3568
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
387 #if (NGX_HTTP_CACHE)
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
388
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
389 static ngx_keyval_t ngx_http_uwsgi_cache_headers[] = {
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
390 { ngx_string("HTTP_IF_MODIFIED_SINCE"), ngx_string("") },
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
391 { ngx_string("HTTP_IF_UNMODIFIED_SINCE"), ngx_string("") },
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
392 { ngx_string("HTTP_IF_NONE_MATCH"), ngx_string("") },
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
393 { ngx_string("HTTP_IF_MATCH"), ngx_string("") },
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
394 { ngx_string("HTTP_RANGE"), ngx_string("") },
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
395 { ngx_string("HTTP_IF_RANGE"), ngx_string("") },
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
396 { ngx_null_string, ngx_null_string }
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
397 };
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
398
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
399 #endif
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
400
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
401
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
402 static ngx_path_init_t ngx_http_uwsgi_temp_path = {
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
403 ngx_string(NGX_HTTP_UWSGI_TEMP_PATH), { 1, 2, 0 }
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
404 };
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
405
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
406
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
407 static ngx_int_t
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
408 ngx_http_uwsgi_handler(ngx_http_request_t *r)
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
409 {
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
410 ngx_int_t rc;
3629
a2a3378824ba fix r3628
Igor Sysoev <igor@sysoev.ru>
parents: 3628
diff changeset
411 ngx_http_status_t *status;
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
412 ngx_http_upstream_t *u;
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
413 ngx_http_uwsgi_loc_conf_t *uwcf;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
414
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
415 if (r->subrequest_in_memory) {
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
416 ngx_log_error(NGX_LOG_ALERT, r->connection->log, 0,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
417 "ngx_http_uwsgi_module does not support "
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
418 "subrequests in memory");
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
419 return NGX_HTTP_INTERNAL_SERVER_ERROR;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
420 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
421
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
422 if (ngx_http_upstream_create(r) != NGX_OK) {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
423 return NGX_HTTP_INTERNAL_SERVER_ERROR;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
424 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
425
3629
a2a3378824ba fix r3628
Igor Sysoev <igor@sysoev.ru>
parents: 3628
diff changeset
426 status = ngx_pcalloc(r->pool, sizeof(ngx_http_status_t));
a2a3378824ba fix r3628
Igor Sysoev <igor@sysoev.ru>
parents: 3628
diff changeset
427 if (status == NULL) {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
428 return NGX_HTTP_INTERNAL_SERVER_ERROR;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
429 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
430
3629
a2a3378824ba fix r3628
Igor Sysoev <igor@sysoev.ru>
parents: 3628
diff changeset
431 ngx_http_set_ctx(r, status, ngx_http_uwsgi_module);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
432
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
433 uwcf = ngx_http_get_module_loc_conf(r, ngx_http_uwsgi_module);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
434
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
435 if (uwcf->uwsgi_lengths) {
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
436 if (ngx_http_uwsgi_eval(r, uwcf) != NGX_OK) {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
437 return NGX_HTTP_INTERNAL_SERVER_ERROR;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
438 }
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
439 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
440
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
441 u = r->upstream;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
442
3545
11c4f3a1e439 use ngx_str_set() and ngx_str_null()
Igor Sysoev <igor@sysoev.ru>
parents: 3544
diff changeset
443 ngx_str_set(&u->schema, "uwsgi://");
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
444 u->output.tag = (ngx_buf_tag_t) &ngx_http_uwsgi_module;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
445
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
446 u->conf = &uwcf->upstream;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
447
3568
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
448 #if (NGX_HTTP_CACHE)
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
449 u->create_key = ngx_http_uwsgi_create_key;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
450 #endif
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
451 u->create_request = ngx_http_uwsgi_create_request;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
452 u->reinit_request = ngx_http_uwsgi_reinit_request;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
453 u->process_header = ngx_http_uwsgi_process_status_line;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
454 u->abort_request = ngx_http_uwsgi_abort_request;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
455 u->finalize_request = ngx_http_uwsgi_finalize_request;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
456
4252
94049ec3eeda Merging r4158:
Igor Sysoev <igor@sysoev.ru>
parents: 4050
diff changeset
457 u->buffering = uwcf->upstream.buffering;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
458
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
459 u->pipe = ngx_pcalloc(r->pool, sizeof(ngx_event_pipe_t));
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
460 if (u->pipe == NULL) {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
461 return NGX_HTTP_INTERNAL_SERVER_ERROR;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
462 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
463
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
464 u->pipe->input_filter = ngx_event_pipe_copy_input_filter;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
465 u->pipe->input_ctx = r;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
466
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
467 rc = ngx_http_read_client_request_body(r, ngx_http_upstream_init);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
468
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
469 if (rc >= NGX_HTTP_SPECIAL_RESPONSE) {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
470 return rc;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
471 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
472
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
473 return NGX_DONE;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
474 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
475
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
476
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
477 static ngx_int_t
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
478 ngx_http_uwsgi_eval(ngx_http_request_t *r, ngx_http_uwsgi_loc_conf_t * uwcf)
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
479 {
3610
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3608
diff changeset
480 ngx_url_t url;
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3608
diff changeset
481 ngx_http_upstream_t *u;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
482
3610
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3608
diff changeset
483 ngx_memzero(&url, sizeof(ngx_url_t));
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
484
3610
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3608
diff changeset
485 if (ngx_http_script_run(r, &url.url, uwcf->uwsgi_lengths->elts, 0,
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
486 uwcf->uwsgi_values->elts)
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
487 == NULL)
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
488 {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
489 return NGX_ERROR;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
490 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
491
3610
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3608
diff changeset
492 url.no_resolve = 1;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
493
3610
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3608
diff changeset
494 if (ngx_parse_url(r->pool, &url) != NGX_OK) {
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3608
diff changeset
495 if (url.err) {
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
496 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
3610
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3608
diff changeset
497 "%s in upstream \"%V\"", url.err, &url.url);
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
498 }
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
499
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
500 return NGX_ERROR;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
501 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
502
3610
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3608
diff changeset
503 u = r->upstream;
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3608
diff changeset
504
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3608
diff changeset
505 u->resolved = ngx_pcalloc(r->pool, sizeof(ngx_http_upstream_resolved_t));
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3608
diff changeset
506 if (u->resolved == NULL) {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
507 return NGX_ERROR;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
508 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
509
3610
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3608
diff changeset
510 if (url.addrs && url.addrs[0].sockaddr) {
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3608
diff changeset
511 u->resolved->sockaddr = url.addrs[0].sockaddr;
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3608
diff changeset
512 u->resolved->socklen = url.addrs[0].socklen;
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3608
diff changeset
513 u->resolved->naddrs = 1;
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3608
diff changeset
514 u->resolved->host = url.addrs[0].name;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
515
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
516 } else {
3610
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3608
diff changeset
517 u->resolved->host = url.host;
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3608
diff changeset
518 u->resolved->port = url.port;
3879
502a6b0acf3f fix case when a host in fastcgi_pass, scgi_pass, and uwsgi_pass
Igor Sysoev <igor@sysoev.ru>
parents: 3731
diff changeset
519 u->resolved->no_port = url.no_port;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
520 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
521
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
522 return NGX_OK;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
523 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
524
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
525
3568
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
526 #if (NGX_HTTP_CACHE)
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
527
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
528 static ngx_int_t
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
529 ngx_http_uwsgi_create_key(ngx_http_request_t *r)
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
530 {
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
531 ngx_str_t *key;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
532 ngx_http_uwsgi_loc_conf_t *uwcf;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
533
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
534 key = ngx_array_push(&r->cache->keys);
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
535 if (key == NULL) {
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
536 return NGX_ERROR;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
537 }
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
538
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
539 uwcf = ngx_http_get_module_loc_conf(r, ngx_http_uwsgi_module);
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
540
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
541 if (ngx_http_complex_value(r, &uwcf->cache_key, key) != NGX_OK) {
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
542 return NGX_ERROR;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
543 }
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
544
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
545 return NGX_OK;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
546 }
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
547
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
548 #endif
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
549
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
550
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
551 static ngx_int_t
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
552 ngx_http_uwsgi_create_request(ngx_http_request_t *r)
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
553 {
3566
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
554 u_char ch, *lowcase_key;
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
555 size_t key_len, val_len, len, allocated;
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
556 ngx_uint_t i, n, hash, header_params;
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
557 ngx_buf_t *b;
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
558 ngx_chain_t *cl, *body;
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
559 ngx_list_part_t *part;
3566
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
560 ngx_table_elt_t *header, **ignored;
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
561 ngx_http_script_code_pt code;
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
562 ngx_http_script_engine_t e, le;
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
563 ngx_http_uwsgi_loc_conf_t *uwcf;
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
564 ngx_http_script_len_code_pt lcode;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
565
3546
3a9fca8cbdfc simplify binary little endian length processing
Igor Sysoev <igor@sysoev.ru>
parents: 3545
diff changeset
566 len = 0;
3566
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
567 header_params = 0;
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
568 ignored = NULL;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
569
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
570 uwcf = ngx_http_get_module_loc_conf(r, ngx_http_uwsgi_module);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
571
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
572 if (uwcf->params_len) {
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
573 ngx_memzero(&le, sizeof(ngx_http_script_engine_t));
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
574
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
575 ngx_http_script_flush_no_cacheable_variables(r, uwcf->flushes);
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
576 le.flushed = 1;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
577
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
578 le.ip = uwcf->params_len->elts;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
579 le.request = r;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
580
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
581 while (*(uintptr_t *) le.ip) {
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
582
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
583 lcode = *(ngx_http_script_len_code_pt *) le.ip;
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
584 key_len = lcode(&le);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
585
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
586 for (val_len = 0; *(uintptr_t *) le.ip; val_len += lcode (&le)) {
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
587 lcode = *(ngx_http_script_len_code_pt *) le.ip;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
588 }
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
589 le.ip += sizeof(uintptr_t);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
590
3546
3a9fca8cbdfc simplify binary little endian length processing
Igor Sysoev <igor@sysoev.ru>
parents: 3545
diff changeset
591 len += 2 + key_len + 2 + val_len;
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
592 }
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
593 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
594
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
595 if (uwcf->upstream.pass_request_headers) {
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
596
3566
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
597 allocated = 0;
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
598 lowcase_key = NULL;
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
599
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
600 if (uwcf->header_params) {
4050
36d2cd2e361d Merge of r4016:
Igor Sysoev <igor@sysoev.ru>
parents: 4045
diff changeset
601 n = 0;
36d2cd2e361d Merge of r4016:
Igor Sysoev <igor@sysoev.ru>
parents: 4045
diff changeset
602 part = &r->headers_in.headers.part;
36d2cd2e361d Merge of r4016:
Igor Sysoev <igor@sysoev.ru>
parents: 4045
diff changeset
603
36d2cd2e361d Merge of r4016:
Igor Sysoev <igor@sysoev.ru>
parents: 4045
diff changeset
604 while (part) {
36d2cd2e361d Merge of r4016:
Igor Sysoev <igor@sysoev.ru>
parents: 4045
diff changeset
605 n += part->nelts;
36d2cd2e361d Merge of r4016:
Igor Sysoev <igor@sysoev.ru>
parents: 4045
diff changeset
606 part = part->next;
36d2cd2e361d Merge of r4016:
Igor Sysoev <igor@sysoev.ru>
parents: 4045
diff changeset
607 }
36d2cd2e361d Merge of r4016:
Igor Sysoev <igor@sysoev.ru>
parents: 4045
diff changeset
608
36d2cd2e361d Merge of r4016:
Igor Sysoev <igor@sysoev.ru>
parents: 4045
diff changeset
609 ignored = ngx_palloc(r->pool, n * sizeof(void *));
3566
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
610 if (ignored == NULL) {
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
611 return NGX_ERROR;
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
612 }
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
613 }
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
614
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
615 part = &r->headers_in.headers.part;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
616 header = part->elts;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
617
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
618 for (i = 0; /* void */ ; i++) {
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
619
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
620 if (i >= part->nelts) {
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
621 if (part->next == NULL) {
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
622 break;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
623 }
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
624
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
625 part = part->next;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
626 header = part->elts;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
627 i = 0;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
628 }
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
629
3566
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
630 if (uwcf->header_params) {
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
631 if (allocated < header[i].key.len) {
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
632 allocated = header[i].key.len + 16;
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
633 lowcase_key = ngx_pnalloc(r->pool, allocated);
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
634 if (lowcase_key == NULL) {
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
635 return NGX_ERROR;
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
636 }
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
637 }
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
638
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
639 hash = 0;
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
640
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
641 for (n = 0; n < header[i].key.len; n++) {
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
642 ch = header[i].key.data[n];
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
643
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
644 if (ch >= 'A' && ch <= 'Z') {
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
645 ch |= 0x20;
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
646
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
647 } else if (ch == '-') {
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
648 ch = '_';
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
649 }
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
650
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
651 hash = ngx_hash(hash, ch);
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
652 lowcase_key[n] = ch;
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
653 }
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
654
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
655 if (ngx_hash_find(&uwcf->headers_hash, hash, lowcase_key, n)) {
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
656 ignored[header_params++] = &header[i];
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
657 continue;
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
658 }
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
659 }
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
660
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
661 len += 2 + sizeof("HTTP_") - 1 + header[i].key.len
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
662 + 2 + header[i].value.len;
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
663 }
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
664 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
665
3555
bc734cf061b0 improve uwsgi_string processing
Igor Sysoev <igor@sysoev.ru>
parents: 3554
diff changeset
666 len += uwcf->uwsgi_string.len;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
667
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
668 #if 0
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
669 /* allow custom uwsgi packet */
3546
3a9fca8cbdfc simplify binary little endian length processing
Igor Sysoev <igor@sysoev.ru>
parents: 3545
diff changeset
670 if (len > 0 && len < 2) {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
671 ngx_log_error (NGX_LOG_ALERT, r->connection->log, 0,
3546
3a9fca8cbdfc simplify binary little endian length processing
Igor Sysoev <igor@sysoev.ru>
parents: 3545
diff changeset
672 "uwsgi request is too little: %uz", len);
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
673 return NGX_ERROR;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
674 }
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
675 #endif
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
676
3546
3a9fca8cbdfc simplify binary little endian length processing
Igor Sysoev <igor@sysoev.ru>
parents: 3545
diff changeset
677 b = ngx_create_temp_buf(r->pool, len + 4);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
678 if (b == NULL) {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
679 return NGX_ERROR;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
680 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
681
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
682 cl = ngx_alloc_chain_link(r->pool);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
683 if (cl == NULL) {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
684 return NGX_ERROR;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
685 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
686
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
687 cl->buf = b;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
688
3552
40eba0271b1d improve uwsgi_modifierX processing:
Igor Sysoev <igor@sysoev.ru>
parents: 3551
diff changeset
689 *b->last++ = (u_char) uwcf->modifier1;
3546
3a9fca8cbdfc simplify binary little endian length processing
Igor Sysoev <igor@sysoev.ru>
parents: 3545
diff changeset
690 *b->last++ = (u_char) (len & 0xff);
3a9fca8cbdfc simplify binary little endian length processing
Igor Sysoev <igor@sysoev.ru>
parents: 3545
diff changeset
691 *b->last++ = (u_char) ((len >> 8) & 0xff);
3552
40eba0271b1d improve uwsgi_modifierX processing:
Igor Sysoev <igor@sysoev.ru>
parents: 3551
diff changeset
692 *b->last++ = (u_char) uwcf->modifier2;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
693
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
694 if (uwcf->params_len) {
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
695 ngx_memzero(&e, sizeof(ngx_http_script_engine_t));
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
696
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
697 e.ip = uwcf->params->elts;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
698 e.pos = b->last;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
699 e.request = r;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
700 e.flushed = 1;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
701
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
702 le.ip = uwcf->params_len->elts;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
703
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
704 while (*(uintptr_t *) le.ip) {
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
705
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
706 lcode = *(ngx_http_script_len_code_pt *) le.ip;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
707 key_len = (u_char) lcode (&le);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
708
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
709 for (val_len = 0; *(uintptr_t *) le.ip; val_len += lcode(&le)) {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
710 lcode = *(ngx_http_script_len_code_pt *) le.ip;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
711 }
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
712 le.ip += sizeof(uintptr_t);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
713
3546
3a9fca8cbdfc simplify binary little endian length processing
Igor Sysoev <igor@sysoev.ru>
parents: 3545
diff changeset
714 *e.pos++ = (u_char) (key_len & 0xff);
3a9fca8cbdfc simplify binary little endian length processing
Igor Sysoev <igor@sysoev.ru>
parents: 3545
diff changeset
715 *e.pos++ = (u_char) ((key_len >> 8) & 0xff);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
716
3547
c2da61796410 remove useless copy: key name should be just copied before value length
Igor Sysoev <igor@sysoev.ru>
parents: 3546
diff changeset
717 code = *(ngx_http_script_code_pt *) e.ip;
c2da61796410 remove useless copy: key name should be just copied before value length
Igor Sysoev <igor@sysoev.ru>
parents: 3546
diff changeset
718 code((ngx_http_script_engine_t *) & e);
c2da61796410 remove useless copy: key name should be just copied before value length
Igor Sysoev <igor@sysoev.ru>
parents: 3546
diff changeset
719
c2da61796410 remove useless copy: key name should be just copied before value length
Igor Sysoev <igor@sysoev.ru>
parents: 3546
diff changeset
720 *e.pos++ = (u_char) (val_len & 0xff);
c2da61796410 remove useless copy: key name should be just copied before value length
Igor Sysoev <igor@sysoev.ru>
parents: 3546
diff changeset
721 *e.pos++ = (u_char) ((val_len >> 8) & 0xff);
c2da61796410 remove useless copy: key name should be just copied before value length
Igor Sysoev <igor@sysoev.ru>
parents: 3546
diff changeset
722
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
723 while (*(uintptr_t *) e.ip) {
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
724 code = *(ngx_http_script_code_pt *) e.ip;
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
725 code((ngx_http_script_engine_t *) & e);
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
726 }
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
727
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
728 e.ip += sizeof(uintptr_t);
3564
3da009cc90f3 add uwsgi_param and client request headers debug logging
Igor Sysoev <igor@sysoev.ru>
parents: 3556
diff changeset
729
3da009cc90f3 add uwsgi_param and client request headers debug logging
Igor Sysoev <igor@sysoev.ru>
parents: 3556
diff changeset
730 ngx_log_debug4(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
3da009cc90f3 add uwsgi_param and client request headers debug logging
Igor Sysoev <igor@sysoev.ru>
parents: 3556
diff changeset
731 "uwsgi param: \"%*s: %*s\"",
3da009cc90f3 add uwsgi_param and client request headers debug logging
Igor Sysoev <igor@sysoev.ru>
parents: 3556
diff changeset
732 key_len, e.pos - (key_len + 2 + val_len),
3da009cc90f3 add uwsgi_param and client request headers debug logging
Igor Sysoev <igor@sysoev.ru>
parents: 3556
diff changeset
733 val_len, e.pos - val_len);
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
734 }
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
735
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
736 b->last = e.pos;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
737 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
738
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
739 if (uwcf->upstream.pass_request_headers) {
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
740
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
741 part = &r->headers_in.headers.part;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
742 header = part->elts;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
743
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
744 for (i = 0; /* void */ ; i++) {
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
745
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
746 if (i >= part->nelts) {
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
747 if (part->next == NULL) {
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
748 break;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
749 }
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
750
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
751 part = part->next;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
752 header = part->elts;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
753 i = 0;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
754 }
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
755
3566
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
756 for (n = 0; n < header_params; n++) {
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
757 if (&header[i] == ignored[n]) {
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
758 goto next;
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
759 }
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
760 }
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
761
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
762 key_len = sizeof("HTTP_") - 1 + header[i].key.len;
3546
3a9fca8cbdfc simplify binary little endian length processing
Igor Sysoev <igor@sysoev.ru>
parents: 3545
diff changeset
763 *b->last++ = (u_char) (key_len & 0xff);
3a9fca8cbdfc simplify binary little endian length processing
Igor Sysoev <igor@sysoev.ru>
parents: 3545
diff changeset
764 *b->last++ = (u_char) ((key_len >> 8) & 0xff);
3a9fca8cbdfc simplify binary little endian length processing
Igor Sysoev <igor@sysoev.ru>
parents: 3545
diff changeset
765
3566
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
766 b->last = ngx_cpymem(b->last, "HTTP_", sizeof("HTTP_") - 1);
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
767 for (n = 0; n < header[i].key.len; n++) {
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
768 ch = header[i].key.data[n];
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
769
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
770 if (ch >= 'a' && ch <= 'z') {
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
771 ch &= ~0x20;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
772
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
773 } else if (ch == '-') {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
774 ch = '_';
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
775 }
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
776
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
777 *b->last++ = ch;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
778 }
3546
3a9fca8cbdfc simplify binary little endian length processing
Igor Sysoev <igor@sysoev.ru>
parents: 3545
diff changeset
779
3a9fca8cbdfc simplify binary little endian length processing
Igor Sysoev <igor@sysoev.ru>
parents: 3545
diff changeset
780 val_len = header[i].value.len;
3a9fca8cbdfc simplify binary little endian length processing
Igor Sysoev <igor@sysoev.ru>
parents: 3545
diff changeset
781 *b->last++ = (u_char) (val_len & 0xff);
3a9fca8cbdfc simplify binary little endian length processing
Igor Sysoev <igor@sysoev.ru>
parents: 3545
diff changeset
782 *b->last++ = (u_char) ((val_len >> 8) & 0xff);
3a9fca8cbdfc simplify binary little endian length processing
Igor Sysoev <igor@sysoev.ru>
parents: 3545
diff changeset
783 b->last = ngx_copy(b->last, header[i].value.data, val_len);
3564
3da009cc90f3 add uwsgi_param and client request headers debug logging
Igor Sysoev <igor@sysoev.ru>
parents: 3556
diff changeset
784
3da009cc90f3 add uwsgi_param and client request headers debug logging
Igor Sysoev <igor@sysoev.ru>
parents: 3556
diff changeset
785 ngx_log_debug4(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
3da009cc90f3 add uwsgi_param and client request headers debug logging
Igor Sysoev <igor@sysoev.ru>
parents: 3556
diff changeset
786 "uwsgi param: \"%*s: %*s\"",
3da009cc90f3 add uwsgi_param and client request headers debug logging
Igor Sysoev <igor@sysoev.ru>
parents: 3556
diff changeset
787 key_len, b->last - (key_len + 2 + val_len),
3da009cc90f3 add uwsgi_param and client request headers debug logging
Igor Sysoev <igor@sysoev.ru>
parents: 3556
diff changeset
788 val_len, b->last - val_len);
3566
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
789 next:
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
790
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
791 continue;
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
792 }
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
793 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
794
3555
bc734cf061b0 improve uwsgi_string processing
Igor Sysoev <igor@sysoev.ru>
parents: 3554
diff changeset
795 b->last = ngx_copy(b->last, uwcf->uwsgi_string.data,
bc734cf061b0 improve uwsgi_string processing
Igor Sysoev <igor@sysoev.ru>
parents: 3554
diff changeset
796 uwcf->uwsgi_string.len);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
797
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
798 if (uwcf->upstream.pass_request_body) {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
799 body = r->upstream->request_bufs;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
800 r->upstream->request_bufs = cl;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
801
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
802 while (body) {
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
803 b = ngx_alloc_buf(r->pool);
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
804 if (b == NULL) {
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
805 return NGX_ERROR;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
806 }
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
807
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
808 ngx_memcpy(b, body->buf, sizeof(ngx_buf_t));
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
809
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
810 cl->next = ngx_alloc_chain_link(r->pool);
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
811 if (cl->next == NULL) {
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
812 return NGX_ERROR;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
813 }
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
814
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
815 cl = cl->next;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
816 cl->buf = b;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
817
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
818 body = body->next;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
819 }
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
820
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
821 } else {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
822 r->upstream->request_bufs = cl;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
823 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
824
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
825 cl->next = NULL;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
826
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
827 return NGX_OK;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
828 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
829
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
830
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
831 static ngx_int_t
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
832 ngx_http_uwsgi_reinit_request(ngx_http_request_t *r)
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
833 {
3629
a2a3378824ba fix r3628
Igor Sysoev <igor@sysoev.ru>
parents: 3628
diff changeset
834 ngx_http_status_t *status;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
835
3629
a2a3378824ba fix r3628
Igor Sysoev <igor@sysoev.ru>
parents: 3628
diff changeset
836 status = ngx_http_get_module_ctx(r, ngx_http_uwsgi_module);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
837
3629
a2a3378824ba fix r3628
Igor Sysoev <igor@sysoev.ru>
parents: 3628
diff changeset
838 if (status == NULL) {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
839 return NGX_OK;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
840 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
841
3629
a2a3378824ba fix r3628
Igor Sysoev <igor@sysoev.ru>
parents: 3628
diff changeset
842 status->code = 0;
a2a3378824ba fix r3628
Igor Sysoev <igor@sysoev.ru>
parents: 3628
diff changeset
843 status->count = 0;
a2a3378824ba fix r3628
Igor Sysoev <igor@sysoev.ru>
parents: 3628
diff changeset
844 status->start = NULL;
a2a3378824ba fix r3628
Igor Sysoev <igor@sysoev.ru>
parents: 3628
diff changeset
845 status->end = NULL;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
846
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
847 r->upstream->process_header = ngx_http_uwsgi_process_status_line;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
848
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
849 return NGX_OK;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
850 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
851
3623
633ef29c9881 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 3611
diff changeset
852
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
853 static ngx_int_t
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
854 ngx_http_uwsgi_process_status_line(ngx_http_request_t *r)
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
855 {
3628
cf47471a9eda make code more obviuos
Igor Sysoev <igor@sysoev.ru>
parents: 3627
diff changeset
856 size_t len;
3623
633ef29c9881 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 3611
diff changeset
857 ngx_int_t rc;
3630
b5819529738a style fix
Igor Sysoev <igor@sysoev.ru>
parents: 3629
diff changeset
858 ngx_http_status_t *status;
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
859 ngx_http_upstream_t *u;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
860
3627
9061fdb2ed8c use ngx_http_parse_status_line()
Igor Sysoev <igor@sysoev.ru>
parents: 3625
diff changeset
861 status = ngx_http_get_module_ctx(r, ngx_http_uwsgi_module);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
862
3627
9061fdb2ed8c use ngx_http_parse_status_line()
Igor Sysoev <igor@sysoev.ru>
parents: 3625
diff changeset
863 if (status == NULL) {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
864 return NGX_ERROR;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
865 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
866
3627
9061fdb2ed8c use ngx_http_parse_status_line()
Igor Sysoev <igor@sysoev.ru>
parents: 3625
diff changeset
867 u = r->upstream;
9061fdb2ed8c use ngx_http_parse_status_line()
Igor Sysoev <igor@sysoev.ru>
parents: 3625
diff changeset
868
9061fdb2ed8c use ngx_http_parse_status_line()
Igor Sysoev <igor@sysoev.ru>
parents: 3625
diff changeset
869 rc = ngx_http_parse_status_line(r, &u->buffer, status);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
870
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
871 if (rc == NGX_AGAIN) {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
872 return rc;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
873 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
874
3627
9061fdb2ed8c use ngx_http_parse_status_line()
Igor Sysoev <igor@sysoev.ru>
parents: 3625
diff changeset
875 if (rc == NGX_ERROR) {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
876 r->http_version = NGX_HTTP_VERSION_9;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
877
3624
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
878 u->process_header = ngx_http_uwsgi_process_header;
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
879
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
880 return ngx_http_uwsgi_process_header(r);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
881 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
882
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
883 if (u->state) {
3627
9061fdb2ed8c use ngx_http_parse_status_line()
Igor Sysoev <igor@sysoev.ru>
parents: 3625
diff changeset
884 u->state->status = status->code;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
885 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
886
3627
9061fdb2ed8c use ngx_http_parse_status_line()
Igor Sysoev <igor@sysoev.ru>
parents: 3625
diff changeset
887 u->headers_in.status_n = status->code;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
888
3628
cf47471a9eda make code more obviuos
Igor Sysoev <igor@sysoev.ru>
parents: 3627
diff changeset
889 len = status->end - status->start;
cf47471a9eda make code more obviuos
Igor Sysoev <igor@sysoev.ru>
parents: 3627
diff changeset
890 u->headers_in.status_line.len = len;
cf47471a9eda make code more obviuos
Igor Sysoev <igor@sysoev.ru>
parents: 3627
diff changeset
891
cf47471a9eda make code more obviuos
Igor Sysoev <igor@sysoev.ru>
parents: 3627
diff changeset
892 u->headers_in.status_line.data = ngx_pnalloc(r->pool, len);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
893 if (u->headers_in.status_line.data == NULL) {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
894 return NGX_ERROR;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
895 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
896
3628
cf47471a9eda make code more obviuos
Igor Sysoev <igor@sysoev.ru>
parents: 3627
diff changeset
897 ngx_memcpy(u->headers_in.status_line.data, status->start, len);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
898
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
899 ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
900 "http uwsgi status %ui \"%V\"",
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
901 u->headers_in.status_n, &u->headers_in.status_line);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
902
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
903 u->process_header = ngx_http_uwsgi_process_header;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
904
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
905 return ngx_http_uwsgi_process_header(r);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
906 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
907
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
908
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
909 static ngx_int_t
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
910 ngx_http_uwsgi_process_header(ngx_http_request_t *r)
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
911 {
3624
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
912 ngx_str_t *status_line;
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
913 ngx_int_t rc, status;
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
914 ngx_table_elt_t *h;
3624
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
915 ngx_http_upstream_t *u;
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
916 ngx_http_upstream_header_t *hh;
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
917 ngx_http_upstream_main_conf_t *umcf;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
918
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
919 umcf = ngx_http_get_module_main_conf(r, ngx_http_upstream_module);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
920
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
921 for ( ;; ) {
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
922
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
923 rc = ngx_http_parse_header_line(r, &r->upstream->buffer, 1);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
924
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
925 if (rc == NGX_OK) {
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
926
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
927 /* a header line has been parsed successfully */
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
928
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
929 h = ngx_list_push(&r->upstream->headers_in.headers);
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
930 if (h == NULL) {
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
931 return NGX_ERROR;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
932 }
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
933
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
934 h->hash = r->header_hash;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
935
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
936 h->key.len = r->header_name_end - r->header_name_start;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
937 h->value.len = r->header_end - r->header_start;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
938
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
939 h->key.data = ngx_pnalloc(r->pool,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
940 h->key.len + 1 + h->value.len + 1
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
941 + h->key.len);
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
942 if (h->key.data == NULL) {
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
943 return NGX_ERROR;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
944 }
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
945
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
946 h->value.data = h->key.data + h->key.len + 1;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
947 h->lowcase_key = h->key.data + h->key.len + 1 + h->value.len + 1;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
948
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
949 ngx_cpystrn(h->key.data, r->header_name_start, h->key.len + 1);
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
950 ngx_cpystrn(h->value.data, r->header_start, h->value.len + 1);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
951
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
952 if (h->key.len == r->lowcase_index) {
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
953 ngx_memcpy(h->lowcase_key, r->lowcase_header, h->key.len);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
954
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
955 } else {
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
956 ngx_strlow(h->lowcase_key, h->key.data, h->key.len);
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
957 }
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
958
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
959 hh = ngx_hash_find(&umcf->headers_in_hash, h->hash,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
960 h->lowcase_key, h->key.len);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
961
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
962 if (hh && hh->handler(r, h, hh->offset) != NGX_OK) {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
963 return NGX_ERROR;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
964 }
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
965
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
966 ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
967 "http uwsgi header: \"%V: %V\"", &h->key, &h->value);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
968
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
969 continue;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
970 }
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
971
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
972 if (rc == NGX_HTTP_PARSE_HEADER_DONE) {
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
973
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
974 /* a whole header has been parsed successfully */
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
975
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
976 ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
977 "http uwsgi header done");
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
978
3624
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
979 if (r->http_version > NGX_HTTP_VERSION_9) {
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
980 return NGX_OK;
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
981 }
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
982
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
983 u = r->upstream;
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
984
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
985 if (u->headers_in.status) {
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
986 status_line = &u->headers_in.status->value;
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
987
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
988 status = ngx_atoi(status_line->data, 3);
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
989 if (status == NGX_ERROR) {
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
990 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
991 "upstream sent invalid status \"%V\"",
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
992 status_line);
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
993 return NGX_HTTP_UPSTREAM_INVALID_HEADER;
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
994 }
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
995
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
996 r->http_version = NGX_HTTP_VERSION_10;
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
997 u->headers_in.status_n = status;
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
998 u->headers_in.status_line = *status_line;
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
999
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
1000 } else if (u->headers_in.location) {
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
1001 r->http_version = NGX_HTTP_VERSION_10;
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
1002 u->headers_in.status_n = 302;
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
1003 ngx_str_set(&u->headers_in.status_line,
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
1004 "302 Moved Temporarily");
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
1005
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
1006 } else {
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
1007 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
1008 "upstream sent neither valid HTTP/1.0 header "
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
1009 "nor \"Status\" header line");
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
1010 u->headers_in.status_n = 200;
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
1011 ngx_str_set(&u->headers_in.status_line, "200 OK");
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
1012 }
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
1013
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
1014 if (u->state) {
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
1015 u->state->status = u->headers_in.status_n;
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
1016 }
3b7e8fa31a00 support CGI-style response
Igor Sysoev <igor@sysoev.ru>
parents: 3623
diff changeset
1017
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1018 return NGX_OK;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1019 }
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1020
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1021 if (rc == NGX_AGAIN) {
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1022 return NGX_AGAIN;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1023 }
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1024
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1025 /* there was error while a header line parsing */
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1026
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1027 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1028 "upstream sent invalid header");
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1029
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1030 return NGX_HTTP_UPSTREAM_INVALID_HEADER;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1031 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1032 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1033
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1034
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1035 static void
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1036 ngx_http_uwsgi_abort_request(ngx_http_request_t *r)
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1037 {
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1038 ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1039 "abort http uwsgi request");
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1040
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1041 return;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1042 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1043
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1044
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1045 static void
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1046 ngx_http_uwsgi_finalize_request(ngx_http_request_t *r, ngx_int_t rc)
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1047 {
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1048 ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1049 "finalize http uwsgi request");
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1050
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1051 return;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1052 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1053
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1054
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1055 static void *
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1056 ngx_http_uwsgi_create_loc_conf(ngx_conf_t *cf)
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1057 {
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1058 ngx_http_uwsgi_loc_conf_t *conf;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1059
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1060 conf = ngx_pcalloc(cf->pool, sizeof(ngx_http_uwsgi_loc_conf_t));
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1061 if (conf == NULL) {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1062 return NULL;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1063 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1064
3552
40eba0271b1d improve uwsgi_modifierX processing:
Igor Sysoev <igor@sysoev.ru>
parents: 3551
diff changeset
1065 conf->modifier1 = NGX_CONF_UNSET_UINT;
40eba0271b1d improve uwsgi_modifierX processing:
Igor Sysoev <igor@sysoev.ru>
parents: 3551
diff changeset
1066 conf->modifier2 = NGX_CONF_UNSET_UINT;
40eba0271b1d improve uwsgi_modifierX processing:
Igor Sysoev <igor@sysoev.ru>
parents: 3551
diff changeset
1067
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1068 conf->upstream.store = NGX_CONF_UNSET;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1069 conf->upstream.store_access = NGX_CONF_UNSET_UINT;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1070 conf->upstream.buffering = NGX_CONF_UNSET;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1071 conf->upstream.ignore_client_abort = NGX_CONF_UNSET;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1072
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1073 conf->upstream.connect_timeout = NGX_CONF_UNSET_MSEC;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1074 conf->upstream.send_timeout = NGX_CONF_UNSET_MSEC;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1075 conf->upstream.read_timeout = NGX_CONF_UNSET_MSEC;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1076
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1077 conf->upstream.send_lowat = NGX_CONF_UNSET_SIZE;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1078 conf->upstream.buffer_size = NGX_CONF_UNSET_SIZE;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1079
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1080 conf->upstream.busy_buffers_size_conf = NGX_CONF_UNSET_SIZE;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1081 conf->upstream.max_temp_file_size_conf = NGX_CONF_UNSET_SIZE;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1082 conf->upstream.temp_file_write_size_conf = NGX_CONF_UNSET_SIZE;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1083
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1084 conf->upstream.pass_request_headers = NGX_CONF_UNSET;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1085 conf->upstream.pass_request_body = NGX_CONF_UNSET;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1086
3568
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1087 #if (NGX_HTTP_CACHE)
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1088 conf->upstream.cache = NGX_CONF_UNSET_PTR;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1089 conf->upstream.cache_min_uses = NGX_CONF_UNSET_UINT;
3699
b0a0686a85bb proxy_cache_pass, fastcgi_cache_bypass, uwsgi_cache_bypass, scgi_cache_bypass
Igor Sysoev <igor@sysoev.ru>
parents: 3693
diff changeset
1090 conf->upstream.cache_bypass = NGX_CONF_UNSET_PTR;
3693
e3bcc2f4c418 fix scgi_no_cache and uwsgi_no_cache initialization
Igor Sysoev <igor@sysoev.ru>
parents: 3692
diff changeset
1091 conf->upstream.no_cache = NGX_CONF_UNSET_PTR;
3568
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1092 conf->upstream.cache_valid = NGX_CONF_UNSET_PTR;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1093 #endif
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1094
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1095 conf->upstream.hide_headers = NGX_CONF_UNSET_PTR;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1096 conf->upstream.pass_headers = NGX_CONF_UNSET_PTR;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1097
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1098 conf->upstream.intercept_errors = NGX_CONF_UNSET;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1099
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1100 /* "uwsgi_cyclic_temp_file" is disabled */
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1101 conf->upstream.cyclic_temp_file = 0;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1102
4252
94049ec3eeda Merging r4158:
Igor Sysoev <igor@sysoev.ru>
parents: 4050
diff changeset
1103 conf->upstream.change_buffering = 1;
94049ec3eeda Merging r4158:
Igor Sysoev <igor@sysoev.ru>
parents: 4050
diff changeset
1104
4045
2d062c031fff Merge of r3964, r3977, r3978:
Igor Sysoev <igor@sysoev.ru>
parents: 3879
diff changeset
1105 ngx_str_set(&conf->upstream.module, "uwsgi");
2d062c031fff Merge of r3964, r3977, r3978:
Igor Sysoev <igor@sysoev.ru>
parents: 3879
diff changeset
1106
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1107 return conf;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1108 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1109
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1110
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1111 static char *
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1112 ngx_http_uwsgi_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1113 {
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1114 ngx_http_uwsgi_loc_conf_t *prev = parent;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1115 ngx_http_uwsgi_loc_conf_t *conf = child;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1116
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1117 size_t size;
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1118 ngx_hash_init_t hash;
3731
72cc5b789021 inherit proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass inside
Igor Sysoev <igor@sysoev.ru>
parents: 3729
diff changeset
1119 ngx_http_core_loc_conf_t *clcf;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1120
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1121 if (conf->upstream.store != 0) {
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1122 ngx_conf_merge_value(conf->upstream.store, prev->upstream.store, 0);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1123
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1124 if (conf->upstream.store_lengths == NULL) {
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1125 conf->upstream.store_lengths = prev->upstream.store_lengths;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1126 conf->upstream.store_values = prev->upstream.store_values;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1127 }
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1128 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1129
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1130 ngx_conf_merge_uint_value(conf->upstream.store_access,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1131 prev->upstream.store_access, 0600);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1132
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1133 ngx_conf_merge_value(conf->upstream.buffering,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1134 prev->upstream.buffering, 1);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1135
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1136 ngx_conf_merge_value(conf->upstream.ignore_client_abort,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1137 prev->upstream.ignore_client_abort, 0);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1138
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1139 ngx_conf_merge_msec_value(conf->upstream.connect_timeout,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1140 prev->upstream.connect_timeout, 60000);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1141
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1142 ngx_conf_merge_msec_value(conf->upstream.send_timeout,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1143 prev->upstream.send_timeout, 60000);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1144
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1145 ngx_conf_merge_msec_value(conf->upstream.read_timeout,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1146 prev->upstream.read_timeout, 60000);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1147
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1148 ngx_conf_merge_size_value(conf->upstream.send_lowat,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1149 prev->upstream.send_lowat, 0);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1150
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1151 ngx_conf_merge_size_value(conf->upstream.buffer_size,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1152 prev->upstream.buffer_size,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1153 (size_t) ngx_pagesize);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1154
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1155
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1156 ngx_conf_merge_bufs_value(conf->upstream.bufs, prev->upstream.bufs,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1157 8, ngx_pagesize);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1158
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1159 if (conf->upstream.bufs.num < 2) {
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1160 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1161 "there must be at least 2 \"uwsgi_buffers\"");
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1162 return NGX_CONF_ERROR;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1163 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1164
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1165
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1166 size = conf->upstream.buffer_size;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1167 if (size < conf->upstream.bufs.size) {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1168 size = conf->upstream.bufs.size;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1169 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1170
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1171
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1172 ngx_conf_merge_size_value(conf->upstream.busy_buffers_size_conf,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1173 prev->upstream.busy_buffers_size_conf,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1174 NGX_CONF_UNSET_SIZE);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1175
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1176 if (conf->upstream.busy_buffers_size_conf == NGX_CONF_UNSET_SIZE) {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1177 conf->upstream.busy_buffers_size = 2 * size;
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1178 } else {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1179 conf->upstream.busy_buffers_size =
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1180 conf->upstream.busy_buffers_size_conf;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1181 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1182
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1183 if (conf->upstream.busy_buffers_size < size) {
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1184 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1185 "\"uwsgi_busy_buffers_size\" must be equal or bigger "
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1186 "than maximum of the value of \"uwsgi_buffer_size\" and "
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1187 "one of the \"uwsgi_buffers\"");
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1188
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1189 return NGX_CONF_ERROR;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1190 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1191
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1192 if (conf->upstream.busy_buffers_size
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1193 > (conf->upstream.bufs.num - 1) * conf->upstream.bufs.size)
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1194 {
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1195 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1196 "\"uwsgi_busy_buffers_size\" must be less than "
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1197 "the size of all \"uwsgi_buffers\" minus one buffer");
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1198
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1199 return NGX_CONF_ERROR;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1200 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1201
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1202
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1203 ngx_conf_merge_size_value(conf->upstream.temp_file_write_size_conf,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1204 prev->upstream.temp_file_write_size_conf,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1205 NGX_CONF_UNSET_SIZE);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1206
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1207 if (conf->upstream.temp_file_write_size_conf == NGX_CONF_UNSET_SIZE) {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1208 conf->upstream.temp_file_write_size = 2 * size;
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1209 } else {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1210 conf->upstream.temp_file_write_size =
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1211 conf->upstream.temp_file_write_size_conf;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1212 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1213
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1214 if (conf->upstream.temp_file_write_size < size) {
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1215 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1216 "\"uwsgi_temp_file_write_size\" must be equal or bigger than "
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1217 "maximum of the value of \"uwsgi_buffer_size\" and "
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1218 "one of the \"uwsgi_buffers\"");
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1219
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1220 return NGX_CONF_ERROR;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1221 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1222
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1223
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1224 ngx_conf_merge_size_value(conf->upstream.max_temp_file_size_conf,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1225 prev->upstream.max_temp_file_size_conf,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1226 NGX_CONF_UNSET_SIZE);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1227
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1228 if (conf->upstream.max_temp_file_size_conf == NGX_CONF_UNSET_SIZE) {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1229 conf->upstream.max_temp_file_size = 1024 * 1024 * 1024;
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1230 } else {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1231 conf->upstream.max_temp_file_size =
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1232 conf->upstream.max_temp_file_size_conf;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1233 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1234
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1235 if (conf->upstream.max_temp_file_size != 0
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1236 && conf->upstream.max_temp_file_size < size) {
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1237 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1238 "\"uwsgi_max_temp_file_size\" must be equal to zero to disable "
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1239 "the temporary files usage or must be equal or bigger than "
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1240 "maximum of the value of \"uwsgi_buffer_size\" and "
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1241 "one of the \"uwsgi_buffers\"");
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1242
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1243 return NGX_CONF_ERROR;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1244 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1245
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1246
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1247 ngx_conf_merge_bitmask_value(conf->upstream.ignore_headers,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1248 prev->upstream.ignore_headers,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1249 NGX_CONF_BITMASK_SET);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1250
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1251
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1252 ngx_conf_merge_bitmask_value(conf->upstream.next_upstream,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1253 prev->upstream.next_upstream,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1254 (NGX_CONF_BITMASK_SET
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1255 |NGX_HTTP_UPSTREAM_FT_ERROR
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1256 |NGX_HTTP_UPSTREAM_FT_TIMEOUT));
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1257
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1258 if (conf->upstream.next_upstream & NGX_HTTP_UPSTREAM_FT_OFF) {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1259 conf->upstream.next_upstream = NGX_CONF_BITMASK_SET
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1260 |NGX_HTTP_UPSTREAM_FT_OFF;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1261 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1262
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1263 if (ngx_conf_merge_path_value(cf, &conf->upstream.temp_path,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1264 prev->upstream.temp_path,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1265 &ngx_http_uwsgi_temp_path)
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1266 != NGX_OK)
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1267 {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1268 return NGX_CONF_ERROR;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1269 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1270
3568
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1271 #if (NGX_HTTP_CACHE)
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1272
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1273 ngx_conf_merge_ptr_value(conf->upstream.cache,
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1274 prev->upstream.cache, NULL);
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1275
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1276 if (conf->upstream.cache && conf->upstream.cache->data == NULL) {
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1277 ngx_shm_zone_t *shm_zone;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1278
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1279 shm_zone = conf->upstream.cache;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1280
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1281 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1282 "\"uwsgi_cache\" zone \"%V\" is unknown",
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1283 &shm_zone->shm.name);
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1284
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1285 return NGX_CONF_ERROR;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1286 }
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1287
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1288 ngx_conf_merge_uint_value(conf->upstream.cache_min_uses,
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1289 prev->upstream.cache_min_uses, 1);
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1290
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1291 ngx_conf_merge_bitmask_value(conf->upstream.cache_use_stale,
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1292 prev->upstream.cache_use_stale,
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1293 (NGX_CONF_BITMASK_SET
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1294 |NGX_HTTP_UPSTREAM_FT_OFF));
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1295
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1296 if (conf->upstream.cache_use_stale & NGX_HTTP_UPSTREAM_FT_OFF) {
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1297 conf->upstream.cache_use_stale = NGX_CONF_BITMASK_SET
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1298 |NGX_HTTP_UPSTREAM_FT_OFF;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1299 }
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1300
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1301 if (conf->upstream.cache_methods == 0) {
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1302 conf->upstream.cache_methods = prev->upstream.cache_methods;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1303 }
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1304
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1305 conf->upstream.cache_methods |= NGX_HTTP_GET|NGX_HTTP_HEAD;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1306
3699
b0a0686a85bb proxy_cache_pass, fastcgi_cache_bypass, uwsgi_cache_bypass, scgi_cache_bypass
Igor Sysoev <igor@sysoev.ru>
parents: 3693
diff changeset
1307 ngx_conf_merge_ptr_value(conf->upstream.cache_bypass,
b0a0686a85bb proxy_cache_pass, fastcgi_cache_bypass, uwsgi_cache_bypass, scgi_cache_bypass
Igor Sysoev <igor@sysoev.ru>
parents: 3693
diff changeset
1308 prev->upstream.cache_bypass, NULL);
b0a0686a85bb proxy_cache_pass, fastcgi_cache_bypass, uwsgi_cache_bypass, scgi_cache_bypass
Igor Sysoev <igor@sysoev.ru>
parents: 3693
diff changeset
1309
3568
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1310 ngx_conf_merge_ptr_value(conf->upstream.no_cache,
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1311 prev->upstream.no_cache, NULL);
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1312
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1313 ngx_conf_merge_ptr_value(conf->upstream.cache_valid,
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1314 prev->upstream.cache_valid, NULL);
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1315
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1316 if (conf->cache_key.value.data == NULL) {
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1317 conf->cache_key = prev->cache_key;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1318 }
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1319
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1320 #endif
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1321
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1322 ngx_conf_merge_value(conf->upstream.pass_request_headers,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1323 prev->upstream.pass_request_headers, 1);
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1324 ngx_conf_merge_value(conf->upstream.pass_request_body,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1325 prev->upstream.pass_request_body, 1);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1326
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1327 ngx_conf_merge_value(conf->upstream.intercept_errors,
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1328 prev->upstream.intercept_errors, 0);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1329
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1330 ngx_conf_merge_str_value(conf->uwsgi_string, prev->uwsgi_string, "");
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1331
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1332 hash.max_size = 512;
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1333 hash.bucket_size = ngx_align(64, ngx_cacheline_size);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1334 hash.name = "uwsgi_hide_headers_hash";
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1335
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1336 if (ngx_http_upstream_hide_headers_hash(cf, &conf->upstream,
3670
2728c4e4a9ae do not use a cache headers set to hide
Igor Sysoev <igor@sysoev.ru>
parents: 3667
diff changeset
1337 &prev->upstream, ngx_http_uwsgi_hide_headers, &hash)
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1338 != NGX_OK)
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1339 {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1340 return NGX_CONF_ERROR;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1341 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1342
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1343 if (conf->upstream.upstream == NULL) {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1344 conf->upstream.upstream = prev->upstream.upstream;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1345 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1346
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1347 if (conf->uwsgi_lengths == NULL) {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1348 conf->uwsgi_lengths = prev->uwsgi_lengths;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1349 conf->uwsgi_values = prev->uwsgi_values;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1350 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1351
3731
72cc5b789021 inherit proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass inside
Igor Sysoev <igor@sysoev.ru>
parents: 3729
diff changeset
1352 if (conf->upstream.upstream || conf->uwsgi_lengths) {
72cc5b789021 inherit proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass inside
Igor Sysoev <igor@sysoev.ru>
parents: 3729
diff changeset
1353 clcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_core_module);
72cc5b789021 inherit proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass inside
Igor Sysoev <igor@sysoev.ru>
parents: 3729
diff changeset
1354 if (clcf->handler == NULL && clcf->lmt_excpt) {
72cc5b789021 inherit proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass inside
Igor Sysoev <igor@sysoev.ru>
parents: 3729
diff changeset
1355 clcf->handler = ngx_http_uwsgi_handler;
72cc5b789021 inherit proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass inside
Igor Sysoev <igor@sysoev.ru>
parents: 3729
diff changeset
1356 }
72cc5b789021 inherit proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass inside
Igor Sysoev <igor@sysoev.ru>
parents: 3729
diff changeset
1357 }
72cc5b789021 inherit proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass inside
Igor Sysoev <igor@sysoev.ru>
parents: 3729
diff changeset
1358
3552
40eba0271b1d improve uwsgi_modifierX processing:
Igor Sysoev <igor@sysoev.ru>
parents: 3551
diff changeset
1359 ngx_conf_merge_uint_value(conf->modifier1, prev->modifier1, 0);
40eba0271b1d improve uwsgi_modifierX processing:
Igor Sysoev <igor@sysoev.ru>
parents: 3551
diff changeset
1360 ngx_conf_merge_uint_value(conf->modifier2, prev->modifier2, 0);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1361
4358
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1362 if (ngx_http_uwsgi_merge_params(cf, conf, prev) != NGX_OK) {
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1363 return NGX_CONF_ERROR;
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1364 }
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1365
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1366 return NGX_CONF_OK;
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1367 }
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1368
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1369
4358
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1370 static ngx_int_t
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1371 ngx_http_uwsgi_merge_params(ngx_conf_t *cf, ngx_http_uwsgi_loc_conf_t *conf,
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1372 ngx_http_uwsgi_loc_conf_t *prev)
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1373 {
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1374 u_char *p;
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1375 size_t size;
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1376 uintptr_t *code;
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1377 ngx_uint_t i, nsrc;
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1378 ngx_array_t headers_names;
3568
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1379 #if (NGX_HTTP_CACHE)
4358
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1380 ngx_array_t params_merged;
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1381 #endif
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1382 ngx_keyval_t *src;
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1383 ngx_hash_key_t *hk;
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1384 ngx_hash_init_t hash;
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1385 ngx_http_script_compile_t sc;
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1386 ngx_http_script_copy_code_t *copy;
3568
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1387
4358
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1388 if (conf->params_source == NULL) {
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1389 conf->params_source = prev->params_source;
3568
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1390
4358
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1391 if (prev->headers_hash.buckets
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1392 #if (NGX_HTTP_CACHE)
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1393 && ((conf->upstream.cache == NULL) == (prev->upstream.cache == NULL))
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1394 #endif
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1395 )
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1396 {
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1397 conf->flushes = prev->flushes;
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1398 conf->params_len = prev->params_len;
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1399 conf->params = prev->params;
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1400 conf->headers_hash = prev->headers_hash;
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1401 conf->header_params = prev->header_params;
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1402
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1403 return NGX_OK;
3568
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1404 }
4358
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1405 }
3568
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1406
4358
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1407 if (conf->params_source == NULL
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1408 #if (NGX_HTTP_CACHE)
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1409 && (conf->upstream.cache == NULL)
3568
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1410 #endif
4358
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1411 )
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1412 {
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1413 conf->headers_hash.buckets = (void *) 1;
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1414 return NGX_OK;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1415 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1416
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1417 conf->params_len = ngx_array_create(cf->pool, 64, 1);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1418 if (conf->params_len == NULL) {
4358
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1419 return NGX_ERROR;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1420 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1421
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1422 conf->params = ngx_array_create(cf->pool, 512, 1);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1423 if (conf->params == NULL) {
4358
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1424 return NGX_ERROR;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1425 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1426
3566
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
1427 if (ngx_array_init(&headers_names, cf->temp_pool, 4, sizeof(ngx_hash_key_t))
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
1428 != NGX_OK)
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
1429 {
4358
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1430 return NGX_ERROR;
3566
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
1431 }
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
1432
4358
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1433 if (conf->params_source) {
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1434 src = conf->params_source->elts;
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1435 nsrc = conf->params_source->nelts;
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1436
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1437 } else {
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1438 src = NULL;
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1439 nsrc = 0;
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1440 }
3568
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1441
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1442 #if (NGX_HTTP_CACHE)
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1443
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1444 if (conf->upstream.cache) {
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1445 ngx_keyval_t *h, *s;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1446
4358
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1447 if (ngx_array_init(&params_merged, cf->temp_pool, 4, sizeof(ngx_keyval_t))
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1448 != NGX_OK)
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1449 {
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1450 return NGX_ERROR;
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1451 }
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1452
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1453 for (i = 0; i < nsrc; i++) {
3568
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1454
4358
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1455 s = ngx_array_push(&params_merged);
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1456 if (s == NULL) {
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1457 return NGX_ERROR;
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1458 }
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1459
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1460 *s = src[i];
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1461 }
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1462
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1463 h = ngx_http_uwsgi_cache_headers;
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1464
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1465 while (h->key.len) {
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1466
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1467 src = params_merged.elts;
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1468 nsrc = params_merged.nelts;
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1469
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1470 for (i = 0; i < nsrc; i++) {
3568
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1471 if (ngx_strcasecmp(h->key.data, src[i].key.data) == 0) {
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1472 goto next;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1473 }
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1474 }
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1475
4358
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1476 s = ngx_array_push(&params_merged);
3568
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1477 if (s == NULL) {
4358
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1478 return NGX_ERROR;
3568
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1479 }
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1480
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1481 *s = *h;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1482
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1483 next:
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1484
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1485 h++;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1486 }
4358
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1487
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1488 src = params_merged.elts;
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1489 nsrc = params_merged.nelts;
3568
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1490 }
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1491
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1492 #endif
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1493
4358
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1494 for (i = 0; i < nsrc; i++) {
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1495
3566
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
1496 if (src[i].key.len > sizeof("HTTP_") - 1
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
1497 && ngx_strncmp(src[i].key.data, "HTTP_", sizeof("HTTP_") - 1) == 0)
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
1498 {
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
1499 hk = ngx_array_push(&headers_names);
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
1500 if (hk == NULL) {
4358
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1501 return NGX_ERROR;
3566
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
1502 }
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
1503
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
1504 hk->key.len = src[i].key.len - 5;
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
1505 hk->key.data = src[i].key.data + 5;
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
1506 hk->key_hash = ngx_hash_key_lc(hk->key.data, hk->key.len);
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
1507 hk->value = (void *) 1;
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
1508
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
1509 if (src[i].value.len == 0) {
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
1510 continue;
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
1511 }
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
1512 }
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
1513
3548
fc7541a6959d fix the previous commit when value is static string: remove the special
Igor Sysoev <igor@sysoev.ru>
parents: 3547
diff changeset
1514 copy = ngx_array_push_n(conf->params_len,
fc7541a6959d fix the previous commit when value is static string: remove the special
Igor Sysoev <igor@sysoev.ru>
parents: 3547
diff changeset
1515 sizeof(ngx_http_script_copy_code_t));
fc7541a6959d fix the previous commit when value is static string: remove the special
Igor Sysoev <igor@sysoev.ru>
parents: 3547
diff changeset
1516 if (copy == NULL) {
4358
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1517 return NGX_ERROR;
3548
fc7541a6959d fix the previous commit when value is static string: remove the special
Igor Sysoev <igor@sysoev.ru>
parents: 3547
diff changeset
1518 }
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1519
3548
fc7541a6959d fix the previous commit when value is static string: remove the special
Igor Sysoev <igor@sysoev.ru>
parents: 3547
diff changeset
1520 copy->code = (ngx_http_script_code_pt) ngx_http_script_copy_len_code;
fc7541a6959d fix the previous commit when value is static string: remove the special
Igor Sysoev <igor@sysoev.ru>
parents: 3547
diff changeset
1521 copy->len = src[i].key.len;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1522
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1523
3548
fc7541a6959d fix the previous commit when value is static string: remove the special
Igor Sysoev <igor@sysoev.ru>
parents: 3547
diff changeset
1524 size = (sizeof(ngx_http_script_copy_code_t)
fc7541a6959d fix the previous commit when value is static string: remove the special
Igor Sysoev <igor@sysoev.ru>
parents: 3547
diff changeset
1525 + src[i].key.len + sizeof(uintptr_t) - 1)
fc7541a6959d fix the previous commit when value is static string: remove the special
Igor Sysoev <igor@sysoev.ru>
parents: 3547
diff changeset
1526 & ~(sizeof(uintptr_t) - 1);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1527
3548
fc7541a6959d fix the previous commit when value is static string: remove the special
Igor Sysoev <igor@sysoev.ru>
parents: 3547
diff changeset
1528 copy = ngx_array_push_n(conf->params, size);
fc7541a6959d fix the previous commit when value is static string: remove the special
Igor Sysoev <igor@sysoev.ru>
parents: 3547
diff changeset
1529 if (copy == NULL) {
4358
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1530 return NGX_ERROR;
3548
fc7541a6959d fix the previous commit when value is static string: remove the special
Igor Sysoev <igor@sysoev.ru>
parents: 3547
diff changeset
1531 }
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1532
3548
fc7541a6959d fix the previous commit when value is static string: remove the special
Igor Sysoev <igor@sysoev.ru>
parents: 3547
diff changeset
1533 copy->code = ngx_http_script_copy_code;
fc7541a6959d fix the previous commit when value is static string: remove the special
Igor Sysoev <igor@sysoev.ru>
parents: 3547
diff changeset
1534 copy->len = src[i].key.len;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1535
3548
fc7541a6959d fix the previous commit when value is static string: remove the special
Igor Sysoev <igor@sysoev.ru>
parents: 3547
diff changeset
1536 p = (u_char *) copy + sizeof(ngx_http_script_copy_code_t);
fc7541a6959d fix the previous commit when value is static string: remove the special
Igor Sysoev <igor@sysoev.ru>
parents: 3547
diff changeset
1537 ngx_memcpy(p, src[i].key.data, src[i].key.len);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1538
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1539
3548
fc7541a6959d fix the previous commit when value is static string: remove the special
Igor Sysoev <igor@sysoev.ru>
parents: 3547
diff changeset
1540 ngx_memzero(&sc, sizeof(ngx_http_script_compile_t));
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1541
3548
fc7541a6959d fix the previous commit when value is static string: remove the special
Igor Sysoev <igor@sysoev.ru>
parents: 3547
diff changeset
1542 sc.cf = cf;
fc7541a6959d fix the previous commit when value is static string: remove the special
Igor Sysoev <igor@sysoev.ru>
parents: 3547
diff changeset
1543 sc.source = &src[i].value;
fc7541a6959d fix the previous commit when value is static string: remove the special
Igor Sysoev <igor@sysoev.ru>
parents: 3547
diff changeset
1544 sc.flushes = &conf->flushes;
fc7541a6959d fix the previous commit when value is static string: remove the special
Igor Sysoev <igor@sysoev.ru>
parents: 3547
diff changeset
1545 sc.lengths = &conf->params_len;
fc7541a6959d fix the previous commit when value is static string: remove the special
Igor Sysoev <igor@sysoev.ru>
parents: 3547
diff changeset
1546 sc.values = &conf->params;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1547
3548
fc7541a6959d fix the previous commit when value is static string: remove the special
Igor Sysoev <igor@sysoev.ru>
parents: 3547
diff changeset
1548 if (ngx_http_script_compile(&sc) != NGX_OK) {
4358
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1549 return NGX_ERROR;
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1550 }
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1551
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1552 code = ngx_array_push_n(conf->params_len, sizeof(uintptr_t));
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1553 if (code == NULL) {
4358
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1554 return NGX_ERROR;
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1555 }
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1556
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1557 *code = (uintptr_t) NULL;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1558
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1559
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1560 code = ngx_array_push_n(conf->params, sizeof(uintptr_t));
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1561 if (code == NULL) {
4358
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1562 return NGX_ERROR;
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1563 }
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1564
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1565 *code = (uintptr_t) NULL;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1566 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1567
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1568 code = ngx_array_push_n(conf->params_len, sizeof(uintptr_t));
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1569 if (code == NULL) {
4358
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1570 return NGX_ERROR;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1571 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1572
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1573 *code = (uintptr_t) NULL;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1574
3566
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
1575 conf->header_params = headers_names.nelts;
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
1576
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
1577 hash.hash = &conf->headers_hash;
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
1578 hash.key = ngx_hash_key_lc;
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
1579 hash.max_size = 512;
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
1580 hash.bucket_size = 64;
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
1581 hash.name = "uwsgi_params_hash";
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
1582 hash.pool = cf->pool;
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
1583 hash.temp_pool = NULL;
b81d44244cb1 allow uwsgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3565
diff changeset
1584
4358
94b995c7c614 Merge of r4275, r4276, r4278, r4279:
Maxim Dounin <mdounin@mdounin.ru>
parents: 4252
diff changeset
1585 return ngx_hash_init(&hash, headers_names.elts, headers_names.nelts);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1586 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1587
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1588
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1589 static char *
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1590 ngx_http_uwsgi_pass(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1591 {
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1592 ngx_http_uwsgi_loc_conf_t *uwcf = conf;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1593
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1594 ngx_url_t u;
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1595 ngx_str_t *value, *url;
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1596 ngx_uint_t n;
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1597 ngx_http_core_loc_conf_t *clcf;
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1598 ngx_http_script_compile_t sc;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1599
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1600 if (uwcf->upstream.upstream || uwcf->uwsgi_lengths) {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1601 return "is duplicate";
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1602 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1603
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1604 clcf = ngx_http_conf_get_module_loc_conf (cf, ngx_http_core_module);
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1605 clcf->handler = ngx_http_uwsgi_handler;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1606
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1607 value = cf->args->elts;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1608
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1609 url = &value[1];
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1610
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1611 n = ngx_http_script_variables_count(url);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1612
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1613 if (n) {
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1614
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1615 ngx_memzero(&sc, sizeof(ngx_http_script_compile_t));
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1616
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1617 sc.cf = cf;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1618 sc.source = url;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1619 sc.lengths = &uwcf->uwsgi_lengths;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1620 sc.values = &uwcf->uwsgi_values;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1621 sc.variables = n;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1622 sc.complete_lengths = 1;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1623 sc.complete_values = 1;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1624
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1625 if (ngx_http_script_compile(&sc) != NGX_OK) {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1626 return NGX_CONF_ERROR;
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1627 }
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1628
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1629 return NGX_CONF_OK;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1630 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1631
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1632 ngx_memzero(&u, sizeof(ngx_url_t));
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1633
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1634 u.url = value[1];
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1635 u.no_resolve = 1;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1636
3543
e132566a942e fix style, some names, and building by MSVC8
Igor Sysoev <igor@sysoev.ru>
parents: 3542
diff changeset
1637 uwcf->upstream.upstream = ngx_http_upstream_add(cf, &u, 0);
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1638 if (uwcf->upstream.upstream == NULL) {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1639 return NGX_CONF_ERROR;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1640 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1641
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1642 if (clcf->name.data[clcf->name.len - 1] == '/') {
3542
9bf51b3fc1c1 style fix: remove tabs and trailing spaces
Igor Sysoev <igor@sysoev.ru>
parents: 3541
diff changeset
1643 clcf->auto_redirect = 1;
3541
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1644 }
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1645
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1646 return NGX_CONF_OK;
21452748d165 import original ngx_http_uwsgi_module version
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1647 }
3565
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1648
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1649
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1650 static char *
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1651 ngx_http_uwsgi_store(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1652 {
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1653 ngx_http_uwsgi_loc_conf_t *uwcf = conf;
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1654
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1655 ngx_str_t *value;
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1656 ngx_http_script_compile_t sc;
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1657
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1658 if (uwcf->upstream.store != NGX_CONF_UNSET || uwcf->upstream.store_lengths)
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1659 {
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1660 return "is duplicate";
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1661 }
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1662
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1663 value = cf->args->elts;
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1664
3568
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1665 if (ngx_strcmp(value[1].data, "off") == 0) {
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1666 uwcf->upstream.store = 0;
3565
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1667 return NGX_CONF_OK;
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1668 }
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1669
3568
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1670 #if (NGX_HTTP_CACHE)
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1671
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1672 if (uwcf->upstream.cache != NGX_CONF_UNSET_PTR
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1673 && uwcf->upstream.cache != NULL)
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1674 {
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1675 return "is incompatible with \"uwsgi_cache\"";
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1676 }
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1677
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1678 #endif
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1679
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1680 if (ngx_strcmp(value[1].data, "on") == 0) {
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1681 uwcf->upstream.store = 1;
3565
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1682 return NGX_CONF_OK;
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1683 }
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1684
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1685 /* include the terminating '\0' into script */
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1686 value[1].len++;
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1687
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1688 ngx_memzero(&sc, sizeof(ngx_http_script_compile_t));
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1689
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1690 sc.cf = cf;
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1691 sc.source = &value[1];
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1692 sc.lengths = &uwcf->upstream.store_lengths;
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1693 sc.values = &uwcf->upstream.store_values;
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1694 sc.variables = ngx_http_script_variables_count(&value[1]);;
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1695 sc.complete_lengths = 1;
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1696 sc.complete_values = 1;
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1697
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1698 if (ngx_http_script_compile(&sc) != NGX_OK) {
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1699 return NGX_CONF_ERROR;
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1700 }
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1701
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1702 return NGX_CONF_OK;
1e86f0ac9a44 uwsgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 3564
diff changeset
1703 }
3568
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1704
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1705
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1706 #if (NGX_HTTP_CACHE)
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1707
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1708 static char *
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1709 ngx_http_uwsgi_cache(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1710 {
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1711 ngx_http_uwsgi_loc_conf_t *uwcf = conf;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1712
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1713 ngx_str_t *value;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1714
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1715 value = cf->args->elts;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1716
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1717 if (uwcf->upstream.cache != NGX_CONF_UNSET_PTR) {
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1718 return "is duplicate";
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1719 }
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1720
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1721 if (ngx_strcmp(value[1].data, "off") == 0) {
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1722 uwcf->upstream.cache = NULL;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1723 return NGX_CONF_OK;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1724 }
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1725
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1726 if (uwcf->upstream.store > 0 || uwcf->upstream.store_lengths) {
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1727 return "is incompatible with \"uwsgi_store\"";
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1728 }
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1729
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1730 uwcf->upstream.cache = ngx_shared_memory_add(cf, &value[1], 0,
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1731 &ngx_http_uwsgi_module);
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1732 if (uwcf->upstream.cache == NULL) {
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1733 return NGX_CONF_ERROR;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1734 }
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1735
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1736 return NGX_CONF_OK;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1737 }
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1738
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1739
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1740 static char *
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1741 ngx_http_uwsgi_cache_key(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1742 {
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1743 ngx_http_uwsgi_loc_conf_t *uwcf = conf;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1744
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1745 ngx_str_t *value;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1746 ngx_http_compile_complex_value_t ccv;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1747
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1748 value = cf->args->elts;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1749
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1750 if (uwcf->cache_key.value.len) {
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1751 return "is duplicate";
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1752 }
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1753
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1754 ngx_memzero(&ccv, sizeof(ngx_http_compile_complex_value_t));
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1755
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1756 ccv.cf = cf;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1757 ccv.value = &value[1];
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1758 ccv.complex_value = &uwcf->cache_key;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1759
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1760 if (ngx_http_compile_complex_value(&ccv) != NGX_OK) {
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1761 return NGX_CONF_ERROR;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1762 }
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1763
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1764 return NGX_CONF_OK;
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1765 }
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1766
7cfbc51bac01 uwsgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 3567
diff changeset
1767 #endif