annotate src/http/modules/ngx_http_fastcgi_module.c @ 4192:61e4af19df9f

Autoindex: escape '?' in file names. For files with '?' in their names autoindex generated links with '?' not escaped. This resulted in effectively truncated links as '?' indicates query string start. This is an updated version of the patch originally posted at [1]. It introduces generic NGX_ESCAPE_URI_COMPONENT which escapes everything but unreserved characters as per RFC 3986. This approach also renders unneeded special colon processing (as colon is percent-encoded now), it's dropped accordingly. [1] http://nginx.org/pipermail/nginx-devel/2010-February/000112.html Reported by Konstantin Leonov.
author Maxim Dounin <mdounin@mdounin.ru>
date Tue, 11 Oct 2011 17:56:51 +0000
parents 7898857ff34b
children e444e8f6538b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2 /*
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
3 * Copyright (C) Igor Sysoev
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
4 */
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
5
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
6
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
7 #include <ngx_config.h>
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
8 #include <ngx_core.h>
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
9 #include <ngx_http.h>
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
10
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
11
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
12 typedef struct {
651
39b7d7b33c91 nginx-0.3.47-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
13 ngx_http_upstream_conf_t upstream;
39b7d7b33c91 nginx-0.3.47-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
14
39b7d7b33c91 nginx-0.3.47-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
15 ngx_str_t index;
39b7d7b33c91 nginx-0.3.47-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
16
39b7d7b33c91 nginx-0.3.47-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
17 ngx_array_t *flushes;
39b7d7b33c91 nginx-0.3.47-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
18 ngx_array_t *params_len;
39b7d7b33c91 nginx-0.3.47-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
19 ngx_array_t *params;
39b7d7b33c91 nginx-0.3.47-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
20 ngx_array_t *params_source;
1228
863c3490103e fastcgi_catch_stderr
Igor Sysoev <igor@sysoev.ru>
parents: 1142
diff changeset
21 ngx_array_t *catch_stderr;
2390
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
22
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
23 ngx_array_t *fastcgi_lengths;
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
24 ngx_array_t *fastcgi_values;
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
25
3560
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
26 ngx_hash_t headers_hash;
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
27 ngx_uint_t header_params;
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
28
4122
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
29 ngx_flag_t keep_conn;
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
30
2602
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
31 #if (NGX_HTTP_CACHE)
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
32 ngx_http_complex_value_t cache_key;
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
33 #endif
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
34
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
35 #if (NGX_PCRE)
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
36 ngx_regex_t *split_regex;
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
37 ngx_str_t split_name;
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
38 #endif
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
39 } ngx_http_fastcgi_loc_conf_t;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
40
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
41
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
42 typedef enum {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
43 ngx_http_fastcgi_st_version = 0,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
44 ngx_http_fastcgi_st_type,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
45 ngx_http_fastcgi_st_request_id_hi,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
46 ngx_http_fastcgi_st_request_id_lo,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
47 ngx_http_fastcgi_st_content_length_hi,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
48 ngx_http_fastcgi_st_content_length_lo,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
49 ngx_http_fastcgi_st_padding_length,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
50 ngx_http_fastcgi_st_reserved,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
51 ngx_http_fastcgi_st_data,
515
417a087c9c4d nginx-0.1.32-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
52 ngx_http_fastcgi_st_padding
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
53 } ngx_http_fastcgi_state_e;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
54
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
55
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
56 typedef struct {
1276
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
57 u_char *start;
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
58 u_char *end;
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
59 } ngx_http_fastcgi_split_part_t;
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
60
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
61
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
62 typedef struct {
651
39b7d7b33c91 nginx-0.3.47-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
63 ngx_http_fastcgi_state_e state;
39b7d7b33c91 nginx-0.3.47-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
64 u_char *pos;
39b7d7b33c91 nginx-0.3.47-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
65 u_char *last;
39b7d7b33c91 nginx-0.3.47-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
66 ngx_uint_t type;
39b7d7b33c91 nginx-0.3.47-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
67 size_t length;
39b7d7b33c91 nginx-0.3.47-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
68 size_t padding;
39b7d7b33c91 nginx-0.3.47-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
69
3460
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
70 unsigned fastcgi_stdout:1;
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
71 unsigned large_stderr:1;
1276
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
72
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
73 ngx_array_t *split_parts;
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
74
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
75 ngx_str_t script_name;
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
76 ngx_str_t path_info;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
77 } ngx_http_fastcgi_ctx_t;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
78
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
79
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
80 #define NGX_HTTP_FASTCGI_RESPONDER 1
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
81
4122
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
82 #define NGX_HTTP_FASTCGI_KEEP_CONN 1
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
83
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
84 #define NGX_HTTP_FASTCGI_BEGIN_REQUEST 1
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
85 #define NGX_HTTP_FASTCGI_ABORT_REQUEST 2
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
86 #define NGX_HTTP_FASTCGI_END_REQUEST 3
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
87 #define NGX_HTTP_FASTCGI_PARAMS 4
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
88 #define NGX_HTTP_FASTCGI_STDIN 5
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
89 #define NGX_HTTP_FASTCGI_STDOUT 6
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
90 #define NGX_HTTP_FASTCGI_STDERR 7
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
91 #define NGX_HTTP_FASTCGI_DATA 8
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
92
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
93
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
94 typedef struct {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
95 u_char version;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
96 u_char type;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
97 u_char request_id_hi;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
98 u_char request_id_lo;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
99 u_char content_length_hi;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
100 u_char content_length_lo;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
101 u_char padding_length;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
102 u_char reserved;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
103 } ngx_http_fastcgi_header_t;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
104
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
105
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
106 typedef struct {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
107 u_char role_hi;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
108 u_char role_lo;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
109 u_char flags;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
110 u_char reserved[5];
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
111 } ngx_http_fastcgi_begin_request_t;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
112
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
113
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
114 typedef struct {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
115 u_char version;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
116 u_char type;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
117 u_char request_id_hi;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
118 u_char request_id_lo;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
119 } ngx_http_fastcgi_header_small_t;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
120
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
121
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
122 typedef struct {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
123 ngx_http_fastcgi_header_t h0;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
124 ngx_http_fastcgi_begin_request_t br;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
125 ngx_http_fastcgi_header_small_t h1;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
126 } ngx_http_fastcgi_request_start_t;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
127
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
128
2390
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
129 static ngx_int_t ngx_http_fastcgi_eval(ngx_http_request_t *r,
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
130 ngx_http_fastcgi_loc_conf_t *flcf);
2602
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
131 #if (NGX_HTTP_CACHE)
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
132 static ngx_int_t ngx_http_fastcgi_create_key(ngx_http_request_t *r);
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
133 #endif
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
134 static ngx_int_t ngx_http_fastcgi_create_request(ngx_http_request_t *r);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
135 static ngx_int_t ngx_http_fastcgi_reinit_request(ngx_http_request_t *r);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
136 static ngx_int_t ngx_http_fastcgi_process_header(ngx_http_request_t *r);
4122
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
137 static ngx_int_t ngx_http_fastcgi_input_filter_init(void *data);
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
138 static ngx_int_t ngx_http_fastcgi_input_filter(ngx_event_pipe_t *p,
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
139 ngx_buf_t *buf);
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
140 static ngx_int_t ngx_http_fastcgi_process_record(ngx_http_request_t *r,
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
141 ngx_http_fastcgi_ctx_t *f);
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
142 static void ngx_http_fastcgi_abort_request(ngx_http_request_t *r);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
143 static void ngx_http_fastcgi_finalize_request(ngx_http_request_t *r,
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
144 ngx_int_t rc);
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
145
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
146 static ngx_int_t ngx_http_fastcgi_add_variables(ngx_conf_t *cf);
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
147 static void *ngx_http_fastcgi_create_loc_conf(ngx_conf_t *cf);
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
148 static char *ngx_http_fastcgi_merge_loc_conf(ngx_conf_t *cf,
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
149 void *parent, void *child);
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
150 static ngx_int_t ngx_http_fastcgi_script_name_variable(ngx_http_request_t *r,
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
151 ngx_http_variable_value_t *v, uintptr_t data);
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
152 static ngx_int_t ngx_http_fastcgi_path_info_variable(ngx_http_request_t *r,
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
153 ngx_http_variable_value_t *v, uintptr_t data);
2467
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
154 static ngx_http_fastcgi_ctx_t *ngx_http_fastcgi_split(ngx_http_request_t *r,
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
155 ngx_http_fastcgi_loc_conf_t *flcf);
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
156
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
157 static char *ngx_http_fastcgi_pass(ngx_conf_t *cf, ngx_command_t *cmd,
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
158 void *conf);
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
159 static char *ngx_http_fastcgi_split_path_info(ngx_conf_t *cf,
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
160 ngx_command_t *cmd, void *conf);
1295
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
161 static char *ngx_http_fastcgi_store(ngx_conf_t *cf, ngx_command_t *cmd,
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
162 void *conf);
2602
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
163 #if (NGX_HTTP_CACHE)
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
164 static char *ngx_http_fastcgi_cache(ngx_conf_t *cf, ngx_command_t *cmd,
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
165 void *conf);
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
166 static char *ngx_http_fastcgi_cache_key(ngx_conf_t *cf, ngx_command_t *cmd,
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
167 void *conf);
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
168 #endif
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
169
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
170 static char *ngx_http_fastcgi_lowat_check(ngx_conf_t *cf, void *post,
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
171 void *data);
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
172
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
173
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
174 static ngx_conf_post_t ngx_http_fastcgi_lowat_post =
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
175 { ngx_http_fastcgi_lowat_check };
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
176
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
177
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
178 static ngx_conf_bitmask_t ngx_http_fastcgi_next_upstream_masks[] = {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
179 { ngx_string("error"), NGX_HTTP_UPSTREAM_FT_ERROR },
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
180 { ngx_string("timeout"), NGX_HTTP_UPSTREAM_FT_TIMEOUT },
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
181 { ngx_string("invalid_header"), NGX_HTTP_UPSTREAM_FT_INVALID_HEADER },
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
182 { ngx_string("http_500"), NGX_HTTP_UPSTREAM_FT_HTTP_500 },
623
0216fd1471f3 nginx-0.3.33-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 619
diff changeset
183 { ngx_string("http_503"), NGX_HTTP_UPSTREAM_FT_HTTP_503 },
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
184 { ngx_string("http_404"), NGX_HTTP_UPSTREAM_FT_HTTP_404 },
2927
55ceaef03d34 proxy_cache_use_stale/fastcgi_cache_use_stale updating
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
185 { ngx_string("updating"), NGX_HTTP_UPSTREAM_FT_UPDATING },
665
5fd7a5e99047 nginx-0.3.54-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
186 { ngx_string("off"), NGX_HTTP_UPSTREAM_FT_OFF },
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
187 { ngx_null_string, 0 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
188 };
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
189
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
190
2602
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
191 ngx_module_t ngx_http_fastcgi_module;
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
192
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
193
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
194 static ngx_command_t ngx_http_fastcgi_commands[] = {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
195
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
196 { ngx_string("fastcgi_pass"),
629
65bf042c0b4f nginx-0.3.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 623
diff changeset
197 NGX_HTTP_LOC_CONF|NGX_HTTP_LIF_CONF|NGX_CONF_TAKE1,
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
198 ngx_http_fastcgi_pass,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
199 NGX_HTTP_LOC_CONF_OFFSET,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
200 0,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
201 NULL },
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
202
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
203 { ngx_string("fastcgi_index"),
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
204 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
205 ngx_conf_set_str_slot,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
206 NGX_HTTP_LOC_CONF_OFFSET,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
207 offsetof(ngx_http_fastcgi_loc_conf_t, index),
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
208 NULL },
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
209
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
210 { ngx_string("fastcgi_split_path_info"),
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
211 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
212 ngx_http_fastcgi_split_path_info,
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
213 NGX_HTTP_LOC_CONF_OFFSET,
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
214 0,
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
215 NULL },
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
216
1291
13a4ce6e7f1e proxy_store and fastcgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 1276
diff changeset
217 { ngx_string("fastcgi_store"),
1295
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
218 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
219 ngx_http_fastcgi_store,
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
220 NGX_HTTP_LOC_CONF_OFFSET,
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
221 0,
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
222 NULL },
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
223
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
224 { ngx_string("fastcgi_store_access"),
1291
13a4ce6e7f1e proxy_store and fastcgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 1276
diff changeset
225 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE123,
13a4ce6e7f1e proxy_store and fastcgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 1276
diff changeset
226 ngx_conf_set_access_slot,
13a4ce6e7f1e proxy_store and fastcgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 1276
diff changeset
227 NGX_HTTP_LOC_CONF_OFFSET,
1295
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
228 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.store_access),
1291
13a4ce6e7f1e proxy_store and fastcgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 1276
diff changeset
229 NULL },
13a4ce6e7f1e proxy_store and fastcgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 1276
diff changeset
230
629
65bf042c0b4f nginx-0.3.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 623
diff changeset
231 { ngx_string("fastcgi_ignore_client_abort"),
65bf042c0b4f nginx-0.3.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 623
diff changeset
232 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
65bf042c0b4f nginx-0.3.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 623
diff changeset
233 ngx_conf_set_flag_slot,
65bf042c0b4f nginx-0.3.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 623
diff changeset
234 NGX_HTTP_LOC_CONF_OFFSET,
65bf042c0b4f nginx-0.3.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 623
diff changeset
235 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.ignore_client_abort),
65bf042c0b4f nginx-0.3.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 623
diff changeset
236 NULL },
65bf042c0b4f nginx-0.3.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 623
diff changeset
237
3271
fcd98af88df3 proxy_bind, fastcgi_bind, and memcached_bind
Igor Sysoev <igor@sysoev.ru>
parents: 3197
diff changeset
238 { ngx_string("fastcgi_bind"),
fcd98af88df3 proxy_bind, fastcgi_bind, and memcached_bind
Igor Sysoev <igor@sysoev.ru>
parents: 3197
diff changeset
239 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
3399
ac9c0380337d fix typo
Igor Sysoev <igor@sysoev.ru>
parents: 3325
diff changeset
240 ngx_http_upstream_bind_set_slot,
3271
fcd98af88df3 proxy_bind, fastcgi_bind, and memcached_bind
Igor Sysoev <igor@sysoev.ru>
parents: 3197
diff changeset
241 NGX_HTTP_LOC_CONF_OFFSET,
fcd98af88df3 proxy_bind, fastcgi_bind, and memcached_bind
Igor Sysoev <igor@sysoev.ru>
parents: 3197
diff changeset
242 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.local),
fcd98af88df3 proxy_bind, fastcgi_bind, and memcached_bind
Igor Sysoev <igor@sysoev.ru>
parents: 3197
diff changeset
243 NULL },
fcd98af88df3 proxy_bind, fastcgi_bind, and memcached_bind
Igor Sysoev <igor@sysoev.ru>
parents: 3197
diff changeset
244
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
245 { ngx_string("fastcgi_connect_timeout"),
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
246 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
247 ngx_conf_set_msec_slot,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
248 NGX_HTTP_LOC_CONF_OFFSET,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
249 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.connect_timeout),
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
250 NULL },
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
251
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
252 { ngx_string("fastcgi_send_timeout"),
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
253 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
254 ngx_conf_set_msec_slot,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
255 NGX_HTTP_LOC_CONF_OFFSET,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
256 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.send_timeout),
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
257 NULL },
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
258
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
259 { ngx_string("fastcgi_send_lowat"),
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
260 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
261 ngx_conf_set_size_slot,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
262 NGX_HTTP_LOC_CONF_OFFSET,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
263 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.send_lowat),
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
264 &ngx_http_fastcgi_lowat_post },
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
265
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
266 { ngx_string("fastcgi_buffer_size"),
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
267 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
268 ngx_conf_set_size_slot,
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
269 NGX_HTTP_LOC_CONF_OFFSET,
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
270 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.buffer_size),
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
271 NULL },
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
272
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
273 { ngx_string("fastcgi_pass_request_headers"),
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
274 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
275 ngx_conf_set_flag_slot,
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
276 NGX_HTTP_LOC_CONF_OFFSET,
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
277 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.pass_request_headers),
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
278 NULL },
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
279
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
280 { ngx_string("fastcgi_pass_request_body"),
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
281 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
282 ngx_conf_set_flag_slot,
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
283 NGX_HTTP_LOC_CONF_OFFSET,
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
284 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.pass_request_body),
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
285 NULL },
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
286
657
400711951595 nginx-0.3.50-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 655
diff changeset
287 { ngx_string("fastcgi_intercept_errors"),
400711951595 nginx-0.3.50-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 655
diff changeset
288 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
400711951595 nginx-0.3.50-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 655
diff changeset
289 ngx_conf_set_flag_slot,
400711951595 nginx-0.3.50-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 655
diff changeset
290 NGX_HTTP_LOC_CONF_OFFSET,
400711951595 nginx-0.3.50-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 655
diff changeset
291 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.intercept_errors),
400711951595 nginx-0.3.50-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 655
diff changeset
292 NULL },
400711951595 nginx-0.3.50-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 655
diff changeset
293
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
294 { ngx_string("fastcgi_read_timeout"),
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
295 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
296 ngx_conf_set_msec_slot,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
297 NGX_HTTP_LOC_CONF_OFFSET,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
298 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.read_timeout),
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
299 NULL },
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
300
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
301 { ngx_string("fastcgi_buffers"),
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
302 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE2,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
303 ngx_conf_set_bufs_slot,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
304 NGX_HTTP_LOC_CONF_OFFSET,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
305 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.bufs),
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
306 NULL },
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
307
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
308 { ngx_string("fastcgi_busy_buffers_size"),
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
309 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
310 ngx_conf_set_size_slot,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
311 NGX_HTTP_LOC_CONF_OFFSET,
529
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
312 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.busy_buffers_size_conf),
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
313 NULL },
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
314
2602
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
315 #if (NGX_HTTP_CACHE)
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
316
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
317 { ngx_string("fastcgi_cache"),
3729
4b773fc06336 fix directive type
Igor Sysoev <igor@sysoev.ru>
parents: 3700
diff changeset
318 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
2602
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
319 ngx_http_fastcgi_cache,
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
320 NGX_HTTP_LOC_CONF_OFFSET,
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
321 0,
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
322 NULL },
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
323
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
324 { ngx_string("fastcgi_cache_key"),
3729
4b773fc06336 fix directive type
Igor Sysoev <igor@sysoev.ru>
parents: 3700
diff changeset
325 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
2602
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
326 ngx_http_fastcgi_cache_key,
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
327 NGX_HTTP_LOC_CONF_OFFSET,
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
328 0,
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
329 NULL },
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
330
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
331 { ngx_string("fastcgi_cache_path"),
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
332 NGX_HTTP_MAIN_CONF|NGX_CONF_2MORE,
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
333 ngx_http_file_cache_set_slot,
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
334 0,
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
335 0,
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
336 &ngx_http_fastcgi_module },
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
337
3699
b0a0686a85bb proxy_cache_pass, fastcgi_cache_bypass, uwsgi_cache_bypass, scgi_cache_bypass
Igor Sysoev <igor@sysoev.ru>
parents: 3692
diff changeset
338 { ngx_string("fastcgi_cache_bypass"),
b0a0686a85bb proxy_cache_pass, fastcgi_cache_bypass, uwsgi_cache_bypass, scgi_cache_bypass
Igor Sysoev <igor@sysoev.ru>
parents: 3692
diff changeset
339 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: 3692
diff changeset
340 ngx_http_set_predicate_slot,
b0a0686a85bb proxy_cache_pass, fastcgi_cache_bypass, uwsgi_cache_bypass, scgi_cache_bypass
Igor Sysoev <igor@sysoev.ru>
parents: 3692
diff changeset
341 NGX_HTTP_LOC_CONF_OFFSET,
b0a0686a85bb proxy_cache_pass, fastcgi_cache_bypass, uwsgi_cache_bypass, scgi_cache_bypass
Igor Sysoev <igor@sysoev.ru>
parents: 3692
diff changeset
342 offsetof(ngx_http_fastcgi_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: 3692
diff changeset
343 NULL },
b0a0686a85bb proxy_cache_pass, fastcgi_cache_bypass, uwsgi_cache_bypass, scgi_cache_bypass
Igor Sysoev <igor@sysoev.ru>
parents: 3692
diff changeset
344
3526
62a4fd1e6e2c proxy_no_cache and fastcgi_no_cache
Igor Sysoev <igor@sysoev.ru>
parents: 3523
diff changeset
345 { ngx_string("fastcgi_no_cache"),
62a4fd1e6e2c proxy_no_cache and fastcgi_no_cache
Igor Sysoev <igor@sysoev.ru>
parents: 3523
diff changeset
346 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
347 ngx_http_set_predicate_slot,
3526
62a4fd1e6e2c proxy_no_cache and fastcgi_no_cache
Igor Sysoev <igor@sysoev.ru>
parents: 3523
diff changeset
348 NGX_HTTP_LOC_CONF_OFFSET,
62a4fd1e6e2c proxy_no_cache and fastcgi_no_cache
Igor Sysoev <igor@sysoev.ru>
parents: 3523
diff changeset
349 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.no_cache),
62a4fd1e6e2c proxy_no_cache and fastcgi_no_cache
Igor Sysoev <igor@sysoev.ru>
parents: 3523
diff changeset
350 NULL },
62a4fd1e6e2c proxy_no_cache and fastcgi_no_cache
Igor Sysoev <igor@sysoev.ru>
parents: 3523
diff changeset
351
2602
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
352 { ngx_string("fastcgi_cache_valid"),
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
353 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE,
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
354 ngx_http_file_cache_valid_set_slot,
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
355 NGX_HTTP_LOC_CONF_OFFSET,
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
356 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.cache_valid),
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
357 NULL },
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
358
2729
e85497f36011 fix fastcgi_cache_min_uses
Igor Sysoev <igor@sysoev.ru>
parents: 2716
diff changeset
359 { ngx_string("fastcgi_cache_min_uses"),
2602
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
360 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
361 ngx_conf_set_num_slot,
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
362 NGX_HTTP_LOC_CONF_OFFSET,
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
363 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.cache_min_uses),
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
364 NULL },
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
365
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
366 { ngx_string("fastcgi_cache_use_stale"),
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
367 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE,
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
368 ngx_conf_set_bitmask_slot,
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
369 NGX_HTTP_LOC_CONF_OFFSET,
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
370 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.cache_use_stale),
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
371 &ngx_http_fastcgi_next_upstream_masks },
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
372
2875
6e1941b321b7 proxy_cache_methods and fastcgi_cache_methods
Igor Sysoev <igor@sysoev.ru>
parents: 2786
diff changeset
373 { ngx_string("fastcgi_cache_methods"),
6e1941b321b7 proxy_cache_methods and fastcgi_cache_methods
Igor Sysoev <igor@sysoev.ru>
parents: 2786
diff changeset
374 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE,
6e1941b321b7 proxy_cache_methods and fastcgi_cache_methods
Igor Sysoev <igor@sysoev.ru>
parents: 2786
diff changeset
375 ngx_conf_set_bitmask_slot,
6e1941b321b7 proxy_cache_methods and fastcgi_cache_methods
Igor Sysoev <igor@sysoev.ru>
parents: 2786
diff changeset
376 NGX_HTTP_LOC_CONF_OFFSET,
6e1941b321b7 proxy_cache_methods and fastcgi_cache_methods
Igor Sysoev <igor@sysoev.ru>
parents: 2786
diff changeset
377 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.cache_methods),
6e1941b321b7 proxy_cache_methods and fastcgi_cache_methods
Igor Sysoev <igor@sysoev.ru>
parents: 2786
diff changeset
378 &ngx_http_upstream_cache_method_mask },
6e1941b321b7 proxy_cache_methods and fastcgi_cache_methods
Igor Sysoev <igor@sysoev.ru>
parents: 2786
diff changeset
379
2602
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
380 #endif
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
381
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
382 { ngx_string("fastcgi_temp_path"),
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
383 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1234,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
384 ngx_conf_set_path_slot,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
385 NGX_HTTP_LOC_CONF_OFFSET,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
386 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.temp_path),
2592
3a8a53c0c42f a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents: 2467
diff changeset
387 NULL },
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
388
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
389 { ngx_string("fastcgi_max_temp_file_size"),
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
390 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
391 ngx_conf_set_size_slot,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
392 NGX_HTTP_LOC_CONF_OFFSET,
529
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
393 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.max_temp_file_size_conf),
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
394 NULL },
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
395
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
396 { ngx_string("fastcgi_temp_file_write_size"),
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
397 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
398 ngx_conf_set_size_slot,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
399 NGX_HTTP_LOC_CONF_OFFSET,
529
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
400 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.temp_file_write_size_conf),
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
401 NULL },
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
402
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
403 { ngx_string("fastcgi_next_upstream"),
547
818fbd4750b9 nginx-0.2.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
404 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE,
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
405 ngx_conf_set_bitmask_slot,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
406 NGX_HTTP_LOC_CONF_OFFSET,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
407 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.next_upstream),
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
408 &ngx_http_fastcgi_next_upstream_masks },
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
409
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
410 { ngx_string("fastcgi_param"),
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
411 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE2,
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
412 ngx_conf_set_keyval_slot,
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
413 NGX_HTTP_LOC_CONF_OFFSET,
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
414 offsetof(ngx_http_fastcgi_loc_conf_t, params_source),
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
415 NULL },
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
416
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
417 { ngx_string("fastcgi_pass_header"),
3729
4b773fc06336 fix directive type
Igor Sysoev <igor@sysoev.ru>
parents: 3700
diff changeset
418 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
419 ngx_conf_set_str_array_slot,
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
420 NGX_HTTP_LOC_CONF_OFFSET,
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
421 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.pass_headers),
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
422 NULL },
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
423
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
424 { ngx_string("fastcgi_hide_header"),
3729
4b773fc06336 fix directive type
Igor Sysoev <igor@sysoev.ru>
parents: 3700
diff changeset
425 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_TAKE1,
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
426 ngx_conf_set_str_array_slot,
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
427 NGX_HTTP_LOC_CONF_OFFSET,
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
428 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.hide_headers),
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
429 NULL },
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
430
2786
4e002555652d proxy_ignore_headers and fastcgi_ignore_headers
Igor Sysoev <igor@sysoev.ru>
parents: 2729
diff changeset
431 { ngx_string("fastcgi_ignore_headers"),
4e002555652d proxy_ignore_headers and fastcgi_ignore_headers
Igor Sysoev <igor@sysoev.ru>
parents: 2729
diff changeset
432 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_1MORE,
4e002555652d proxy_ignore_headers and fastcgi_ignore_headers
Igor Sysoev <igor@sysoev.ru>
parents: 2729
diff changeset
433 ngx_conf_set_bitmask_slot,
4e002555652d proxy_ignore_headers and fastcgi_ignore_headers
Igor Sysoev <igor@sysoev.ru>
parents: 2729
diff changeset
434 NGX_HTTP_LOC_CONF_OFFSET,
4e002555652d proxy_ignore_headers and fastcgi_ignore_headers
Igor Sysoev <igor@sysoev.ru>
parents: 2729
diff changeset
435 offsetof(ngx_http_fastcgi_loc_conf_t, upstream.ignore_headers),
3667
12bd9e26fadb use shared ngx_http_upstream_ignore_headers_masks[]
Igor Sysoev <igor@sysoev.ru>
parents: 3610
diff changeset
436 &ngx_http_upstream_ignore_headers_masks },
2786
4e002555652d proxy_ignore_headers and fastcgi_ignore_headers
Igor Sysoev <igor@sysoev.ru>
parents: 2729
diff changeset
437
1228
863c3490103e fastcgi_catch_stderr
Igor Sysoev <igor@sysoev.ru>
parents: 1142
diff changeset
438 { ngx_string("fastcgi_catch_stderr"),
863c3490103e fastcgi_catch_stderr
Igor Sysoev <igor@sysoev.ru>
parents: 1142
diff changeset
439 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
863c3490103e fastcgi_catch_stderr
Igor Sysoev <igor@sysoev.ru>
parents: 1142
diff changeset
440 ngx_conf_set_str_array_slot,
863c3490103e fastcgi_catch_stderr
Igor Sysoev <igor@sysoev.ru>
parents: 1142
diff changeset
441 NGX_HTTP_LOC_CONF_OFFSET,
863c3490103e fastcgi_catch_stderr
Igor Sysoev <igor@sysoev.ru>
parents: 1142
diff changeset
442 offsetof(ngx_http_fastcgi_loc_conf_t, catch_stderr),
863c3490103e fastcgi_catch_stderr
Igor Sysoev <igor@sysoev.ru>
parents: 1142
diff changeset
443 NULL },
863c3490103e fastcgi_catch_stderr
Igor Sysoev <igor@sysoev.ru>
parents: 1142
diff changeset
444
4122
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
445 { ngx_string("fastcgi_keep_conn"),
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
446 NGX_HTTP_MAIN_CONF|NGX_HTTP_SRV_CONF|NGX_HTTP_LOC_CONF|NGX_CONF_FLAG,
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
447 ngx_conf_set_flag_slot,
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
448 NGX_HTTP_LOC_CONF_OFFSET,
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
449 offsetof(ngx_http_fastcgi_loc_conf_t, keep_conn),
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
450 NULL },
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
451
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
452 ngx_null_command
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
453 };
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
454
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
455
667
63a820b0bc6c nginx-0.3.55-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 665
diff changeset
456 static ngx_http_module_t ngx_http_fastcgi_module_ctx = {
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
457 ngx_http_fastcgi_add_variables, /* preconfiguration */
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
458 NULL, /* postconfiguration */
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
459
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
460 NULL, /* create main configuration */
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
461 NULL, /* init main configuration */
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
462
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
463 NULL, /* create server configuration */
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
464 NULL, /* merge server configuration */
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
465
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
466 ngx_http_fastcgi_create_loc_conf, /* create location configuration */
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
467 ngx_http_fastcgi_merge_loc_conf /* merge location configuration */
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
468 };
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
469
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
470
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
471 ngx_module_t ngx_http_fastcgi_module = {
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
472 NGX_MODULE_V1,
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
473 &ngx_http_fastcgi_module_ctx, /* module context */
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
474 ngx_http_fastcgi_commands, /* module directives */
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
475 NGX_HTTP_MODULE, /* module type */
541
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 537
diff changeset
476 NULL, /* init master */
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
477 NULL, /* init module */
541
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 537
diff changeset
478 NULL, /* init process */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 537
diff changeset
479 NULL, /* init thread */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 537
diff changeset
480 NULL, /* exit thread */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 537
diff changeset
481 NULL, /* exit process */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 537
diff changeset
482 NULL, /* exit master */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 537
diff changeset
483 NGX_MODULE_V1_PADDING
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
484 };
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
485
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
486
1883
09dfe92b9414 fix order
Igor Sysoev <igor@sysoev.ru>
parents: 1701
diff changeset
487 static ngx_http_fastcgi_request_start_t ngx_http_fastcgi_request_start = {
09dfe92b9414 fix order
Igor Sysoev <igor@sysoev.ru>
parents: 1701
diff changeset
488 { 1, /* version */
09dfe92b9414 fix order
Igor Sysoev <igor@sysoev.ru>
parents: 1701
diff changeset
489 NGX_HTTP_FASTCGI_BEGIN_REQUEST, /* type */
09dfe92b9414 fix order
Igor Sysoev <igor@sysoev.ru>
parents: 1701
diff changeset
490 0, /* request_id_hi */
09dfe92b9414 fix order
Igor Sysoev <igor@sysoev.ru>
parents: 1701
diff changeset
491 1, /* request_id_lo */
09dfe92b9414 fix order
Igor Sysoev <igor@sysoev.ru>
parents: 1701
diff changeset
492 0, /* content_length_hi */
09dfe92b9414 fix order
Igor Sysoev <igor@sysoev.ru>
parents: 1701
diff changeset
493 sizeof(ngx_http_fastcgi_begin_request_t), /* content_length_lo */
09dfe92b9414 fix order
Igor Sysoev <igor@sysoev.ru>
parents: 1701
diff changeset
494 0, /* padding_length */
09dfe92b9414 fix order
Igor Sysoev <igor@sysoev.ru>
parents: 1701
diff changeset
495 0 }, /* reserved */
09dfe92b9414 fix order
Igor Sysoev <igor@sysoev.ru>
parents: 1701
diff changeset
496
09dfe92b9414 fix order
Igor Sysoev <igor@sysoev.ru>
parents: 1701
diff changeset
497 { 0, /* role_hi */
09dfe92b9414 fix order
Igor Sysoev <igor@sysoev.ru>
parents: 1701
diff changeset
498 NGX_HTTP_FASTCGI_RESPONDER, /* role_lo */
09dfe92b9414 fix order
Igor Sysoev <igor@sysoev.ru>
parents: 1701
diff changeset
499 0, /* NGX_HTTP_FASTCGI_KEEP_CONN */ /* flags */
09dfe92b9414 fix order
Igor Sysoev <igor@sysoev.ru>
parents: 1701
diff changeset
500 { 0, 0, 0, 0, 0 } }, /* reserved[5] */
09dfe92b9414 fix order
Igor Sysoev <igor@sysoev.ru>
parents: 1701
diff changeset
501
09dfe92b9414 fix order
Igor Sysoev <igor@sysoev.ru>
parents: 1701
diff changeset
502 { 1, /* version */
09dfe92b9414 fix order
Igor Sysoev <igor@sysoev.ru>
parents: 1701
diff changeset
503 NGX_HTTP_FASTCGI_PARAMS, /* type */
09dfe92b9414 fix order
Igor Sysoev <igor@sysoev.ru>
parents: 1701
diff changeset
504 0, /* request_id_hi */
09dfe92b9414 fix order
Igor Sysoev <igor@sysoev.ru>
parents: 1701
diff changeset
505 1 }, /* request_id_lo */
09dfe92b9414 fix order
Igor Sysoev <igor@sysoev.ru>
parents: 1701
diff changeset
506
09dfe92b9414 fix order
Igor Sysoev <igor@sysoev.ru>
parents: 1701
diff changeset
507 };
09dfe92b9414 fix order
Igor Sysoev <igor@sysoev.ru>
parents: 1701
diff changeset
508
09dfe92b9414 fix order
Igor Sysoev <igor@sysoev.ru>
parents: 1701
diff changeset
509
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
510 static ngx_http_variable_t ngx_http_fastcgi_vars[] = {
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
511
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
512 { ngx_string("fastcgi_script_name"), NULL,
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
513 ngx_http_fastcgi_script_name_variable, 0,
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
514 NGX_HTTP_VAR_NOCACHEABLE|NGX_HTTP_VAR_NOHASH, 0 },
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
515
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
516 { ngx_string("fastcgi_path_info"), NULL,
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
517 ngx_http_fastcgi_path_info_variable, 0,
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
518 NGX_HTTP_VAR_NOCACHEABLE|NGX_HTTP_VAR_NOHASH, 0 },
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
519
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
520 { ngx_null_string, NULL, NULL, 0, 0, 0 }
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
521 };
1884
7756b1085119 fix order
Igor Sysoev <igor@sysoev.ru>
parents: 1883
diff changeset
522
7756b1085119 fix order
Igor Sysoev <igor@sysoev.ru>
parents: 1883
diff changeset
523
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
524 static ngx_str_t ngx_http_fastcgi_hide_headers[] = {
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
525 ngx_string("Status"),
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
526 ngx_string("X-Accel-Expires"),
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
527 ngx_string("X-Accel-Redirect"),
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
528 ngx_string("X-Accel-Limit-Rate"),
1886
2819956d1ca0 add X-Accel-Charset to ingored header, fix X-Accel-Buffering
Igor Sysoev <igor@sysoev.ru>
parents: 1884
diff changeset
529 ngx_string("X-Accel-Buffering"),
2819956d1ca0 add X-Accel-Charset to ingored header, fix X-Accel-Buffering
Igor Sysoev <igor@sysoev.ru>
parents: 1884
diff changeset
530 ngx_string("X-Accel-Charset"),
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
531 ngx_null_string
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
532 };
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
533
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
534
3197
d5d1ad05d3a6 hide cacheable Set-Cookie and P3P FastCGI response headers
Igor Sysoev <igor@sysoev.ru>
parents: 3025
diff changeset
535 #if (NGX_HTTP_CACHE)
d5d1ad05d3a6 hide cacheable Set-Cookie and P3P FastCGI response headers
Igor Sysoev <igor@sysoev.ru>
parents: 3025
diff changeset
536
3563
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
537 static ngx_keyval_t ngx_http_fastcgi_cache_headers[] = {
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
538 { ngx_string("HTTP_IF_MODIFIED_SINCE"), ngx_string("") },
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
539 { ngx_string("HTTP_IF_UNMODIFIED_SINCE"), ngx_string("") },
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
540 { ngx_string("HTTP_IF_NONE_MATCH"), ngx_string("") },
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
541 { ngx_string("HTTP_IF_MATCH"), ngx_string("") },
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
542 { ngx_string("HTTP_RANGE"), ngx_string("") },
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
543 { ngx_string("HTTP_IF_RANGE"), ngx_string("") },
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
544 { ngx_null_string, ngx_null_string }
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
545 };
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
546
3197
d5d1ad05d3a6 hide cacheable Set-Cookie and P3P FastCGI response headers
Igor Sysoev <igor@sysoev.ru>
parents: 3025
diff changeset
547 #endif
d5d1ad05d3a6 hide cacheable Set-Cookie and P3P FastCGI response headers
Igor Sysoev <igor@sysoev.ru>
parents: 3025
diff changeset
548
d5d1ad05d3a6 hide cacheable Set-Cookie and P3P FastCGI response headers
Igor Sysoev <igor@sysoev.ru>
parents: 3025
diff changeset
549
2592
3a8a53c0c42f a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents: 2467
diff changeset
550 static ngx_path_init_t ngx_http_fastcgi_temp_path = {
3a8a53c0c42f a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents: 2467
diff changeset
551 ngx_string(NGX_HTTP_FASTCGI_TEMP_PATH), { 1, 2, 0 }
3a8a53c0c42f a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents: 2467
diff changeset
552 };
3a8a53c0c42f a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents: 2467
diff changeset
553
3a8a53c0c42f a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents: 2467
diff changeset
554
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
555 static ngx_int_t
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
556 ngx_http_fastcgi_handler(ngx_http_request_t *r)
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
557 {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
558 ngx_int_t rc;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
559 ngx_http_upstream_t *u;
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
560 ngx_http_fastcgi_ctx_t *f;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
561 ngx_http_fastcgi_loc_conf_t *flcf;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
562
777
4ab852b691f5 <!--#include virtual=... set=... -->
Igor Sysoev <igor@sysoev.ru>
parents: 751
diff changeset
563 if (r->subrequest_in_memory) {
4ab852b691f5 <!--#include virtual=... set=... -->
Igor Sysoev <igor@sysoev.ru>
parents: 751
diff changeset
564 ngx_log_error(NGX_LOG_ALERT, r->connection->log, 0,
4ab852b691f5 <!--#include virtual=... set=... -->
Igor Sysoev <igor@sysoev.ru>
parents: 751
diff changeset
565 "ngx_http_fastcgi_module does not support "
1635
481fe1bc191b fix typo
Igor Sysoev <igor@sysoev.ru>
parents: 1565
diff changeset
566 "subrequest in memory");
777
4ab852b691f5 <!--#include virtual=... set=... -->
Igor Sysoev <igor@sysoev.ru>
parents: 751
diff changeset
567 return NGX_HTTP_INTERNAL_SERVER_ERROR;
4ab852b691f5 <!--#include virtual=... set=... -->
Igor Sysoev <igor@sysoev.ru>
parents: 751
diff changeset
568 }
4ab852b691f5 <!--#include virtual=... set=... -->
Igor Sysoev <igor@sysoev.ru>
parents: 751
diff changeset
569
3006
95972b9e790b ngx_http_upstream_create() to cleanup the previous upstream after
Igor Sysoev <igor@sysoev.ru>
parents: 2989
diff changeset
570 if (ngx_http_upstream_create(r) != NGX_OK) {
95972b9e790b ngx_http_upstream_create() to cleanup the previous upstream after
Igor Sysoev <igor@sysoev.ru>
parents: 2989
diff changeset
571 return NGX_HTTP_INTERNAL_SERVER_ERROR;
95972b9e790b ngx_http_upstream_create() to cleanup the previous upstream after
Igor Sysoev <igor@sysoev.ru>
parents: 2989
diff changeset
572 }
95972b9e790b ngx_http_upstream_create() to cleanup the previous upstream after
Igor Sysoev <igor@sysoev.ru>
parents: 2989
diff changeset
573
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
574 f = ngx_pcalloc(r->pool, sizeof(ngx_http_fastcgi_ctx_t));
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
575 if (f == NULL) {
3006
95972b9e790b ngx_http_upstream_create() to cleanup the previous upstream after
Igor Sysoev <igor@sysoev.ru>
parents: 2989
diff changeset
576 return NGX_HTTP_INTERNAL_SERVER_ERROR;
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
577 }
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
578
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
579 ngx_http_set_ctx(r, f, ngx_http_fastcgi_module);
2395
b1a24d3cf4dd clear fastcgi ctx for internal redirection via named location
Igor Sysoev <igor@sysoev.ru>
parents: 2391
diff changeset
580
2390
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
581 flcf = ngx_http_get_module_loc_conf(r, ngx_http_fastcgi_module);
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
582
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
583 if (flcf->fastcgi_lengths) {
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
584 if (ngx_http_fastcgi_eval(r, flcf) != NGX_OK) {
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
585 return NGX_HTTP_INTERNAL_SERVER_ERROR;
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
586 }
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
587 }
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
588
3006
95972b9e790b ngx_http_upstream_create() to cleanup the previous upstream after
Igor Sysoev <igor@sysoev.ru>
parents: 2989
diff changeset
589 u = r->upstream;
95972b9e790b ngx_http_upstream_create() to cleanup the previous upstream after
Igor Sysoev <igor@sysoev.ru>
parents: 2989
diff changeset
590
3516
dd1570b6f237 ngx_str_set() and ngx_str_null()
Igor Sysoev <igor@sysoev.ru>
parents: 3494
diff changeset
591 ngx_str_set(&u->schema, "fastcgi://");
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
592 u->output.tag = (ngx_buf_tag_t) &ngx_http_fastcgi_module;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
593
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
594 u->conf = &flcf->upstream;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
595
2602
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
596 #if (NGX_HTTP_CACHE)
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
597 u->create_key = ngx_http_fastcgi_create_key;
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
598 #endif
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
599 u->create_request = ngx_http_fastcgi_create_request;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
600 u->reinit_request = ngx_http_fastcgi_reinit_request;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
601 u->process_header = ngx_http_fastcgi_process_header;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
602 u->abort_request = ngx_http_fastcgi_abort_request;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
603 u->finalize_request = ngx_http_fastcgi_finalize_request;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
604
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
605 u->buffering = 1;
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
606
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
607 u->pipe = ngx_pcalloc(r->pool, sizeof(ngx_event_pipe_t));
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
608 if (u->pipe == NULL) {
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
609 return NGX_HTTP_INTERNAL_SERVER_ERROR;
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
610 }
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
611
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
612 u->pipe->input_filter = ngx_http_fastcgi_input_filter;
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
613 u->pipe->input_ctx = r;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
614
4122
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
615 u->input_filter_init = ngx_http_fastcgi_input_filter_init;
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
616
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
617 rc = ngx_http_read_client_request_body(r, ngx_http_upstream_init);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
618
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
619 if (rc >= NGX_HTTP_SPECIAL_RESPONSE) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
620 return rc;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
621 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
622
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
623 return NGX_DONE;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
624 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
625
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
626
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
627 static ngx_int_t
2390
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
628 ngx_http_fastcgi_eval(ngx_http_request_t *r, ngx_http_fastcgi_loc_conf_t *flcf)
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
629 {
3610
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3563
diff changeset
630 ngx_url_t url;
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3563
diff changeset
631 ngx_http_upstream_t *u;
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3563
diff changeset
632
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3563
diff changeset
633 ngx_memzero(&url, sizeof(ngx_url_t));
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3563
diff changeset
634
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3563
diff changeset
635 if (ngx_http_script_run(r, &url.url, flcf->fastcgi_lengths->elts, 0,
2390
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
636 flcf->fastcgi_values->elts)
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
637 == NULL)
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
638 {
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
639 return NGX_ERROR;
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
640 }
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
641
3610
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3563
diff changeset
642 url.no_resolve = 1;
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3563
diff changeset
643
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3563
diff changeset
644 if (ngx_parse_url(r->pool, &url) != NGX_OK) {
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3563
diff changeset
645 if (url.err) {
2390
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
646 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
3610
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3563
diff changeset
647 "%s in upstream \"%V\"", url.err, &url.url);
2390
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
648 }
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
649
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
650 return NGX_ERROR;
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
651 }
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
652
3610
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3563
diff changeset
653 u = r->upstream;
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3563
diff changeset
654
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3563
diff changeset
655 u->resolved = ngx_pcalloc(r->pool, sizeof(ngx_http_upstream_resolved_t));
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3563
diff changeset
656 if (u->resolved == NULL) {
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3563
diff changeset
657 return NGX_ERROR;
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3563
diff changeset
658 }
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3563
diff changeset
659
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3563
diff changeset
660 if (url.addrs && url.addrs[0].sockaddr) {
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3563
diff changeset
661 u->resolved->sockaddr = url.addrs[0].sockaddr;
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3563
diff changeset
662 u->resolved->socklen = url.addrs[0].socklen;
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3563
diff changeset
663 u->resolved->naddrs = 1;
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3563
diff changeset
664 u->resolved->host = url.addrs[0].name;
2422
7af1e5fe102c variable support for unix sockets in fastcgi_pass and proxy_pass
Igor Sysoev <igor@sysoev.ru>
parents: 2396
diff changeset
665
7af1e5fe102c variable support for unix sockets in fastcgi_pass and proxy_pass
Igor Sysoev <igor@sysoev.ru>
parents: 2396
diff changeset
666 } else {
3610
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3563
diff changeset
667 u->resolved->host = url.host;
edcc271f7c4c change variable names
Igor Sysoev <igor@sysoev.ru>
parents: 3563
diff changeset
668 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: 3850
diff changeset
669 u->resolved->no_port = url.no_port;
2422
7af1e5fe102c variable support for unix sockets in fastcgi_pass and proxy_pass
Igor Sysoev <igor@sysoev.ru>
parents: 2396
diff changeset
670 }
2390
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
671
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
672 return NGX_OK;
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
673 }
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
674
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
675
2602
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
676 #if (NGX_HTTP_CACHE)
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
677
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
678 static ngx_int_t
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
679 ngx_http_fastcgi_create_key(ngx_http_request_t *r)
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
680 {
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
681 ngx_str_t *key;
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
682 ngx_http_fastcgi_loc_conf_t *flcf;
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
683
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
684 key = ngx_array_push(&r->cache->keys);
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
685 if (key == NULL) {
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
686 return NGX_ERROR;
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
687 }
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
688
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
689 flcf = ngx_http_get_module_loc_conf(r, ngx_http_fastcgi_module);
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
690
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
691 if (ngx_http_complex_value(r, &flcf->cache_key, key) != NGX_OK) {
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
692 return NGX_ERROR;
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
693 }
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
694
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
695 return NGX_OK;
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
696 }
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
697
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
698 #endif
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
699
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
700
2390
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
701 static ngx_int_t
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
702 ngx_http_fastcgi_create_request(ngx_http_request_t *r)
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
703 {
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
704 off_t file_pos;
3560
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
705 u_char ch, *pos, *lowcase_key;
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
706 size_t size, len, key_len, val_len, padding,
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
707 allocated;
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
708 ngx_uint_t i, n, next, hash, header_params;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
709 ngx_buf_t *b;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
710 ngx_chain_t *cl, *body;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
711 ngx_list_part_t *part;
3560
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
712 ngx_table_elt_t *header, **ignored;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
713 ngx_http_script_code_pt code;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
714 ngx_http_script_engine_t e, le;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
715 ngx_http_fastcgi_header_t *h;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
716 ngx_http_fastcgi_loc_conf_t *flcf;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
717 ngx_http_script_len_code_pt lcode;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
718
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
719 len = 0;
3560
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
720 header_params = 0;
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
721 ignored = NULL;
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
722
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
723 flcf = ngx_http_get_module_loc_conf(r, ngx_http_fastcgi_module);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
724
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
725 if (flcf->params_len) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
726 ngx_memzero(&le, sizeof(ngx_http_script_engine_t));
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
727
1565
4c43e25d11ea fix English grammar
Igor Sysoev <igor@sysoev.ru>
parents: 1563
diff changeset
728 ngx_http_script_flush_no_cacheable_variables(r, flcf->flushes);
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
729 le.flushed = 1;
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
730
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
731 le.ip = flcf->params_len->elts;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
732 le.request = r;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
733
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
734 while (*(uintptr_t *) le.ip) {
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
735
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
736 lcode = *(ngx_http_script_len_code_pt *) le.ip;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
737 key_len = lcode(&le);
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
738
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
739 for (val_len = 0; *(uintptr_t *) le.ip; val_len += lcode(&le)) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
740 lcode = *(ngx_http_script_len_code_pt *) le.ip;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
741 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
742 le.ip += sizeof(uintptr_t);
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
743
537
c9ad0d9c7d59 nginx-0.1.43-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 529
diff changeset
744 len += 1 + key_len + ((val_len > 127) ? 4 : 1) + val_len;
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
745 }
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
746 }
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
747
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
748 if (flcf->upstream.pass_request_headers) {
485
4ebe09b07e30 nginx-0.1.17-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
749
3560
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
750 allocated = 0;
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
751 lowcase_key = NULL;
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
752
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
753 if (flcf->header_params) {
4015
e0a435f5f504 Fix ignored headers handling in fastcgi/scgi/uwsgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3976
diff changeset
754 n = 0;
e0a435f5f504 Fix ignored headers handling in fastcgi/scgi/uwsgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3976
diff changeset
755 part = &r->headers_in.headers.part;
e0a435f5f504 Fix ignored headers handling in fastcgi/scgi/uwsgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3976
diff changeset
756
e0a435f5f504 Fix ignored headers handling in fastcgi/scgi/uwsgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3976
diff changeset
757 while (part) {
e0a435f5f504 Fix ignored headers handling in fastcgi/scgi/uwsgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3976
diff changeset
758 n += part->nelts;
e0a435f5f504 Fix ignored headers handling in fastcgi/scgi/uwsgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3976
diff changeset
759 part = part->next;
e0a435f5f504 Fix ignored headers handling in fastcgi/scgi/uwsgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3976
diff changeset
760 }
e0a435f5f504 Fix ignored headers handling in fastcgi/scgi/uwsgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3976
diff changeset
761
e0a435f5f504 Fix ignored headers handling in fastcgi/scgi/uwsgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 3976
diff changeset
762 ignored = ngx_palloc(r->pool, n * sizeof(void *));
3560
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
763 if (ignored == NULL) {
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
764 return NGX_ERROR;
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
765 }
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
766 }
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
767
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
768 part = &r->headers_in.headers.part;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
769 header = part->elts;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
770
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
771 for (i = 0; /* void */; i++) {
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
772
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
773 if (i >= part->nelts) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
774 if (part->next == NULL) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
775 break;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
776 }
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
777
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
778 part = part->next;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
779 header = part->elts;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
780 i = 0;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
781 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
782
3560
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
783 if (flcf->header_params) {
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
784 if (allocated < header[i].key.len) {
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
785 allocated = header[i].key.len + 16;
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
786 lowcase_key = ngx_pnalloc(r->pool, allocated);
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
787 if (lowcase_key == NULL) {
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
788 return NGX_ERROR;
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
789 }
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
790 }
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
791
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
792 hash = 0;
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
793
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
794 for (n = 0; n < header[i].key.len; n++) {
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
795 ch = header[i].key.data[n];
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
796
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
797 if (ch >= 'A' && ch <= 'Z') {
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
798 ch |= 0x20;
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
799
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
800 } else if (ch == '-') {
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
801 ch = '_';
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
802 }
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
803
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
804 hash = ngx_hash(hash, ch);
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
805 lowcase_key[n] = ch;
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
806 }
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
807
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
808 if (ngx_hash_find(&flcf->headers_hash, hash, lowcase_key, n)) {
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
809 ignored[header_params++] = &header[i];
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
810 continue;
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
811 }
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
812
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
813 n += sizeof("HTTP_") - 1;
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
814
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
815 } else {
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
816 n = sizeof("HTTP_") - 1 + header[i].key.len;
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
817 }
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
818
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
819 len += ((n > 127) ? 4 : 1) + ((header[i].value.len > 127) ? 4 : 1)
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
820 + n + header[i].value.len;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
821 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
822 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
823
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
824
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
825 if (len > 65535) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
826 ngx_log_error(NGX_LOG_ALERT, r->connection->log, 0,
1678
d24280472a9f log how big fastcgi record
Igor Sysoev <igor@sysoev.ru>
parents: 1658
diff changeset
827 "fastcgi request record is too big: %uz", len);
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
828 return NGX_ERROR;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
829 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
830
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
831
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
832 padding = 8 - len % 8;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
833 padding = (padding == 8) ? 0 : padding;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
834
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
835
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
836 size = sizeof(ngx_http_fastcgi_header_t)
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
837 + sizeof(ngx_http_fastcgi_begin_request_t)
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
838
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
839 + sizeof(ngx_http_fastcgi_header_t) /* NGX_HTTP_FASTCGI_PARAMS */
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
840 + len + padding
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
841 + sizeof(ngx_http_fastcgi_header_t) /* NGX_HTTP_FASTCGI_PARAMS */
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
842
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
843 + sizeof(ngx_http_fastcgi_header_t); /* NGX_HTTP_FASTCGI_STDIN */
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
844
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
845
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
846 b = ngx_create_temp_buf(r->pool, size);
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
847 if (b == NULL) {
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
848 return NGX_ERROR;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
849 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
850
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
851 cl = ngx_alloc_chain_link(r->pool);
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
852 if (cl == NULL) {
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
853 return NGX_ERROR;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
854 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
855
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
856 cl->buf = b;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
857
4122
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
858 ngx_http_fastcgi_request_start.br.flags =
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
859 flcf->keep_conn ? NGX_HTTP_FASTCGI_KEEP_CONN : 0;
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
860
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
861 ngx_memcpy(b->pos, &ngx_http_fastcgi_request_start,
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
862 sizeof(ngx_http_fastcgi_request_start_t));
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
863
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
864 h = (ngx_http_fastcgi_header_t *)
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
865 (b->pos + sizeof(ngx_http_fastcgi_header_t)
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
866 + sizeof(ngx_http_fastcgi_begin_request_t));
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
867
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
868 h->content_length_hi = (u_char) ((len >> 8) & 0xff);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
869 h->content_length_lo = (u_char) (len & 0xff);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
870 h->padding_length = (u_char) padding;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
871 h->reserved = 0;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
872
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
873 b->last = b->pos + sizeof(ngx_http_fastcgi_header_t)
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
874 + sizeof(ngx_http_fastcgi_begin_request_t)
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
875 + sizeof(ngx_http_fastcgi_header_t);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
876
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
877
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
878 if (flcf->params_len) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
879 ngx_memzero(&e, sizeof(ngx_http_script_engine_t));
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
880
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
881 e.ip = flcf->params->elts;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
882 e.pos = b->last;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
883 e.request = r;
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
884 e.flushed = 1;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
885
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
886 le.ip = flcf->params_len->elts;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
887
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
888 while (*(uintptr_t *) le.ip) {
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
889
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
890 lcode = *(ngx_http_script_len_code_pt *) le.ip;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
891 key_len = (u_char) lcode(&le);
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
892
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
893 for (val_len = 0; *(uintptr_t *) le.ip; val_len += lcode(&le)) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
894 lcode = *(ngx_http_script_len_code_pt *) le.ip;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
895 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
896 le.ip += sizeof(uintptr_t);
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
897
537
c9ad0d9c7d59 nginx-0.1.43-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 529
diff changeset
898 *e.pos++ = (u_char) key_len;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
899
537
c9ad0d9c7d59 nginx-0.1.43-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 529
diff changeset
900 if (val_len > 127) {
c9ad0d9c7d59 nginx-0.1.43-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 529
diff changeset
901 *e.pos++ = (u_char) (((val_len >> 24) & 0x7f) | 0x80);
c9ad0d9c7d59 nginx-0.1.43-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 529
diff changeset
902 *e.pos++ = (u_char) ((val_len >> 16) & 0xff);
c9ad0d9c7d59 nginx-0.1.43-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 529
diff changeset
903 *e.pos++ = (u_char) ((val_len >> 8) & 0xff);
c9ad0d9c7d59 nginx-0.1.43-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 529
diff changeset
904 *e.pos++ = (u_char) (val_len & 0xff);
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
905
537
c9ad0d9c7d59 nginx-0.1.43-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 529
diff changeset
906 } else {
c9ad0d9c7d59 nginx-0.1.43-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 529
diff changeset
907 *e.pos++ = (u_char) val_len;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
908 }
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
909
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
910 while (*(uintptr_t *) e.ip) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
911 code = *(ngx_http_script_code_pt *) e.ip;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
912 code((ngx_http_script_engine_t *) &e);
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
913 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
914 e.ip += sizeof(uintptr_t);
1945
ab18958e1322 fastcgi params debug logging
Igor Sysoev <igor@sysoev.ru>
parents: 1886
diff changeset
915
ab18958e1322 fastcgi params debug logging
Igor Sysoev <igor@sysoev.ru>
parents: 1886
diff changeset
916 ngx_log_debug4(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
ab18958e1322 fastcgi params debug logging
Igor Sysoev <igor@sysoev.ru>
parents: 1886
diff changeset
917 "fastcgi param: \"%*s: %*s\"",
ab18958e1322 fastcgi params debug logging
Igor Sysoev <igor@sysoev.ru>
parents: 1886
diff changeset
918 key_len, e.pos - (key_len + val_len),
ab18958e1322 fastcgi params debug logging
Igor Sysoev <igor@sysoev.ru>
parents: 1886
diff changeset
919 val_len, e.pos - val_len);
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
920 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
921
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
922 b->last = e.pos;
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
923 }
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
924
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
925
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
926 if (flcf->upstream.pass_request_headers) {
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
927
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
928 part = &r->headers_in.headers.part;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
929 header = part->elts;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
930
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
931 for (i = 0; /* void */; i++) {
491
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
932
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
933 if (i >= part->nelts) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
934 if (part->next == NULL) {
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
935 break;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
936 }
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
937
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
938 part = part->next;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
939 header = part->elts;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
940 i = 0;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
941 }
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
942
3560
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
943 for (n = 0; n < header_params; n++) {
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
944 if (&header[i] == ignored[n]) {
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
945 goto next;
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
946 }
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
947 }
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
948
3559
519dcf4cb3de add client request headers debug logging in fastcgi
Igor Sysoev <igor@sysoev.ru>
parents: 3558
diff changeset
949 key_len = sizeof("HTTP_") - 1 + header[i].key.len;
519dcf4cb3de add client request headers debug logging in fastcgi
Igor Sysoev <igor@sysoev.ru>
parents: 3558
diff changeset
950 if (key_len > 127) {
519dcf4cb3de add client request headers debug logging in fastcgi
Igor Sysoev <igor@sysoev.ru>
parents: 3558
diff changeset
951 *b->last++ = (u_char) (((key_len >> 24) & 0x7f) | 0x80);
519dcf4cb3de add client request headers debug logging in fastcgi
Igor Sysoev <igor@sysoev.ru>
parents: 3558
diff changeset
952 *b->last++ = (u_char) ((key_len >> 16) & 0xff);
519dcf4cb3de add client request headers debug logging in fastcgi
Igor Sysoev <igor@sysoev.ru>
parents: 3558
diff changeset
953 *b->last++ = (u_char) ((key_len >> 8) & 0xff);
519dcf4cb3de add client request headers debug logging in fastcgi
Igor Sysoev <igor@sysoev.ru>
parents: 3558
diff changeset
954 *b->last++ = (u_char) (key_len & 0xff);
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
955
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
956 } else {
3559
519dcf4cb3de add client request headers debug logging in fastcgi
Igor Sysoev <igor@sysoev.ru>
parents: 3558
diff changeset
957 *b->last++ = (u_char) key_len;
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
958 }
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
959
3559
519dcf4cb3de add client request headers debug logging in fastcgi
Igor Sysoev <igor@sysoev.ru>
parents: 3558
diff changeset
960 val_len = header[i].value.len;
519dcf4cb3de add client request headers debug logging in fastcgi
Igor Sysoev <igor@sysoev.ru>
parents: 3558
diff changeset
961 if (val_len > 127) {
519dcf4cb3de add client request headers debug logging in fastcgi
Igor Sysoev <igor@sysoev.ru>
parents: 3558
diff changeset
962 *b->last++ = (u_char) (((val_len >> 24) & 0x7f) | 0x80);
519dcf4cb3de add client request headers debug logging in fastcgi
Igor Sysoev <igor@sysoev.ru>
parents: 3558
diff changeset
963 *b->last++ = (u_char) ((val_len >> 16) & 0xff);
519dcf4cb3de add client request headers debug logging in fastcgi
Igor Sysoev <igor@sysoev.ru>
parents: 3558
diff changeset
964 *b->last++ = (u_char) ((val_len >> 8) & 0xff);
519dcf4cb3de add client request headers debug logging in fastcgi
Igor Sysoev <igor@sysoev.ru>
parents: 3558
diff changeset
965 *b->last++ = (u_char) (val_len & 0xff);
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
966
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
967 } else {
3559
519dcf4cb3de add client request headers debug logging in fastcgi
Igor Sysoev <igor@sysoev.ru>
parents: 3558
diff changeset
968 *b->last++ = (u_char) val_len;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
969 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
970
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
971 b->last = ngx_cpymem(b->last, "HTTP_", sizeof("HTTP_") - 1);
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
972
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
973 for (n = 0; n < header[i].key.len; n++) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
974 ch = header[i].key.data[n];
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
975
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
976 if (ch >= 'a' && ch <= 'z') {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
977 ch &= ~0x20;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
978
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
979 } else if (ch == '-') {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
980 ch = '_';
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
981 }
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
982
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
983 *b->last++ = ch;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
984 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
985
3559
519dcf4cb3de add client request headers debug logging in fastcgi
Igor Sysoev <igor@sysoev.ru>
parents: 3558
diff changeset
986 b->last = ngx_copy(b->last, header[i].value.data, val_len);
519dcf4cb3de add client request headers debug logging in fastcgi
Igor Sysoev <igor@sysoev.ru>
parents: 3558
diff changeset
987
519dcf4cb3de add client request headers debug logging in fastcgi
Igor Sysoev <igor@sysoev.ru>
parents: 3558
diff changeset
988 ngx_log_debug4(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
519dcf4cb3de add client request headers debug logging in fastcgi
Igor Sysoev <igor@sysoev.ru>
parents: 3558
diff changeset
989 "fastcgi param: \"%*s: %*s\"",
519dcf4cb3de add client request headers debug logging in fastcgi
Igor Sysoev <igor@sysoev.ru>
parents: 3558
diff changeset
990 key_len, b->last - (key_len + val_len),
519dcf4cb3de add client request headers debug logging in fastcgi
Igor Sysoev <igor@sysoev.ru>
parents: 3558
diff changeset
991 val_len, b->last - val_len);
3560
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
992 next:
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
993
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
994 continue;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
995 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
996 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
997
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
998
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
999 if (padding) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1000 ngx_memzero(b->last, padding);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1001 b->last += padding;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1002 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1003
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1004
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1005 h = (ngx_http_fastcgi_header_t *) b->last;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1006 b->last += sizeof(ngx_http_fastcgi_header_t);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1007
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1008 h->version = 1;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1009 h->type = NGX_HTTP_FASTCGI_PARAMS;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1010 h->request_id_hi = 0;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1011 h->request_id_lo = 1;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1012 h->content_length_hi = 0;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1013 h->content_length_lo = 0;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1014 h->padding_length = 0;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1015 h->reserved = 0;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1016
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1017 h = (ngx_http_fastcgi_header_t *) b->last;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1018 b->last += sizeof(ngx_http_fastcgi_header_t);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1019
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1020 if (flcf->upstream.pass_request_body) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1021 body = r->upstream->request_bufs;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1022 r->upstream->request_bufs = cl;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1023
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1024 #if (NGX_SUPPRESS_WARN)
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1025 file_pos = 0;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1026 pos = NULL;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1027 #endif
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1028
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1029 while (body) {
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1030
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1031 if (body->buf->in_file) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1032 file_pos = body->buf->file_pos;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1033
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1034 } else {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1035 pos = body->buf->pos;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1036 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1037
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1038 next = 0;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1039
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1040 do {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1041 b = ngx_alloc_buf(r->pool);
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1042 if (b == NULL) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1043 return NGX_ERROR;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1044 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1045
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1046 ngx_memcpy(b, body->buf, sizeof(ngx_buf_t));
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1047
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1048 if (body->buf->in_file) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1049 b->file_pos = file_pos;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1050 file_pos += 32 * 1024;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1051
1142
e479e0b02e5a fix "zero size buf" if request body file is multiple of 32K and FastCGI is used
Igor Sysoev <igor@sysoev.ru>
parents: 1125
diff changeset
1052 if (file_pos >= body->buf->file_last) {
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1053 file_pos = body->buf->file_last;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1054 next = 1;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1055 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1056
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1057 b->file_last = file_pos;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1058 len = (ngx_uint_t) (file_pos - b->file_pos);
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1059
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1060 } else {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1061 b->pos = pos;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1062 pos += 32 * 1024;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1063
1142
e479e0b02e5a fix "zero size buf" if request body file is multiple of 32K and FastCGI is used
Igor Sysoev <igor@sysoev.ru>
parents: 1125
diff changeset
1064 if (pos >= body->buf->last) {
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1065 pos = body->buf->last;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1066 next = 1;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1067 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1068
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1069 b->last = pos;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1070 len = (ngx_uint_t) (pos - b->pos);
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1071 }
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1072
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1073 padding = 8 - len % 8;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1074 padding = (padding == 8) ? 0 : padding;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1075
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1076 h->version = 1;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1077 h->type = NGX_HTTP_FASTCGI_STDIN;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1078 h->request_id_hi = 0;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1079 h->request_id_lo = 1;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1080 h->content_length_hi = (u_char) ((len >> 8) & 0xff);
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1081 h->content_length_lo = (u_char) (len & 0xff);
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1082 h->padding_length = (u_char) padding;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1083 h->reserved = 0;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1084
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1085 cl->next = ngx_alloc_chain_link(r->pool);
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1086 if (cl->next == NULL) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1087 return NGX_ERROR;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1088 }
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1089
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1090 cl = cl->next;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1091 cl->buf = b;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1092
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1093 b = ngx_create_temp_buf(r->pool,
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1094 sizeof(ngx_http_fastcgi_header_t)
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1095 + padding);
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1096 if (b == NULL) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1097 return NGX_ERROR;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1098 }
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1099
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1100 if (padding) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1101 ngx_memzero(b->last, padding);
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1102 b->last += padding;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1103 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1104
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1105 h = (ngx_http_fastcgi_header_t *) b->last;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1106 b->last += sizeof(ngx_http_fastcgi_header_t);
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1107
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1108 cl->next = ngx_alloc_chain_link(r->pool);
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1109 if (cl->next == NULL) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1110 return NGX_ERROR;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1111 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1112
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1113 cl = cl->next;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1114 cl->buf = b;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1115
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1116 } while (!next);
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1117
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1118 body = body->next;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1119 }
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1120
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1121 } else {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1122 r->upstream->request_bufs = cl;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1123 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1124
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1125 h->version = 1;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1126 h->type = NGX_HTTP_FASTCGI_STDIN;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1127 h->request_id_hi = 0;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1128 h->request_id_lo = 1;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1129 h->content_length_hi = 0;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1130 h->content_length_lo = 0;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1131 h->padding_length = 0;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1132 h->reserved = 0;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1133
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1134 cl->next = NULL;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1135
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1136 return NGX_OK;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1137 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1138
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1139
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
1140 static ngx_int_t
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
1141 ngx_http_fastcgi_reinit_request(ngx_http_request_t *r)
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1142 {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1143 ngx_http_fastcgi_ctx_t *f;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1144
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1145 f = ngx_http_get_module_ctx(r, ngx_http_fastcgi_module);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1146
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1147 if (f == NULL) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1148 return NGX_OK;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1149 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1150
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1151 f->state = ngx_http_fastcgi_st_version;
615
5ef026a2ac74 nginx-0.3.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1152 f->fastcgi_stdout = 0;
3460
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1153 f->large_stderr = 0;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1154
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1155 return NGX_OK;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1156 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1157
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1158
507
cd3117ad9aab nginx-0.1.28-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
1159 static ngx_int_t
cd3117ad9aab nginx-0.1.28-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
1160 ngx_http_fastcgi_process_header(ngx_http_request_t *r)
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1161 {
3025
baff3edcb6e2 refactor fastcgi stderr handling
Igor Sysoev <igor@sysoev.ru>
parents: 3011
diff changeset
1162 u_char *p, *msg, *start, *last,
baff3edcb6e2 refactor fastcgi stderr handling
Igor Sysoev <igor@sysoev.ru>
parents: 3011
diff changeset
1163 *part_start, *part_end;
1276
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1164 size_t size;
3025
baff3edcb6e2 refactor fastcgi stderr handling
Igor Sysoev <igor@sysoev.ru>
parents: 3011
diff changeset
1165 ngx_str_t *status_line, *pattern;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1166 ngx_int_t rc, status;
1276
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1167 ngx_buf_t buf;
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
1168 ngx_uint_t i;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1169 ngx_table_elt_t *h;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1170 ngx_http_upstream_t *u;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1171 ngx_http_fastcgi_ctx_t *f;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1172 ngx_http_upstream_header_t *hh;
1228
863c3490103e fastcgi_catch_stderr
Igor Sysoev <igor@sysoev.ru>
parents: 1142
diff changeset
1173 ngx_http_fastcgi_loc_conf_t *flcf;
1276
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1174 ngx_http_fastcgi_split_part_t *part;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1175 ngx_http_upstream_main_conf_t *umcf;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1176
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1177 f = ngx_http_get_module_ctx(r, ngx_http_fastcgi_module);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1178
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1179 umcf = ngx_http_get_module_main_conf(r, ngx_http_upstream_module);
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1180
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1181 u = r->upstream;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1182
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1183 for ( ;; ) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1184
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1185 if (f->state < ngx_http_fastcgi_st_data) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1186
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
1187 f->pos = u->buffer.pos;
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
1188 f->last = u->buffer.last;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1189
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1190 rc = ngx_http_fastcgi_process_record(r, f);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1191
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
1192 u->buffer.pos = f->pos;
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
1193 u->buffer.last = f->last;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1194
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1195 if (rc == NGX_AGAIN) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1196 return NGX_AGAIN;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1197 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1198
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1199 if (rc == NGX_ERROR) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1200 return NGX_HTTP_UPSTREAM_INVALID_HEADER;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1201 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1202
491
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1203 if (f->type != NGX_HTTP_FASTCGI_STDOUT
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1204 && f->type != NGX_HTTP_FASTCGI_STDERR)
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1205 {
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1206 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1207 "upstream sent unexpected FastCGI record: %d",
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1208 f->type);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1209
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1210 return NGX_HTTP_UPSTREAM_INVALID_HEADER;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1211 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1212
491
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1213 if (f->type == NGX_HTTP_FASTCGI_STDOUT && f->length == 0) {
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1214 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1215 "upstream closed prematurely FastCGI stdout");
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1216
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1217 return NGX_HTTP_UPSTREAM_INVALID_HEADER;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1218 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1219 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1220
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1221 if (f->state == ngx_http_fastcgi_st_padding) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1222
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
1223 if (u->buffer.pos + f->padding < u->buffer.last) {
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1224 f->state = ngx_http_fastcgi_st_version;
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
1225 u->buffer.pos += f->padding;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1226
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1227 continue;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1228 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1229
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
1230 if (u->buffer.pos + f->padding == u->buffer.last) {
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1231 f->state = ngx_http_fastcgi_st_version;
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
1232 u->buffer.pos = u->buffer.last;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1233
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1234 return NGX_AGAIN;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1235 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1236
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
1237 f->padding -= u->buffer.last - u->buffer.pos;
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
1238 u->buffer.pos = u->buffer.last;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1239
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1240 return NGX_AGAIN;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1241 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1242
491
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1243
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1244 /* f->state == ngx_http_fastcgi_st_data */
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1245
491
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1246 if (f->type == NGX_HTTP_FASTCGI_STDERR) {
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1247
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1248 if (f->length) {
3025
baff3edcb6e2 refactor fastcgi stderr handling
Igor Sysoev <igor@sysoev.ru>
parents: 3011
diff changeset
1249 msg = u->buffer.pos;
491
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1250
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
1251 if (u->buffer.pos + f->length <= u->buffer.last) {
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
1252 u->buffer.pos += f->length;
491
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1253 f->length = 0;
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1254 f->state = ngx_http_fastcgi_st_padding;
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1255
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
1256 } else {
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
1257 f->length -= u->buffer.last - u->buffer.pos;
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
1258 u->buffer.pos = u->buffer.last;
491
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1259 }
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1260
3025
baff3edcb6e2 refactor fastcgi stderr handling
Igor Sysoev <igor@sysoev.ru>
parents: 3011
diff changeset
1261 for (p = u->buffer.pos - 1; msg < p; p--) {
baff3edcb6e2 refactor fastcgi stderr handling
Igor Sysoev <igor@sysoev.ru>
parents: 3011
diff changeset
1262 if (*p != LF && *p != CR && *p != '.' && *p != ' ') {
baff3edcb6e2 refactor fastcgi stderr handling
Igor Sysoev <igor@sysoev.ru>
parents: 3011
diff changeset
1263 break;
baff3edcb6e2 refactor fastcgi stderr handling
Igor Sysoev <igor@sysoev.ru>
parents: 3011
diff changeset
1264 }
491
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1265 }
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1266
3025
baff3edcb6e2 refactor fastcgi stderr handling
Igor Sysoev <igor@sysoev.ru>
parents: 3011
diff changeset
1267 p++;
baff3edcb6e2 refactor fastcgi stderr handling
Igor Sysoev <igor@sysoev.ru>
parents: 3011
diff changeset
1268
491
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1269 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
3025
baff3edcb6e2 refactor fastcgi stderr handling
Igor Sysoev <igor@sysoev.ru>
parents: 3011
diff changeset
1270 "FastCGI sent in stderr: \"%*s\"", p - msg, msg);
491
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1271
1228
863c3490103e fastcgi_catch_stderr
Igor Sysoev <igor@sysoev.ru>
parents: 1142
diff changeset
1272 flcf = ngx_http_get_module_loc_conf(r, ngx_http_fastcgi_module);
863c3490103e fastcgi_catch_stderr
Igor Sysoev <igor@sysoev.ru>
parents: 1142
diff changeset
1273
863c3490103e fastcgi_catch_stderr
Igor Sysoev <igor@sysoev.ru>
parents: 1142
diff changeset
1274 if (flcf->catch_stderr) {
863c3490103e fastcgi_catch_stderr
Igor Sysoev <igor@sysoev.ru>
parents: 1142
diff changeset
1275 pattern = flcf->catch_stderr->elts;
863c3490103e fastcgi_catch_stderr
Igor Sysoev <igor@sysoev.ru>
parents: 1142
diff changeset
1276
863c3490103e fastcgi_catch_stderr
Igor Sysoev <igor@sysoev.ru>
parents: 1142
diff changeset
1277 for (i = 0; i < flcf->catch_stderr->nelts; i++) {
3025
baff3edcb6e2 refactor fastcgi stderr handling
Igor Sysoev <igor@sysoev.ru>
parents: 3011
diff changeset
1278 if (ngx_strnstr(msg, (char *) pattern[i].data,
baff3edcb6e2 refactor fastcgi stderr handling
Igor Sysoev <igor@sysoev.ru>
parents: 3011
diff changeset
1279 p - msg)
baff3edcb6e2 refactor fastcgi stderr handling
Igor Sysoev <igor@sysoev.ru>
parents: 3011
diff changeset
1280 != NULL)
baff3edcb6e2 refactor fastcgi stderr handling
Igor Sysoev <igor@sysoev.ru>
parents: 3011
diff changeset
1281 {
1700
7f3350b18e75 return NGX_HTTP_UPSTREAM_INVALID_HEADER instead of NGX_HTTP_BAD_GATEWAY
Igor Sysoev <igor@sysoev.ru>
parents: 1699
diff changeset
1282 return NGX_HTTP_UPSTREAM_INVALID_HEADER;
1228
863c3490103e fastcgi_catch_stderr
Igor Sysoev <igor@sysoev.ru>
parents: 1142
diff changeset
1283 }
863c3490103e fastcgi_catch_stderr
Igor Sysoev <igor@sysoev.ru>
parents: 1142
diff changeset
1284 }
863c3490103e fastcgi_catch_stderr
Igor Sysoev <igor@sysoev.ru>
parents: 1142
diff changeset
1285 }
863c3490103e fastcgi_catch_stderr
Igor Sysoev <igor@sysoev.ru>
parents: 1142
diff changeset
1286
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
1287 if (u->buffer.pos == u->buffer.last) {
615
5ef026a2ac74 nginx-0.3.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1288
5ef026a2ac74 nginx-0.3.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1289 if (!f->fastcgi_stdout) {
5ef026a2ac74 nginx-0.3.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1290
5ef026a2ac74 nginx-0.3.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1291 /*
5ef026a2ac74 nginx-0.3.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1292 * the special handling the large number
5ef026a2ac74 nginx-0.3.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1293 * of the PHP warnings to not allocate memory
5ef026a2ac74 nginx-0.3.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1294 */
5ef026a2ac74 nginx-0.3.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1295
3460
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1296 #if (NGX_HTTP_CACHE)
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1297 if (r->cache) {
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1298 u->buffer.pos = u->buffer.start
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1299 + r->cache->header_start;
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1300 } else {
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1301 u->buffer.pos = u->buffer.start;
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1302 }
3850
ca7b9caa20e5 fix large stderr handling without http cache
Igor Sysoev <igor@sysoev.ru>
parents: 3735
diff changeset
1303 #else
ca7b9caa20e5 fix large stderr handling without http cache
Igor Sysoev <igor@sysoev.ru>
parents: 3735
diff changeset
1304 u->buffer.pos = u->buffer.start;
3460
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1305 #endif
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1306 u->buffer.last = u->buffer.pos;
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1307 f->large_stderr = 1;
615
5ef026a2ac74 nginx-0.3.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1308 }
5ef026a2ac74 nginx-0.3.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1309
491
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1310 return NGX_AGAIN;
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1311 }
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1312
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1313 } else {
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1314 f->state = ngx_http_fastcgi_st_version;
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1315 }
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1316
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1317 continue;
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1318 }
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1319
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1320
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1321 /* f->type == NGX_HTTP_FASTCGI_STDOUT */
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1322
3460
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1323 #if (NGX_HTTP_CACHE)
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1324
3469
08a66ba99191 fix segfault if there was non cached large FastCGI stderr output before header,
Igor Sysoev <igor@sysoev.ru>
parents: 3460
diff changeset
1325 if (f->large_stderr && r->cache) {
3494
67b8a4e0d7e1 fix building without HTTP cache, the bug had been introduced in r3461
Igor Sysoev <igor@sysoev.ru>
parents: 3469
diff changeset
1326 u_char *start;
67b8a4e0d7e1 fix building without HTTP cache, the bug had been introduced in r3461
Igor Sysoev <igor@sysoev.ru>
parents: 3469
diff changeset
1327 ssize_t len;
67b8a4e0d7e1 fix building without HTTP cache, the bug had been introduced in r3461
Igor Sysoev <igor@sysoev.ru>
parents: 3469
diff changeset
1328 ngx_http_fastcgi_header_t *fh;
3460
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1329
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1330 start = u->buffer.start + r->cache->header_start;
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1331
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1332 len = u->buffer.pos - start - 2 * sizeof(ngx_http_fastcgi_header_t);
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1333
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1334 /*
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1335 * A tail of large stderr output before HTTP header is placed
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1336 * in a cache file without a FastCGI record header.
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1337 * To workaround it we put a dummy FastCGI record header at the
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1338 * start of the stderr output or update r->cache_header_start,
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1339 * if there is no enough place for the record header.
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1340 */
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1341
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1342 if (len >= 0) {
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1343 fh = (ngx_http_fastcgi_header_t *) start;
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1344 fh->version = 1;
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1345 fh->type = NGX_HTTP_FASTCGI_STDERR;
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1346 fh->request_id_hi = 0;
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1347 fh->request_id_lo = 1;
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1348 fh->content_length_hi = (u_char) ((len >> 8) & 0xff);
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1349 fh->content_length_lo = (u_char) (len & 0xff);
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1350 fh->padding_length = 0;
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1351 fh->reserved = 0;
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1352
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1353 } else {
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1354 r->cache->header_start += u->buffer.pos - start
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1355 - sizeof(ngx_http_fastcgi_header_t);
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1356 }
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1357
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1358 f->large_stderr = 0;
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1359 }
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1360
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1361 #endif
bbea0b19b608 fix cached FastCGI response with large stderr output before header
Igor Sysoev <igor@sysoev.ru>
parents: 3399
diff changeset
1362
615
5ef026a2ac74 nginx-0.3.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1363 f->fastcgi_stdout = 1;
5ef026a2ac74 nginx-0.3.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1364
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
1365 start = u->buffer.pos;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1366
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
1367 if (u->buffer.pos + f->length < u->buffer.last) {
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1368
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1369 /*
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
1370 * set u->buffer.last to the end of the FastCGI record data
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1371 * for ngx_http_parse_header_line()
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1372 */
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1373
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
1374 last = u->buffer.last;
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
1375 u->buffer.last = u->buffer.pos + f->length;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1376
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1377 } else {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1378 last = NULL;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1379 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1380
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1381 for ( ;; ) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1382
1276
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1383 part_start = u->buffer.pos;
3011
5957e869f04d fix a garbage in a split fastcgi header
Igor Sysoev <igor@sysoev.ru>
parents: 3010
diff changeset
1384 part_end = u->buffer.last;
1276
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1385
2256
8c17cfe63d2c underscores_in_headers
Igor Sysoev <igor@sysoev.ru>
parents: 2233
diff changeset
1386 rc = ngx_http_parse_header_line(r, &u->buffer, 1);
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1387
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1388 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1389 "http fastcgi parser: %d", rc);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1390
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1391 if (rc == NGX_AGAIN) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1392 break;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1393 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1394
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1395 if (rc == NGX_OK) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1396
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1397 /* a header line has been parsed successfully */
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1398
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1399 h = ngx_list_push(&u->headers_in.headers);
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1400 if (h == NULL) {
1699
976db8c6fb64 return NGX_ERROR instead of NGX_HTTP_INTERNAL_SERVER_ERROR in u->parse_header()
Igor Sysoev <igor@sysoev.ru>
parents: 1698
diff changeset
1401 return NGX_ERROR;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1402 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1403
1276
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1404 if (f->split_parts && f->split_parts->nelts) {
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1405
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1406 part = f->split_parts->elts;
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1407 size = u->buffer.pos - part_start;
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1408
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1409 for (i = 0; i < f->split_parts->nelts; i++) {
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1410 size += part[i].end - part[i].start;
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1411 }
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1412
2049
2a92804f4109 *) back out r2040
Igor Sysoev <igor@sysoev.ru>
parents: 2030
diff changeset
1413 p = ngx_pnalloc(r->pool, size);
1276
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1414 if (p == NULL) {
1699
976db8c6fb64 return NGX_ERROR instead of NGX_HTTP_INTERNAL_SERVER_ERROR in u->parse_header()
Igor Sysoev <igor@sysoev.ru>
parents: 1698
diff changeset
1415 return NGX_ERROR;
1276
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1416 }
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1417
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1418 buf.pos = p;
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1419
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1420 for (i = 0; i < f->split_parts->nelts; i++) {
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1421 p = ngx_cpymem(p, part[i].start,
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1422 part[i].end - part[i].start);
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1423 }
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1424
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1425 p = ngx_cpymem(p, part_start, u->buffer.pos - part_start);
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1426
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1427 buf.last = p;
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1428
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1429 f->split_parts->nelts = 0;
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1430
2256
8c17cfe63d2c underscores_in_headers
Igor Sysoev <igor@sysoev.ru>
parents: 2233
diff changeset
1431 rc = ngx_http_parse_header_line(r, &buf, 1);
1276
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1432
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1433 h->key.len = r->header_name_end - r->header_name_start;
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1434 h->key.data = r->header_name_start;
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1435 h->key.data[h->key.len] = '\0';
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1436
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1437 h->value.len = r->header_end - r->header_start;
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1438 h->value.data = r->header_start;
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1439 h->value.data[h->value.len] = '\0';
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1440
2049
2a92804f4109 *) back out r2040
Igor Sysoev <igor@sysoev.ru>
parents: 2030
diff changeset
1441 h->lowcase_key = ngx_pnalloc(r->pool, h->key.len);
1276
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1442 if (h->lowcase_key == NULL) {
1699
976db8c6fb64 return NGX_ERROR instead of NGX_HTTP_INTERNAL_SERVER_ERROR in u->parse_header()
Igor Sysoev <igor@sysoev.ru>
parents: 1698
diff changeset
1443 return NGX_ERROR;
1276
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1444 }
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1445
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1446 } else {
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1447
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1448 h->key.len = r->header_name_end - r->header_name_start;
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1449 h->value.len = r->header_end - r->header_start;
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1450
2049
2a92804f4109 *) back out r2040
Igor Sysoev <igor@sysoev.ru>
parents: 2030
diff changeset
1451 h->key.data = ngx_pnalloc(r->pool,
2a92804f4109 *) back out r2040
Igor Sysoev <igor@sysoev.ru>
parents: 2030
diff changeset
1452 h->key.len + 1 + h->value.len + 1
2a92804f4109 *) back out r2040
Igor Sysoev <igor@sysoev.ru>
parents: 2030
diff changeset
1453 + h->key.len);
1276
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1454 if (h->key.data == NULL) {
1699
976db8c6fb64 return NGX_ERROR instead of NGX_HTTP_INTERNAL_SERVER_ERROR in u->parse_header()
Igor Sysoev <igor@sysoev.ru>
parents: 1698
diff changeset
1455 return NGX_ERROR;
1276
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1456 }
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1457
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1458 h->value.data = h->key.data + h->key.len + 1;
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1459 h->lowcase_key = h->key.data + h->key.len + 1
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1460 + h->value.len + 1;
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1461
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1462 ngx_cpystrn(h->key.data, r->header_name_start,
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1463 h->key.len + 1);
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1464 ngx_cpystrn(h->value.data, r->header_start,
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1465 h->value.len + 1);
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1466 }
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1467
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1468 h->hash = r->header_hash;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1469
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
1470 if (h->key.len == r->lowcase_index) {
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
1471 ngx_memcpy(h->lowcase_key, r->lowcase_header, h->key.len);
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
1472
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
1473 } else {
2135
8c6521eedf84 ngx_strlow()
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
1474 ngx_strlow(h->lowcase_key, h->key.data, h->key.len);
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1475 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1476
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
1477 hh = ngx_hash_find(&umcf->headers_in_hash, h->hash,
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
1478 h->lowcase_key, h->key.len);
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
1479
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
1480 if (hh && hh->handler(r, h, hh->offset) != NGX_OK) {
1699
976db8c6fb64 return NGX_ERROR instead of NGX_HTTP_INTERNAL_SERVER_ERROR in u->parse_header()
Igor Sysoev <igor@sysoev.ru>
parents: 1698
diff changeset
1481 return NGX_ERROR;
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
1482 }
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
1483
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1484 ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1485 "http fastcgi header: \"%V: %V\"",
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1486 &h->key, &h->value);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1487
615
5ef026a2ac74 nginx-0.3.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1488 if (u->buffer.pos < u->buffer.last) {
5ef026a2ac74 nginx-0.3.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1489 continue;
5ef026a2ac74 nginx-0.3.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1490 }
5ef026a2ac74 nginx-0.3.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1491
5ef026a2ac74 nginx-0.3.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1492 /* the end of the FastCGI record */
5ef026a2ac74 nginx-0.3.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1493
5ef026a2ac74 nginx-0.3.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1494 break;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1495 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1496
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1497 if (rc == NGX_HTTP_PARSE_HEADER_DONE) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1498
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1499 /* a whole header has been parsed successfully */
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1500
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1501 ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1502 "http fastcgi header done");
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1503
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1504 if (u->headers_in.status) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1505 status_line = &u->headers_in.status->value;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1506
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1507 status = ngx_atoi(status_line->data, 3);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1508
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1509 if (status == NGX_ERROR) {
1698
70202cd85645 return NGX_HTTP_UPSTREAM_INVALID_HEADER for invalid status
Igor Sysoev <igor@sysoev.ru>
parents: 1678
diff changeset
1510 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
70202cd85645 return NGX_HTTP_UPSTREAM_INVALID_HEADER for invalid status
Igor Sysoev <igor@sysoev.ru>
parents: 1678
diff changeset
1511 "upstream sent invalid status \"%V\"",
70202cd85645 return NGX_HTTP_UPSTREAM_INVALID_HEADER for invalid status
Igor Sysoev <igor@sysoev.ru>
parents: 1678
diff changeset
1512 status_line);
70202cd85645 return NGX_HTTP_UPSTREAM_INVALID_HEADER for invalid status
Igor Sysoev <igor@sysoev.ru>
parents: 1678
diff changeset
1513 return NGX_HTTP_UPSTREAM_INVALID_HEADER;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1514 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1515
529
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
1516 u->headers_in.status_n = status;
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
1517 u->headers_in.status_line = *status_line;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1518
2140
dce5ddef5af9 if upstream sent a location header without status use 302
Igor Sysoev <igor@sysoev.ru>
parents: 2135
diff changeset
1519 } else if (u->headers_in.location) {
dce5ddef5af9 if upstream sent a location header without status use 302
Igor Sysoev <igor@sysoev.ru>
parents: 2135
diff changeset
1520 u->headers_in.status_n = 302;
3516
dd1570b6f237 ngx_str_set() and ngx_str_null()
Igor Sysoev <igor@sysoev.ru>
parents: 3494
diff changeset
1521 ngx_str_set(&u->headers_in.status_line,
dd1570b6f237 ngx_str_set() and ngx_str_null()
Igor Sysoev <igor@sysoev.ru>
parents: 3494
diff changeset
1522 "302 Moved Temporarily");
2140
dce5ddef5af9 if upstream sent a location header without status use 302
Igor Sysoev <igor@sysoev.ru>
parents: 2135
diff changeset
1523
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1524 } else {
529
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
1525 u->headers_in.status_n = 200;
3516
dd1570b6f237 ngx_str_set() and ngx_str_null()
Igor Sysoev <igor@sysoev.ru>
parents: 3494
diff changeset
1526 ngx_str_set(&u->headers_in.status_line, "200 OK");
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1527 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1528
2602
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
1529 if (u->state) {
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
1530 u->state->status = u->headers_in.status_n;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1531 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1532
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1533 break;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1534 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1535
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1536 /* there was error while a header line parsing */
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1537
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1538 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
619
7a16e281c01f nginx-0.3.31-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 615
diff changeset
1539 "upstream sent invalid header");
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1540
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1541 return NGX_HTTP_UPSTREAM_INVALID_HEADER;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1542 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1543
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1544 if (last) {
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
1545 u->buffer.last = last;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1546 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1547
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
1548 f->length -= u->buffer.pos - start;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1549
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1550 if (f->length == 0) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1551 if (f->padding) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1552 f->state = ngx_http_fastcgi_st_padding;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1553 } else {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1554 f->state = ngx_http_fastcgi_st_version;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1555 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1556 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1557
615
5ef026a2ac74 nginx-0.3.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1558 if (rc == NGX_HTTP_PARSE_HEADER_DONE) {
5ef026a2ac74 nginx-0.3.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1559 return NGX_OK;
5ef026a2ac74 nginx-0.3.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1560 }
5ef026a2ac74 nginx-0.3.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1561
1274
7ffdd1bb86d5 omit unnecessary conditions
Igor Sysoev <igor@sysoev.ru>
parents: 1272
diff changeset
1562 if (rc == NGX_OK) {
1998
63c60504c0bf fix error introduced in r1273 and r1275:
Igor Sysoev <igor@sysoev.ru>
parents: 1945
diff changeset
1563 continue;
615
5ef026a2ac74 nginx-0.3.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1564 }
5ef026a2ac74 nginx-0.3.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
1565
1274
7ffdd1bb86d5 omit unnecessary conditions
Igor Sysoev <igor@sysoev.ru>
parents: 1272
diff changeset
1566 /* rc == NGX_AGAIN */
7ffdd1bb86d5 omit unnecessary conditions
Igor Sysoev <igor@sysoev.ru>
parents: 1272
diff changeset
1567
1276
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1568 ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1569 "upstream split a header line in FastCGI records");
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1570
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1571 if (f->split_parts == NULL) {
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1572 f->split_parts = ngx_array_create(r->pool, 1,
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1573 sizeof(ngx_http_fastcgi_split_part_t));
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1574 if (f->split_parts == NULL) {
1699
976db8c6fb64 return NGX_ERROR instead of NGX_HTTP_INTERNAL_SERVER_ERROR in u->parse_header()
Igor Sysoev <igor@sysoev.ru>
parents: 1698
diff changeset
1575 return NGX_ERROR;
1276
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1576 }
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1577 }
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1578
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1579 part = ngx_array_push(f->split_parts);
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1580
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1581 part->start = part_start;
3011
5957e869f04d fix a garbage in a split fastcgi header
Igor Sysoev <igor@sysoev.ru>
parents: 3010
diff changeset
1582 part->end = part_end;
1276
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1583
3010
37400c84396e continue to parse available fastcgi record after a split header,
Igor Sysoev <igor@sysoev.ru>
parents: 3006
diff changeset
1584 if (u->buffer.pos < u->buffer.last) {
37400c84396e continue to parse available fastcgi record after a split header,
Igor Sysoev <igor@sysoev.ru>
parents: 3006
diff changeset
1585 continue;
37400c84396e continue to parse available fastcgi record after a split header,
Igor Sysoev <igor@sysoev.ru>
parents: 3006
diff changeset
1586 }
37400c84396e continue to parse available fastcgi record after a split header,
Igor Sysoev <igor@sysoev.ru>
parents: 3006
diff changeset
1587
1276
1494a23b1ed4 fix headers split in FastCGI records
Igor Sysoev <igor@sysoev.ru>
parents: 1274
diff changeset
1588 return NGX_AGAIN;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1589 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1590 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1591
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1592
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
1593 static ngx_int_t
4122
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1594 ngx_http_fastcgi_input_filter_init(void *data)
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1595 {
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1596 ngx_http_request_t *r = data;
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1597 ngx_http_fastcgi_loc_conf_t *flcf;
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1598
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1599 flcf = ngx_http_get_module_loc_conf(r, ngx_http_fastcgi_module);
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1600
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1601 r->upstream->pipe->length = flcf->keep_conn ?
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1602 (off_t) sizeof(ngx_http_fastcgi_header_t) : -1;
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1603
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1604 return NGX_OK;
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1605 }
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1606
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1607
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1608 static ngx_int_t
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
1609 ngx_http_fastcgi_input_filter(ngx_event_pipe_t *p, ngx_buf_t *buf)
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1610 {
4122
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1611 u_char *m, *msg;
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1612 ngx_int_t rc;
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1613 ngx_buf_t *b, **prev;
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1614 ngx_chain_t *cl;
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1615 ngx_http_request_t *r;
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1616 ngx_http_fastcgi_ctx_t *f;
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1617 ngx_http_fastcgi_loc_conf_t *flcf;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1618
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1619 if (buf->pos == buf->last) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1620 return NGX_OK;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1621 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1622
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1623 r = p->input_ctx;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1624 f = ngx_http_get_module_ctx(r, ngx_http_fastcgi_module);
4122
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1625 flcf = ngx_http_get_module_loc_conf(r, ngx_http_fastcgi_module);
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1626
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1627 b = NULL;
483
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 481
diff changeset
1628 prev = &buf->shadow;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1629
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1630 f->pos = buf->pos;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1631 f->last = buf->last;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1632
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1633 for ( ;; ) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1634 if (f->state < ngx_http_fastcgi_st_data) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1635
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1636 rc = ngx_http_fastcgi_process_record(r, f);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1637
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1638 if (rc == NGX_AGAIN) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1639 break;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1640 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1641
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1642 if (rc == NGX_ERROR) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1643 return NGX_ERROR;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1644 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1645
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1646 if (f->type == NGX_HTTP_FASTCGI_STDOUT && f->length == 0) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1647 f->state = ngx_http_fastcgi_st_version;
4122
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1648
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1649 if (!flcf->keep_conn) {
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1650 p->upstream_done = 1;
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1651 }
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1652
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1653 ngx_log_debug0(NGX_LOG_DEBUG_HTTP, p->log, 0,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1654 "http fastcgi closed stdout");
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1655
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1656 continue;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1657 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1658
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1659 if (f->type == NGX_HTTP_FASTCGI_END_REQUEST) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1660 f->state = ngx_http_fastcgi_st_version;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1661 p->upstream_done = 1;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1662
4122
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1663 if (flcf->keep_conn) {
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1664 r->upstream->keepalive = 1;
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1665 }
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1666
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1667 ngx_log_debug0(NGX_LOG_DEBUG_HTTP, p->log, 0,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1668 "http fastcgi sent end request");
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1669
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1670 break;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1671 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1672 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1673
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1674
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1675 if (f->state == ngx_http_fastcgi_st_padding) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1676
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1677 if (f->pos + f->padding < f->last) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1678 f->state = ngx_http_fastcgi_st_version;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1679 f->pos += f->padding;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1680
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1681 continue;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1682 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1683
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1684 if (f->pos + f->padding == f->last) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1685 f->state = ngx_http_fastcgi_st_version;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1686
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1687 break;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1688 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1689
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1690 f->padding -= f->last - f->pos;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1691
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1692 break;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1693 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1694
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1695
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1696 /* f->state == ngx_http_fastcgi_st_data */
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1697
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1698 if (f->type == NGX_HTTP_FASTCGI_STDERR) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1699
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1700 if (f->length) {
639
715d24327080 nginx-0.3.41-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
1701
715d24327080 nginx-0.3.41-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
1702 if (f->pos == f->last) {
715d24327080 nginx-0.3.41-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
1703 break;
715d24327080 nginx-0.3.41-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
1704 }
715d24327080 nginx-0.3.41-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
1705
3025
baff3edcb6e2 refactor fastcgi stderr handling
Igor Sysoev <igor@sysoev.ru>
parents: 3011
diff changeset
1706 msg = f->pos;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1707
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1708 if (f->pos + f->length <= f->last) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1709 f->pos += f->length;
491
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1710 f->length = 0;
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1711 f->state = ngx_http_fastcgi_st_padding;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1712
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
1713 } else {
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1714 f->length -= f->last - f->pos;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1715 f->pos = f->last;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1716 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1717
3025
baff3edcb6e2 refactor fastcgi stderr handling
Igor Sysoev <igor@sysoev.ru>
parents: 3011
diff changeset
1718 for (m = f->pos - 1; msg < m; m--) {
baff3edcb6e2 refactor fastcgi stderr handling
Igor Sysoev <igor@sysoev.ru>
parents: 3011
diff changeset
1719 if (*m != LF && *m != CR && *m != '.' && *m != ' ') {
baff3edcb6e2 refactor fastcgi stderr handling
Igor Sysoev <igor@sysoev.ru>
parents: 3011
diff changeset
1720 break;
baff3edcb6e2 refactor fastcgi stderr handling
Igor Sysoev <igor@sysoev.ru>
parents: 3011
diff changeset
1721 }
491
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1722 }
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1723
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1724 ngx_log_error(NGX_LOG_ERR, p->log, 0,
3025
baff3edcb6e2 refactor fastcgi stderr handling
Igor Sysoev <igor@sysoev.ru>
parents: 3011
diff changeset
1725 "FastCGI sent in stderr: \"%*s\"",
baff3edcb6e2 refactor fastcgi stderr handling
Igor Sysoev <igor@sysoev.ru>
parents: 3011
diff changeset
1726 m + 1 - msg, msg);
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1727
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1728 if (f->pos == f->last) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1729 break;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1730 }
491
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1731
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1732 } else {
0f836f0288ee nginx-0.1.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
1733 f->state = ngx_http_fastcgi_st_version;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1734 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1735
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1736 continue;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1737 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1738
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1739
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1740 /* f->type == NGX_HTTP_FASTCGI_STDOUT */
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1741
639
715d24327080 nginx-0.3.41-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
1742 if (f->pos == f->last) {
715d24327080 nginx-0.3.41-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
1743 break;
715d24327080 nginx-0.3.41-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
1744 }
715d24327080 nginx-0.3.41-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 637
diff changeset
1745
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1746 if (p->free) {
4136
7898857ff34b Fixed loss of chain links in fastcgi module.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4122
diff changeset
1747 cl = p->free;
7898857ff34b Fixed loss of chain links in fastcgi module.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4122
diff changeset
1748 b = cl->buf;
7898857ff34b Fixed loss of chain links in fastcgi module.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4122
diff changeset
1749 p->free = cl->next;
7898857ff34b Fixed loss of chain links in fastcgi module.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4122
diff changeset
1750 ngx_free_chain(p->pool, cl);
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1751
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1752 } else {
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1753 b = ngx_alloc_buf(p->pool);
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1754 if (b == NULL) {
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1755 return NGX_ERROR;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1756 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1757 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1758
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1759 ngx_memzero(b, sizeof(ngx_buf_t));
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1760
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1761 b->pos = f->pos;
483
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 481
diff changeset
1762 b->start = buf->start;
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 481
diff changeset
1763 b->end = buf->end;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1764 b->tag = p->tag;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1765 b->temporary = 1;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1766 b->recycled = 1;
483
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 481
diff changeset
1767
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 481
diff changeset
1768 *prev = b;
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 481
diff changeset
1769 prev = &b->shadow;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1770
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1771 cl = ngx_alloc_chain_link(p->pool);
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1772 if (cl == NULL) {
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1773 return NGX_ERROR;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1774 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1775
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1776 cl->buf = b;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1777 cl->next = NULL;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1778
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1779 if (p->in) {
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1780 *p->last_in = cl;
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1781 } else {
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1782 p->in = cl;
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1783 }
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1784 p->last_in = &cl->next;
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1785
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1786
483
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 481
diff changeset
1787 /* STUB */ b->num = buf->num;
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 481
diff changeset
1788
1030
5a86fcc480c6 add debug logging for FastCGI zero size buf alert
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
1789 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, p->log, 0,
1037
c28c8bdb57f4 fix debug logging
Igor Sysoev <igor@sysoev.ru>
parents: 1030
diff changeset
1790 "input buf #%d %p", b->num, b->pos);
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1791
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1792 if (f->pos + f->length < f->last) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1793
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1794 if (f->padding) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1795 f->state = ngx_http_fastcgi_st_padding;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1796 } else {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1797 f->state = ngx_http_fastcgi_st_version;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1798 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1799
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1800 f->pos += f->length;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1801 b->last = f->pos;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1802
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1803 continue;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1804 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1805
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1806 if (f->pos + f->length == f->last) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1807
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1808 if (f->padding) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1809 f->state = ngx_http_fastcgi_st_padding;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1810 } else {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1811 f->state = ngx_http_fastcgi_st_version;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1812 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1813
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1814 b->last = f->last;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1815
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1816 break;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1817 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1818
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1819 f->length -= f->last - f->pos;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1820
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1821 b->last = f->last;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1822
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1823 break;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1824
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1825 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1826
4122
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1827 if (flcf->keep_conn) {
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1828
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1829 /* set p->length, minimal amount of data we want to see */
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1830
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1831 if (f->state < ngx_http_fastcgi_st_data) {
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1832 p->length = 1;
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1833
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1834 } else if (f->state == ngx_http_fastcgi_st_padding) {
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1835 p->length = f->padding;
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1836
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1837 } else {
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1838 /* ngx_http_fastcgi_st_data */
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1839
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1840 p->length = f->length;
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1841 }
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1842 }
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
1843
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1844 if (b) {
483
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 481
diff changeset
1845 b->shadow = buf;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1846 b->last_shadow = 1;
483
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 481
diff changeset
1847
1030
5a86fcc480c6 add debug logging for FastCGI zero size buf alert
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
1848 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, p->log, 0,
1037
c28c8bdb57f4 fix debug logging
Igor Sysoev <igor@sysoev.ru>
parents: 1030
diff changeset
1849 "input buf %p %z", b->pos, b->last - b->pos);
1030
5a86fcc480c6 add debug logging for FastCGI zero size buf alert
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
1850
483
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 481
diff changeset
1851 return NGX_OK;
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 481
diff changeset
1852 }
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 481
diff changeset
1853
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 481
diff changeset
1854 /* there is no data record in the buf, add it to free chain */
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 481
diff changeset
1855
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 481
diff changeset
1856 if (ngx_event_pipe_add_free_buf(p, buf) != NGX_OK) {
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 481
diff changeset
1857 return NGX_ERROR;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1858 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1859
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1860 return NGX_OK;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1861 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1862
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1863
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
1864 static ngx_int_t
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
1865 ngx_http_fastcgi_process_record(ngx_http_request_t *r,
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
1866 ngx_http_fastcgi_ctx_t *f)
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1867 {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1868 u_char ch, *p;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1869 ngx_http_fastcgi_state_e state;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1870
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1871 state = f->state;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1872
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1873 for (p = f->pos; p < f->last; p++) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1874
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1875 ch = *p;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1876
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1877 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1878 "http fastcgi record byte: %02Xd", ch);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1879
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1880 switch (state) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1881
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1882 case ngx_http_fastcgi_st_version:
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1883 if (ch != 1) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1884 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1885 "upstream sent unsupported FastCGI "
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1886 "protocol version: %d", ch);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1887 return NGX_ERROR;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1888 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1889 state = ngx_http_fastcgi_st_type;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1890 break;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1891
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1892 case ngx_http_fastcgi_st_type:
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1893 switch (ch) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1894 case NGX_HTTP_FASTCGI_STDOUT:
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1895 case NGX_HTTP_FASTCGI_STDERR:
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1896 case NGX_HTTP_FASTCGI_END_REQUEST:
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1897 f->type = (ngx_uint_t) ch;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1898 break;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1899 default:
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1900 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1901 "upstream sent invalid FastCGI "
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1902 "record type: %d", ch);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1903 return NGX_ERROR;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1904
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1905 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1906 state = ngx_http_fastcgi_st_request_id_hi;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1907 break;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1908
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1909 /* we support the single request per connection */
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1910
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1911 case ngx_http_fastcgi_st_request_id_hi:
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1912 if (ch != 0) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1913 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1914 "upstream sent unexpected FastCGI "
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1915 "request id high byte: %d", ch);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1916 return NGX_ERROR;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1917 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1918 state = ngx_http_fastcgi_st_request_id_lo;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1919 break;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1920
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1921 case ngx_http_fastcgi_st_request_id_lo:
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1922 if (ch != 1) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1923 ngx_log_error(NGX_LOG_ERR, r->connection->log, 0,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1924 "upstream sent unexpected FastCGI "
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1925 "request id low byte: %d", ch);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1926 return NGX_ERROR;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1927 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1928 state = ngx_http_fastcgi_st_content_length_hi;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1929 break;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1930
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1931 case ngx_http_fastcgi_st_content_length_hi:
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1932 f->length = ch << 8;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1933 state = ngx_http_fastcgi_st_content_length_lo;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1934 break;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1935
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1936 case ngx_http_fastcgi_st_content_length_lo:
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1937 f->length |= (size_t) ch;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1938 state = ngx_http_fastcgi_st_padding_length;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1939 break;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1940
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1941 case ngx_http_fastcgi_st_padding_length:
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1942 f->padding = (size_t) ch;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1943 state = ngx_http_fastcgi_st_reserved;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1944 break;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1945
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1946 case ngx_http_fastcgi_st_reserved:
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1947 state = ngx_http_fastcgi_st_data;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1948
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1949 ngx_log_debug1(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1950 "http fastcgi record length: %z", f->length);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1951
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1952 f->pos = p + 1;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1953 f->state = state;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1954
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1955 return NGX_OK;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1956
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1957 /* suppress warning */
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1958 case ngx_http_fastcgi_st_data:
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1959 case ngx_http_fastcgi_st_padding:
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1960 break;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1961 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1962 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1963
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1964 f->state = state;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1965
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1966 return NGX_AGAIN;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1967 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1968
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1969
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
1970 static void
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
1971 ngx_http_fastcgi_abort_request(ngx_http_request_t *r)
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1972 {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1973 ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1974 "abort http fastcgi request");
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1975
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1976 return;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1977 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1978
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1979
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
1980 static void
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
1981 ngx_http_fastcgi_finalize_request(ngx_http_request_t *r, ngx_int_t rc)
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1982 {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1983 ngx_log_debug0(NGX_LOG_DEBUG_HTTP, r->connection->log, 0,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1984 "finalize http fastcgi request");
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1985
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1986 return;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1987 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1988
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1989
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1990 static ngx_int_t
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
1991 ngx_http_fastcgi_add_variables(ngx_conf_t *cf)
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1992 {
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
1993 ngx_http_variable_t *var, *v;
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
1994
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
1995 for (v = ngx_http_fastcgi_vars; v->name.len; v++) {
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
1996 var = ngx_http_add_variable(cf, &v->name, v->flags);
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
1997 if (var == NULL) {
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
1998 return NGX_ERROR;
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
1999 }
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2000
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2001 var->get_handler = v->get_handler;
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2002 var->data = v->data;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2003 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2004
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2005 return NGX_OK;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2006 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2007
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2008
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
2009 static void *
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
2010 ngx_http_fastcgi_create_loc_conf(ngx_conf_t *cf)
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2011 {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2012 ngx_http_fastcgi_loc_conf_t *conf;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2013
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
2014 conf = ngx_pcalloc(cf->pool, sizeof(ngx_http_fastcgi_loc_conf_t));
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
2015 if (conf == NULL) {
2912
c7d57b539248 return NULL instead of NGX_CONF_ERROR on a create conf failure
Igor Sysoev <igor@sysoev.ru>
parents: 2895
diff changeset
2016 return NULL;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2017 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2018
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2019 /*
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2020 * set by ngx_pcalloc():
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2021 *
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2022 * conf->upstream.bufs.num = 0;
2786
4e002555652d proxy_ignore_headers and fastcgi_ignore_headers
Igor Sysoev <igor@sysoev.ru>
parents: 2729
diff changeset
2023 * conf->upstream.ignore_headers = 0;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2024 * conf->upstream.next_upstream = 0;
2875
6e1941b321b7 proxy_cache_methods and fastcgi_cache_methods
Igor Sysoev <igor@sysoev.ru>
parents: 2786
diff changeset
2025 * conf->upstream.cache_use_stale = 0;
6e1941b321b7 proxy_cache_methods and fastcgi_cache_methods
Igor Sysoev <igor@sysoev.ru>
parents: 2786
diff changeset
2026 * conf->upstream.cache_methods = 0;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2027 * conf->upstream.temp_path = NULL;
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
2028 * conf->upstream.hide_headers_hash = { NULL, 0 };
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2029 * conf->upstream.uri = { 0, NULL };
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2030 * conf->upstream.location = NULL;
1295
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2031 * conf->upstream.store_lengths = NULL;
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2032 * conf->upstream.store_values = NULL;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2033 *
3516
dd1570b6f237 ngx_str_set() and ngx_str_null()
Igor Sysoev <igor@sysoev.ru>
parents: 3494
diff changeset
2034 * conf->index.len = { 0, NULL };
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2035 */
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2036
1295
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2037 conf->upstream.store = NGX_CONF_UNSET;
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2038 conf->upstream.store_access = NGX_CONF_UNSET_UINT;
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
2039 conf->upstream.buffering = NGX_CONF_UNSET;
629
65bf042c0b4f nginx-0.3.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 623
diff changeset
2040 conf->upstream.ignore_client_abort = NGX_CONF_UNSET;
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
2041
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2042 conf->upstream.connect_timeout = NGX_CONF_UNSET_MSEC;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2043 conf->upstream.send_timeout = NGX_CONF_UNSET_MSEC;
507
cd3117ad9aab nginx-0.1.28-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
2044 conf->upstream.read_timeout = NGX_CONF_UNSET_MSEC;
cd3117ad9aab nginx-0.1.28-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
2045
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2046 conf->upstream.send_lowat = NGX_CONF_UNSET_SIZE;
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
2047 conf->upstream.buffer_size = NGX_CONF_UNSET_SIZE;
529
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
2048
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
2049 conf->upstream.busy_buffers_size_conf = NGX_CONF_UNSET_SIZE;
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
2050 conf->upstream.max_temp_file_size_conf = NGX_CONF_UNSET_SIZE;
529
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
2051 conf->upstream.temp_file_write_size_conf = NGX_CONF_UNSET_SIZE;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2052
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2053 conf->upstream.pass_request_headers = NGX_CONF_UNSET;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2054 conf->upstream.pass_request_body = NGX_CONF_UNSET;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2055
2602
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2056 #if (NGX_HTTP_CACHE)
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2057 conf->upstream.cache = NGX_CONF_UNSET_PTR;
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2058 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: 3692
diff changeset
2059 conf->upstream.cache_bypass = NGX_CONF_UNSET_PTR;
3526
62a4fd1e6e2c proxy_no_cache and fastcgi_no_cache
Igor Sysoev <igor@sysoev.ru>
parents: 3523
diff changeset
2060 conf->upstream.no_cache = NGX_CONF_UNSET_PTR;
2602
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2061 conf->upstream.cache_valid = NGX_CONF_UNSET_PTR;
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2062 #endif
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2063
1701
40d004d95d88 *) now ngx_conf_set_str_array_slot() tests NGX_CONF_UNSET_PTR
Igor Sysoev <igor@sysoev.ru>
parents: 1700
diff changeset
2064 conf->upstream.hide_headers = NGX_CONF_UNSET_PTR;
40d004d95d88 *) now ngx_conf_set_str_array_slot() tests NGX_CONF_UNSET_PTR
Igor Sysoev <igor@sysoev.ru>
parents: 1700
diff changeset
2065 conf->upstream.pass_headers = NGX_CONF_UNSET_PTR;
40d004d95d88 *) now ngx_conf_set_str_array_slot() tests NGX_CONF_UNSET_PTR
Igor Sysoev <igor@sysoev.ru>
parents: 1700
diff changeset
2066
657
400711951595 nginx-0.3.50-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 655
diff changeset
2067 conf->upstream.intercept_errors = NGX_CONF_UNSET;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2068
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2069 /* "fastcgi_cyclic_temp_file" is disabled */
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2070 conf->upstream.cyclic_temp_file = 0;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2071
1452
cd586e963db0 change ngx_conf_merge_ptr_value() and update fastcgi_catch_stderr
Igor Sysoev <igor@sysoev.ru>
parents: 1295
diff changeset
2072 conf->catch_stderr = NGX_CONF_UNSET_PTR;
cd586e963db0 change ngx_conf_merge_ptr_value() and update fastcgi_catch_stderr
Igor Sysoev <igor@sysoev.ru>
parents: 1295
diff changeset
2073
4122
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
2074 conf->keep_conn = NGX_CONF_UNSET;
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
2075
3976
215fe9223419 update r3945 with more descriptive error message
Igor Sysoev <igor@sysoev.ru>
parents: 3879
diff changeset
2076 ngx_str_set(&conf->upstream.module, "fastcgi");
215fe9223419 update r3945 with more descriptive error message
Igor Sysoev <igor@sysoev.ru>
parents: 3879
diff changeset
2077
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2078 return conf;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2079 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2080
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2081
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
2082 static char *
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
2083 ngx_http_fastcgi_merge_loc_conf(ngx_conf_t *cf, void *parent, void *child)
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2084 {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2085 ngx_http_fastcgi_loc_conf_t *prev = parent;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2086 ngx_http_fastcgi_loc_conf_t *conf = child;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2087
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2088 u_char *p;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2089 size_t size;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2090 uintptr_t *code;
1701
40d004d95d88 *) now ngx_conf_set_str_array_slot() tests NGX_CONF_UNSET_PTR
Igor Sysoev <igor@sysoev.ru>
parents: 1700
diff changeset
2091 ngx_uint_t i;
3560
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2092 ngx_array_t headers_names;
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
2093 ngx_keyval_t *src;
3560
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2094 ngx_hash_key_t *hk;
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
2095 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
2096 ngx_http_core_loc_conf_t *clcf;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2097 ngx_http_script_compile_t sc;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2098 ngx_http_script_copy_code_t *copy;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2099
1295
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2100 if (conf->upstream.store != 0) {
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2101 ngx_conf_merge_value(conf->upstream.store,
2894
d26f4e80c71f style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2875
diff changeset
2102 prev->upstream.store, 0);
1295
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2103
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2104 if (conf->upstream.store_lengths == NULL) {
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2105 conf->upstream.store_lengths = prev->upstream.store_lengths;
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2106 conf->upstream.store_values = prev->upstream.store_values;
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2107 }
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2108 }
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2109
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2110 ngx_conf_merge_uint_value(conf->upstream.store_access,
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2111 prev->upstream.store_access, 0600);
1291
13a4ce6e7f1e proxy_store and fastcgi_store
Igor Sysoev <igor@sysoev.ru>
parents: 1276
diff changeset
2112
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
2113 ngx_conf_merge_value(conf->upstream.buffering,
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
2114 prev->upstream.buffering, 1);
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
2115
629
65bf042c0b4f nginx-0.3.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 623
diff changeset
2116 ngx_conf_merge_value(conf->upstream.ignore_client_abort,
65bf042c0b4f nginx-0.3.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 623
diff changeset
2117 prev->upstream.ignore_client_abort, 0);
65bf042c0b4f nginx-0.3.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 623
diff changeset
2118
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2119 ngx_conf_merge_msec_value(conf->upstream.connect_timeout,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2120 prev->upstream.connect_timeout, 60000);
507
cd3117ad9aab nginx-0.1.28-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
2121
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2122 ngx_conf_merge_msec_value(conf->upstream.send_timeout,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2123 prev->upstream.send_timeout, 60000);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2124
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2125 ngx_conf_merge_msec_value(conf->upstream.read_timeout,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2126 prev->upstream.read_timeout, 60000);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2127
507
cd3117ad9aab nginx-0.1.28-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
2128 ngx_conf_merge_size_value(conf->upstream.send_lowat,
cd3117ad9aab nginx-0.1.28-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
2129 prev->upstream.send_lowat, 0);
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2130
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
2131 ngx_conf_merge_size_value(conf->upstream.buffer_size,
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
2132 prev->upstream.buffer_size,
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2133 (size_t) ngx_pagesize);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2134
507
cd3117ad9aab nginx-0.1.28-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
2135
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2136 ngx_conf_merge_bufs_value(conf->upstream.bufs, prev->upstream.bufs,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2137 8, ngx_pagesize);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2138
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2139 if (conf->upstream.bufs.num < 2) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2140 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2141 "there must be at least 2 \"fastcgi_buffers\"");
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2142 return NGX_CONF_ERROR;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2143 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2144
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2145
581
326634fb9d47 nginx-0.3.12-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
2146 size = conf->upstream.buffer_size;
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2147 if (size < conf->upstream.bufs.size) {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2148 size = conf->upstream.bufs.size;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2149 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2150
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2151
529
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
2152 ngx_conf_merge_size_value(conf->upstream.busy_buffers_size_conf,
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
2153 prev->upstream.busy_buffers_size_conf,
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2154 NGX_CONF_UNSET_SIZE);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2155
529
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
2156 if (conf->upstream.busy_buffers_size_conf == NGX_CONF_UNSET_SIZE) {
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2157 conf->upstream.busy_buffers_size = 2 * size;
529
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
2158 } else {
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
2159 conf->upstream.busy_buffers_size =
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
2160 conf->upstream.busy_buffers_size_conf;
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
2161 }
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2162
529
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
2163 if (conf->upstream.busy_buffers_size < size) {
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2164 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2165 "\"fastcgi_busy_buffers_size\" must be equal or bigger than "
1125
2d978e1443ed use the contemporary directives
Igor Sysoev <igor@sysoev.ru>
parents: 1097
diff changeset
2166 "maximum of the value of \"fastcgi_buffer_size\" and "
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2167 "one of the \"fastcgi_buffers\"");
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2168
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2169 return NGX_CONF_ERROR;
529
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
2170 }
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2171
529
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
2172 if (conf->upstream.busy_buffers_size
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
2173 > (conf->upstream.bufs.num - 1) * conf->upstream.bufs.size)
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2174 {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2175 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2176 "\"fastcgi_busy_buffers_size\" must be less than "
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2177 "the size of all \"fastcgi_buffers\" minus one buffer");
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2178
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2179 return NGX_CONF_ERROR;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2180 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2181
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2182
529
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
2183 ngx_conf_merge_size_value(conf->upstream.temp_file_write_size_conf,
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
2184 prev->upstream.temp_file_write_size_conf,
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2185 NGX_CONF_UNSET_SIZE);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2186
529
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
2187 if (conf->upstream.temp_file_write_size_conf == NGX_CONF_UNSET_SIZE) {
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2188 conf->upstream.temp_file_write_size = 2 * size;
529
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
2189 } else {
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
2190 conf->upstream.temp_file_write_size =
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
2191 conf->upstream.temp_file_write_size_conf;
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
2192 }
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2193
529
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
2194 if (conf->upstream.temp_file_write_size < size) {
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2195 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2196 "\"fastcgi_temp_file_write_size\" must be equal or bigger than "
1125
2d978e1443ed use the contemporary directives
Igor Sysoev <igor@sysoev.ru>
parents: 1097
diff changeset
2197 "maximum of the value of \"fastcgi_buffer_size\" and "
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2198 "one of the \"fastcgi_buffers\"");
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2199
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2200 return NGX_CONF_ERROR;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2201 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2202
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2203
529
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
2204 ngx_conf_merge_size_value(conf->upstream.max_temp_file_size_conf,
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
2205 prev->upstream.max_temp_file_size_conf,
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2206 NGX_CONF_UNSET_SIZE);
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2207
529
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
2208 if (conf->upstream.max_temp_file_size_conf == NGX_CONF_UNSET_SIZE) {
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2209 conf->upstream.max_temp_file_size = 1024 * 1024 * 1024;
529
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
2210 } else {
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
2211 conf->upstream.max_temp_file_size =
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
2212 conf->upstream.max_temp_file_size_conf;
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
2213 }
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2214
529
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
2215 if (conf->upstream.max_temp_file_size != 0
e5d7d0334fdb nginx-0.1.39-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 515
diff changeset
2216 && conf->upstream.max_temp_file_size < size)
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2217 {
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2218 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2219 "\"fastcgi_max_temp_file_size\" must be equal to zero to disable "
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2220 "the temporary files usage or must be equal or bigger than "
1125
2d978e1443ed use the contemporary directives
Igor Sysoev <igor@sysoev.ru>
parents: 1097
diff changeset
2221 "maximum of the value of \"fastcgi_buffer_size\" and "
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2222 "one of the \"fastcgi_buffers\"");
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2223
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2224 return NGX_CONF_ERROR;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2225 }
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2226
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2227
2786
4e002555652d proxy_ignore_headers and fastcgi_ignore_headers
Igor Sysoev <igor@sysoev.ru>
parents: 2729
diff changeset
2228 ngx_conf_merge_bitmask_value(conf->upstream.ignore_headers,
4e002555652d proxy_ignore_headers and fastcgi_ignore_headers
Igor Sysoev <igor@sysoev.ru>
parents: 2729
diff changeset
2229 prev->upstream.ignore_headers,
4e002555652d proxy_ignore_headers and fastcgi_ignore_headers
Igor Sysoev <igor@sysoev.ru>
parents: 2729
diff changeset
2230 NGX_CONF_BITMASK_SET);
4e002555652d proxy_ignore_headers and fastcgi_ignore_headers
Igor Sysoev <igor@sysoev.ru>
parents: 2729
diff changeset
2231
4e002555652d proxy_ignore_headers and fastcgi_ignore_headers
Igor Sysoev <igor@sysoev.ru>
parents: 2729
diff changeset
2232
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2233 ngx_conf_merge_bitmask_value(conf->upstream.next_upstream,
487
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
2234 prev->upstream.next_upstream,
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
2235 (NGX_CONF_BITMASK_SET
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
2236 |NGX_HTTP_UPSTREAM_FT_ERROR
31ff3e943e16 nginx-0.1.18-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 485
diff changeset
2237 |NGX_HTTP_UPSTREAM_FT_TIMEOUT));
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2238
665
5fd7a5e99047 nginx-0.3.54-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
2239 if (conf->upstream.next_upstream & NGX_HTTP_UPSTREAM_FT_OFF) {
5fd7a5e99047 nginx-0.3.54-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
2240 conf->upstream.next_upstream = NGX_CONF_BITMASK_SET
5fd7a5e99047 nginx-0.3.54-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
2241 |NGX_HTTP_UPSTREAM_FT_OFF;
5fd7a5e99047 nginx-0.3.54-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
2242 }
5fd7a5e99047 nginx-0.3.54-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
2243
2592
3a8a53c0c42f a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents: 2467
diff changeset
2244 if (ngx_conf_merge_path_value(cf, &conf->upstream.temp_path,
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2245 prev->upstream.temp_path,
2592
3a8a53c0c42f a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents: 2467
diff changeset
2246 &ngx_http_fastcgi_temp_path)
3a8a53c0c42f a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents: 2467
diff changeset
2247 != NGX_OK)
3a8a53c0c42f a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents: 2467
diff changeset
2248 {
3a8a53c0c42f a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents: 2467
diff changeset
2249 return NGX_CONF_ERROR;
3a8a53c0c42f a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents: 2467
diff changeset
2250 }
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2251
2602
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2252 #if (NGX_HTTP_CACHE)
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2253
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2254 ngx_conf_merge_ptr_value(conf->upstream.cache,
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2255 prev->upstream.cache, NULL);
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2256
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2257 if (conf->upstream.cache && conf->upstream.cache->data == NULL) {
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2258 ngx_shm_zone_t *shm_zone;
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2259
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2260 shm_zone = conf->upstream.cache;
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2261
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2262 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2263 "\"fastcgi_cache\" zone \"%V\" is unknown",
2716
d5896f6608e8 move zone name from ngx_shm_zone_t to ngx_shm_t to use Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2661
diff changeset
2264 &shm_zone->shm.name);
2602
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2265
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2266 return NGX_CONF_ERROR;
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2267 }
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2268
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2269 ngx_conf_merge_uint_value(conf->upstream.cache_min_uses,
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2270 prev->upstream.cache_min_uses, 1);
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2271
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2272 ngx_conf_merge_bitmask_value(conf->upstream.cache_use_stale,
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2273 prev->upstream.cache_use_stale,
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2274 (NGX_CONF_BITMASK_SET
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2275 |NGX_HTTP_UPSTREAM_FT_OFF));
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2276
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2277 if (conf->upstream.cache_use_stale & NGX_HTTP_UPSTREAM_FT_OFF) {
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2278 conf->upstream.cache_use_stale = NGX_CONF_BITMASK_SET
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2279 |NGX_HTTP_UPSTREAM_FT_OFF;
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2280 }
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2281
2875
6e1941b321b7 proxy_cache_methods and fastcgi_cache_methods
Igor Sysoev <igor@sysoev.ru>
parents: 2786
diff changeset
2282 if (conf->upstream.cache_methods == 0) {
6e1941b321b7 proxy_cache_methods and fastcgi_cache_methods
Igor Sysoev <igor@sysoev.ru>
parents: 2786
diff changeset
2283 conf->upstream.cache_methods = prev->upstream.cache_methods;
6e1941b321b7 proxy_cache_methods and fastcgi_cache_methods
Igor Sysoev <igor@sysoev.ru>
parents: 2786
diff changeset
2284 }
6e1941b321b7 proxy_cache_methods and fastcgi_cache_methods
Igor Sysoev <igor@sysoev.ru>
parents: 2786
diff changeset
2285
6e1941b321b7 proxy_cache_methods and fastcgi_cache_methods
Igor Sysoev <igor@sysoev.ru>
parents: 2786
diff changeset
2286 conf->upstream.cache_methods |= NGX_HTTP_GET|NGX_HTTP_HEAD;
6e1941b321b7 proxy_cache_methods and fastcgi_cache_methods
Igor Sysoev <igor@sysoev.ru>
parents: 2786
diff changeset
2287
3699
b0a0686a85bb proxy_cache_pass, fastcgi_cache_bypass, uwsgi_cache_bypass, scgi_cache_bypass
Igor Sysoev <igor@sysoev.ru>
parents: 3692
diff changeset
2288 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: 3692
diff changeset
2289 prev->upstream.cache_bypass, NULL);
b0a0686a85bb proxy_cache_pass, fastcgi_cache_bypass, uwsgi_cache_bypass, scgi_cache_bypass
Igor Sysoev <igor@sysoev.ru>
parents: 3692
diff changeset
2290
3526
62a4fd1e6e2c proxy_no_cache and fastcgi_no_cache
Igor Sysoev <igor@sysoev.ru>
parents: 3523
diff changeset
2291 ngx_conf_merge_ptr_value(conf->upstream.no_cache,
62a4fd1e6e2c proxy_no_cache and fastcgi_no_cache
Igor Sysoev <igor@sysoev.ru>
parents: 3523
diff changeset
2292 prev->upstream.no_cache, NULL);
62a4fd1e6e2c proxy_no_cache and fastcgi_no_cache
Igor Sysoev <igor@sysoev.ru>
parents: 3523
diff changeset
2293
3700
e40453e6931b add warnings for proxy_no_cache and fastcgi_no_cache
Igor Sysoev <igor@sysoev.ru>
parents: 3699
diff changeset
2294 if (conf->upstream.no_cache && conf->upstream.cache_bypass == NULL) {
e40453e6931b add warnings for proxy_no_cache and fastcgi_no_cache
Igor Sysoev <igor@sysoev.ru>
parents: 3699
diff changeset
2295 ngx_log_error(NGX_LOG_WARN, cf->log, 0,
e40453e6931b add warnings for proxy_no_cache and fastcgi_no_cache
Igor Sysoev <igor@sysoev.ru>
parents: 3699
diff changeset
2296 "\"fastcgi_no_cache\" functionality has been changed in 0.8.46, "
e40453e6931b add warnings for proxy_no_cache and fastcgi_no_cache
Igor Sysoev <igor@sysoev.ru>
parents: 3699
diff changeset
2297 "now it should be used together with \"fastcgi_cache_bypass\"");
e40453e6931b add warnings for proxy_no_cache and fastcgi_no_cache
Igor Sysoev <igor@sysoev.ru>
parents: 3699
diff changeset
2298 }
e40453e6931b add warnings for proxy_no_cache and fastcgi_no_cache
Igor Sysoev <igor@sysoev.ru>
parents: 3699
diff changeset
2299
2602
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2300 ngx_conf_merge_ptr_value(conf->upstream.cache_valid,
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2301 prev->upstream.cache_valid, NULL);
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2302
2661
8ace9dee8824 merge fastcgi_cache_key
Igor Sysoev <igor@sysoev.ru>
parents: 2602
diff changeset
2303 if (conf->cache_key.value.data == NULL) {
8ace9dee8824 merge fastcgi_cache_key
Igor Sysoev <igor@sysoev.ru>
parents: 2602
diff changeset
2304 conf->cache_key = prev->cache_key;
8ace9dee8824 merge fastcgi_cache_key
Igor Sysoev <igor@sysoev.ru>
parents: 2602
diff changeset
2305 }
8ace9dee8824 merge fastcgi_cache_key
Igor Sysoev <igor@sysoev.ru>
parents: 2602
diff changeset
2306
2602
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2307 #endif
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2308
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2309 ngx_conf_merge_value(conf->upstream.pass_request_headers,
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2310 prev->upstream.pass_request_headers, 1);
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2311 ngx_conf_merge_value(conf->upstream.pass_request_body,
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2312 prev->upstream.pass_request_body, 1);
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2313
657
400711951595 nginx-0.3.50-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 655
diff changeset
2314 ngx_conf_merge_value(conf->upstream.intercept_errors,
400711951595 nginx-0.3.50-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 655
diff changeset
2315 prev->upstream.intercept_errors, 0);
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2316
1228
863c3490103e fastcgi_catch_stderr
Igor Sysoev <igor@sysoev.ru>
parents: 1142
diff changeset
2317 ngx_conf_merge_ptr_value(conf->catch_stderr, prev->catch_stderr, NULL);
863c3490103e fastcgi_catch_stderr
Igor Sysoev <igor@sysoev.ru>
parents: 1142
diff changeset
2318
4122
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
2319 ngx_conf_merge_value(conf->keep_conn, prev->keep_conn, 0);
c7fae0daeb57 Keepalive support in fastcgi.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4015
diff changeset
2320
507
cd3117ad9aab nginx-0.1.28-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
2321
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2322 ngx_conf_merge_str_value(conf->index, prev->index, "");
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2323
1701
40d004d95d88 *) now ngx_conf_set_str_array_slot() tests NGX_CONF_UNSET_PTR
Igor Sysoev <igor@sysoev.ru>
parents: 1700
diff changeset
2324 hash.max_size = 512;
40d004d95d88 *) now ngx_conf_set_str_array_slot() tests NGX_CONF_UNSET_PTR
Igor Sysoev <igor@sysoev.ru>
parents: 1700
diff changeset
2325 hash.bucket_size = ngx_align(64, ngx_cacheline_size);
40d004d95d88 *) now ngx_conf_set_str_array_slot() tests NGX_CONF_UNSET_PTR
Igor Sysoev <igor@sysoev.ru>
parents: 1700
diff changeset
2326 hash.name = "fastcgi_hide_headers_hash";
40d004d95d88 *) now ngx_conf_set_str_array_slot() tests NGX_CONF_UNSET_PTR
Igor Sysoev <igor@sysoev.ru>
parents: 1700
diff changeset
2327
40d004d95d88 *) now ngx_conf_set_str_array_slot() tests NGX_CONF_UNSET_PTR
Igor Sysoev <igor@sysoev.ru>
parents: 1700
diff changeset
2328 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
2329 &prev->upstream, ngx_http_fastcgi_hide_headers, &hash)
649
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
2330 != NGX_OK)
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
2331 {
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
2332 return NGX_CONF_ERROR;
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
2333 }
1e720b0be7ec nginx-0.3.46-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 639
diff changeset
2334
884
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 777
diff changeset
2335 if (conf->upstream.upstream == NULL) {
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 777
diff changeset
2336 conf->upstream.upstream = prev->upstream.upstream;
507
cd3117ad9aab nginx-0.1.28-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
2337 }
cd3117ad9aab nginx-0.1.28-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
2338
2390
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2339 if (conf->fastcgi_lengths == NULL) {
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2340 conf->fastcgi_lengths = prev->fastcgi_lengths;
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2341 conf->fastcgi_values = prev->fastcgi_values;
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2342 }
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2343
3731
72cc5b789021 inherit proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass inside
Igor Sysoev <igor@sysoev.ru>
parents: 3729
diff changeset
2344 if (conf->upstream.upstream || conf->fastcgi_lengths) {
72cc5b789021 inherit proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass inside
Igor Sysoev <igor@sysoev.ru>
parents: 3729
diff changeset
2345 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
2346 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
2347 clcf->handler = ngx_http_fastcgi_handler;
72cc5b789021 inherit proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass inside
Igor Sysoev <igor@sysoev.ru>
parents: 3729
diff changeset
2348 }
72cc5b789021 inherit proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass inside
Igor Sysoev <igor@sysoev.ru>
parents: 3729
diff changeset
2349 }
72cc5b789021 inherit proxy_pass, fastcgi_pass, uwsgi_pass, scgi_pass inside
Igor Sysoev <igor@sysoev.ru>
parents: 3729
diff changeset
2350
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2351 #if (NGX_PCRE)
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2352 if (conf->split_regex == NULL) {
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2353 conf->split_regex = prev->split_regex;
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2354 conf->split_name = prev->split_name;
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2355 }
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2356 #endif
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2357
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2358 if (conf->params_source == NULL) {
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
2359 conf->flushes = prev->flushes;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2360 conf->params_len = prev->params_len;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2361 conf->params = prev->params;
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
2362 conf->params_source = prev->params_source;
3560
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2363 conf->headers_hash = prev->headers_hash;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2364
3563
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2365 #if (NGX_HTTP_CACHE)
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2366
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2367 if (conf->params_source == NULL) {
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2368
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2369 if ((conf->upstream.cache == NULL)
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2370 == (prev->upstream.cache == NULL))
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2371 {
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2372 return NGX_CONF_OK;
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2373 }
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2374
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2375 /* 6 is a number of ngx_http_fastcgi_cache_headers entries */
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2376 conf->params_source = ngx_array_create(cf->pool, 6,
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2377 sizeof(ngx_keyval_t));
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2378 if (conf->params_source == NULL) {
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2379 return NGX_CONF_ERROR;
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2380 }
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2381 }
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2382 #else
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2383
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2384 if (conf->params_source == NULL) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2385 return NGX_CONF_OK;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2386 }
3563
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2387
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2388 #endif
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2389 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2390
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2391 conf->params_len = ngx_array_create(cf->pool, 64, 1);
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2392 if (conf->params_len == NULL) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2393 return NGX_CONF_ERROR;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2394 }
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
2395
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2396 conf->params = ngx_array_create(cf->pool, 512, 1);
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2397 if (conf->params == NULL) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2398 return NGX_CONF_ERROR;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2399 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2400
3560
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2401 if (ngx_array_init(&headers_names, cf->temp_pool, 4, sizeof(ngx_hash_key_t))
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2402 != NGX_OK)
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2403 {
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2404 return NGX_CONF_ERROR;
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2405 }
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2406
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2407 src = conf->params_source->elts;
3563
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2408
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2409 #if (NGX_HTTP_CACHE)
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2410
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2411 if (conf->upstream.cache) {
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2412 ngx_keyval_t *h, *s;
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2413
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2414 for (h = ngx_http_fastcgi_cache_headers; h->key.len; h++) {
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2415
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2416 for (i = 0; i < conf->params_source->nelts; i++) {
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2417 if (ngx_strcasecmp(h->key.data, src[i].key.data) == 0) {
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2418 goto next;
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2419 }
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2420 }
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2421
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2422 s = ngx_array_push(conf->params_source);
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2423 if (s == NULL) {
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2424 return NGX_CONF_ERROR;
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2425 }
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2426
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2427 *s = *h;
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2428
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2429 src = conf->params_source->elts;
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2430
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2431 next:
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2432
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2433 h++;
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2434 }
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2435 }
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2436
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2437 #endif
90d7227d47bf do not pass if-... headers for cacheable fastcgi responses
Igor Sysoev <igor@sysoev.ru>
parents: 3562
diff changeset
2438
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2439 for (i = 0; i < conf->params_source->nelts; i++) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2440
3560
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2441 if (src[i].key.len > sizeof("HTTP_") - 1
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2442 && ngx_strncmp(src[i].key.data, "HTTP_", sizeof("HTTP_") - 1) == 0)
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2443 {
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2444 hk = ngx_array_push(&headers_names);
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2445 if (hk == NULL) {
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2446 return NGX_CONF_ERROR;
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2447 }
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2448
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2449 hk->key.len = src[i].key.len - 5;
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2450 hk->key.data = src[i].key.data + 5;
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2451 hk->key_hash = ngx_hash_key_lc(hk->key.data, hk->key.len);
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2452 hk->value = (void *) 1;
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2453
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2454 if (src[i].value.len == 0) {
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2455 continue;
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2456 }
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2457 }
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2458
3558
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2459 copy = ngx_array_push_n(conf->params_len,
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2460 sizeof(ngx_http_script_copy_code_t));
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2461 if (copy == NULL) {
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2462 return NGX_CONF_ERROR;
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2463 }
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2464
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2465 copy->code = (ngx_http_script_code_pt) ngx_http_script_copy_len_code;
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2466 copy->len = src[i].key.len;
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2467
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2468
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2469 size = (sizeof(ngx_http_script_copy_code_t)
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2470 + src[i].key.len + sizeof(uintptr_t) - 1)
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2471 & ~(sizeof(uintptr_t) - 1);
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2472
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2473 copy = ngx_array_push_n(conf->params, size);
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2474 if (copy == NULL) {
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2475 return NGX_CONF_ERROR;
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2476 }
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2477
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2478 copy->code = ngx_http_script_copy_code;
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2479 copy->len = src[i].key.len;
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2480
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2481 p = (u_char *) copy + sizeof(ngx_http_script_copy_code_t);
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2482 ngx_memcpy(p, src[i].key.data, src[i].key.len);
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2483
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2484
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2485 ngx_memzero(&sc, sizeof(ngx_http_script_compile_t));
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2486
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2487 sc.cf = cf;
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2488 sc.source = &src[i].value;
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2489 sc.flushes = &conf->flushes;
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2490 sc.lengths = &conf->params_len;
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2491 sc.values = &conf->params;
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2492
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2493 if (ngx_http_script_compile(&sc) != NGX_OK) {
83c9a10ec029 remove the special static fastcgi_param values processing,
Igor Sysoev <igor@sysoev.ru>
parents: 3526
diff changeset
2494 return NGX_CONF_ERROR;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2495 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2496
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2497 code = ngx_array_push_n(conf->params_len, sizeof(uintptr_t));
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2498 if (code == NULL) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2499 return NGX_CONF_ERROR;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2500 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2501
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2502 *code = (uintptr_t) NULL;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2503
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2504
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2505 code = ngx_array_push_n(conf->params, sizeof(uintptr_t));
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2506 if (code == NULL) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2507 return NGX_CONF_ERROR;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2508 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2510 *code = (uintptr_t) NULL;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2511 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2512
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2513 code = ngx_array_push_n(conf->params_len, sizeof(uintptr_t));
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2514 if (code == NULL) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2515 return NGX_CONF_ERROR;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2516 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2517
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2518 *code = (uintptr_t) NULL;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2519
3560
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2520
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2521 conf->header_params = headers_names.nelts;
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2522
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2523 hash.hash = &conf->headers_hash;
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2524 hash.key = ngx_hash_key_lc;
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2525 hash.max_size = 512;
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2526 hash.bucket_size = 64;
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2527 hash.name = "fastcgi_params_hash";
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2528 hash.pool = cf->pool;
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2529 hash.temp_pool = NULL;
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2530
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2531 if (ngx_hash_init(&hash, headers_names.elts, headers_names.nelts) != NGX_OK)
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2532 {
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2533 return NGX_CONF_ERROR;
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2534 }
a36c63c6d26a allow fastcgi_param to override client headers using HTTP_ parameters
Igor Sysoev <igor@sysoev.ru>
parents: 3559
diff changeset
2535
479
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2536 return NGX_CONF_OK;
c52408583801 nginx-0.1.14-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2537 }
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2538
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2539
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
2540 static ngx_int_t
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
2541 ngx_http_fastcgi_script_name_variable(ngx_http_request_t *r,
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
2542 ngx_http_variable_value_t *v, uintptr_t data)
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2543 {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2544 u_char *p;
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2545 ngx_http_fastcgi_ctx_t *f;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2546 ngx_http_fastcgi_loc_conf_t *flcf;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2547
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2548 flcf = ngx_http_get_module_loc_conf(r, ngx_http_fastcgi_module);
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2549
2467
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2550 f = ngx_http_fastcgi_split(r, flcf);
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2551
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2552 if (f == NULL) {
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2553 return NGX_ERROR;
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2554 }
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2555
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2556 if (f->script_name.len == 0
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2557 || f->script_name.data[f->script_name.len - 1] != '/')
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2558 {
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2559 v->len = f->script_name.len;
1097
df8cdf626c87 fix segfault when $fastcgi_script_name is used in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 1037
diff changeset
2560 v->valid = 1;
1565
4c43e25d11ea fix English grammar
Igor Sysoev <igor@sysoev.ru>
parents: 1563
diff changeset
2561 v->no_cacheable = 0;
1097
df8cdf626c87 fix segfault when $fastcgi_script_name is used in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 1037
diff changeset
2562 v->not_found = 0;
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2563 v->data = f->script_name.data;
1097
df8cdf626c87 fix segfault when $fastcgi_script_name is used in access_log
Igor Sysoev <igor@sysoev.ru>
parents: 1037
diff changeset
2564
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
2565 return NGX_OK;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2566 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2567
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2568 v->len = f->script_name.len + flcf->index.len;
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2569
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2570 v->data = ngx_pnalloc(r->pool, v->len);
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2571 if (v->data == NULL) {
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2572 return NGX_ERROR;
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2573 }
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2574
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2575 p = ngx_copy(v->data, f->script_name.data, f->script_name.len);
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2576 ngx_memcpy(p, flcf->index.data, flcf->index.len);
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2577
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
2578 return NGX_OK;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2579 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2580
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2581
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2582 static ngx_int_t
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2583 ngx_http_fastcgi_path_info_variable(ngx_http_request_t *r,
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2584 ngx_http_variable_value_t *v, uintptr_t data)
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2585 {
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2586 ngx_http_fastcgi_ctx_t *f;
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2587 ngx_http_fastcgi_loc_conf_t *flcf;
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2588
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2589 flcf = ngx_http_get_module_loc_conf(r, ngx_http_fastcgi_module);
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2590
2467
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2591 f = ngx_http_fastcgi_split(r, flcf);
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2592
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2593 if (f == NULL) {
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2594 return NGX_ERROR;
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2595 }
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2596
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2597 v->len = f->path_info.len;
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2598 v->valid = 1;
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2599 v->no_cacheable = 0;
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2600 v->not_found = 0;
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2601 v->data = f->path_info.data;
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2602
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2603 return NGX_OK;
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2604 }
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2605
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2606
2467
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2607 static ngx_http_fastcgi_ctx_t *
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2608 ngx_http_fastcgi_split(ngx_http_request_t *r, ngx_http_fastcgi_loc_conf_t *flcf)
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2609 {
2467
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2610 ngx_http_fastcgi_ctx_t *f;
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2611 #if (NGX_PCRE)
2467
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2612 ngx_int_t n;
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2613 int captures[(1 + 2) * 3];
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2614
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2615 f = ngx_http_get_module_ctx(r, ngx_http_fastcgi_module);
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2616
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2617 if (f == NULL) {
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2618 f = ngx_pcalloc(r->pool, sizeof(ngx_http_fastcgi_ctx_t));
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2619 if (f == NULL) {
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2620 return NULL;
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2621 }
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2622
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2623 ngx_http_set_ctx(r, f, ngx_http_fastcgi_module);
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2624 }
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2625
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2626 if (f->script_name.len) {
2467
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2627 return f;
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2628 }
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2629
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2630 if (flcf->split_regex == NULL) {
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2631 f->script_name = r->uri;
2467
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2632 return f;
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2633 }
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2634
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2635 n = ngx_regex_exec(flcf->split_regex, &r->uri, captures, (1 + 2) * 3);
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2636
3325
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3271
diff changeset
2637 if (n >= 0) { /* match */
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3271
diff changeset
2638 f->script_name.len = captures[3] - captures[2];
3735
1ba712d077d1 fix fastcgi_split_path_info, if URI was not fully captured
Igor Sysoev <igor@sysoev.ru>
parents: 3731
diff changeset
2639 f->script_name.data = r->uri.data + captures[2];
3325
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3271
diff changeset
2640
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3271
diff changeset
2641 f->path_info.len = captures[5] - captures[4];
3735
1ba712d077d1 fix fastcgi_split_path_info, if URI was not fully captured
Igor Sysoev <igor@sysoev.ru>
parents: 3731
diff changeset
2642 f->path_info.data = r->uri.data + captures[4];
3325
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3271
diff changeset
2643
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3271
diff changeset
2644 return f;
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3271
diff changeset
2645 }
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3271
diff changeset
2646
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2647 if (n == NGX_REGEX_NO_MATCHED) {
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2648 f->script_name = r->uri;
2467
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2649 return f;
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2650 }
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2651
3325
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3271
diff changeset
2652 ngx_log_error(NGX_LOG_ALERT, r->connection->log, 0,
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3271
diff changeset
2653 ngx_regex_exec_n " failed: %i on \"%V\" using \"%V\"",
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3271
diff changeset
2654 n, &r->uri, &flcf->split_name);
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3271
diff changeset
2655 return NULL;
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2656
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2657 #else
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2658
2467
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2659 f = ngx_http_get_module_ctx(r, ngx_http_fastcgi_module);
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2660
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2661 if (f == NULL) {
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2662 f = ngx_pcalloc(r->pool, sizeof(ngx_http_fastcgi_ctx_t));
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2663 if (f == NULL) {
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2664 return NULL;
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2665 }
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2666
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2667 ngx_http_set_ctx(r, f, ngx_http_fastcgi_module);
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2668 }
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2669
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2670 f->script_name = r->uri;
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2671
2467
84f2bef92007 fix segfault if $fastcgi_script_name or $fastcgi_path_info were used before
Igor Sysoev <igor@sysoev.ru>
parents: 2443
diff changeset
2672 return f;
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2673
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2674 #endif
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2675 }
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2676
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2677
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2678 static char *
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2679 ngx_http_fastcgi_pass(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2680 {
2390
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2681 ngx_http_fastcgi_loc_conf_t *flcf = conf;
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2682
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2683 ngx_url_t u;
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2684 ngx_str_t *value, *url;
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2685 ngx_uint_t n;
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2686 ngx_http_core_loc_conf_t *clcf;
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2687 ngx_http_script_compile_t sc;
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2688
2391
d88e757cc7d8 delete surplus upstream.schema field
Igor Sysoev <igor@sysoev.ru>
parents: 2390
diff changeset
2689 if (flcf->upstream.upstream || flcf->fastcgi_lengths) {
555
7bd37aef1e7e nginx-0.2.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 547
diff changeset
2690 return "is duplicate";
7bd37aef1e7e nginx-0.2.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 547
diff changeset
2691 }
7bd37aef1e7e nginx-0.2.6-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 547
diff changeset
2692
2390
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2693 clcf = ngx_http_conf_get_module_loc_conf(cf, ngx_http_core_module);
2989
dff9764eaca2 do auto redirect for proxy_pass/fastcgi_pass with variables
Igor Sysoev <igor@sysoev.ru>
parents: 2927
diff changeset
2694
2390
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2695 clcf->handler = ngx_http_fastcgi_handler;
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2696
2989
dff9764eaca2 do auto redirect for proxy_pass/fastcgi_pass with variables
Igor Sysoev <igor@sysoev.ru>
parents: 2927
diff changeset
2697 if (clcf->name.data[clcf->name.len - 1] == '/') {
dff9764eaca2 do auto redirect for proxy_pass/fastcgi_pass with variables
Igor Sysoev <igor@sysoev.ru>
parents: 2927
diff changeset
2698 clcf->auto_redirect = 1;
dff9764eaca2 do auto redirect for proxy_pass/fastcgi_pass with variables
Igor Sysoev <igor@sysoev.ru>
parents: 2927
diff changeset
2699 }
dff9764eaca2 do auto redirect for proxy_pass/fastcgi_pass with variables
Igor Sysoev <igor@sysoev.ru>
parents: 2927
diff changeset
2700
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2701 value = cf->args->elts;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2702
2390
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2703 url = &value[1];
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2704
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2705 n = ngx_http_script_variables_count(url);
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2706
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2707 if (n) {
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2708
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2709 ngx_memzero(&sc, sizeof(ngx_http_script_compile_t));
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2710
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2711 sc.cf = cf;
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2712 sc.source = url;
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2713 sc.lengths = &flcf->fastcgi_lengths;
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2714 sc.values = &flcf->fastcgi_values;
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2715 sc.variables = n;
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2716 sc.complete_lengths = 1;
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2717 sc.complete_values = 1;
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2718
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2719 if (ngx_http_script_compile(&sc) != NGX_OK) {
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2720 return NGX_CONF_ERROR;
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2721 }
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2722
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2723 return NGX_CONF_OK;
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2724 }
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2725
651
39b7d7b33c91 nginx-0.3.47-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
2726 ngx_memzero(&u, sizeof(ngx_url_t));
39b7d7b33c91 nginx-0.3.47-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
2727
39b7d7b33c91 nginx-0.3.47-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 649
diff changeset
2728 u.url = value[1];
884
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 777
diff changeset
2729 u.no_resolve = 1;
4d68c486fcb0 upstream choice modules
Igor Sysoev <igor@sysoev.ru>
parents: 777
diff changeset
2730
2390
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2731 flcf->upstream.upstream = ngx_http_upstream_add(cf, &u, 0);
27ccc4b54fa6 fastcgi_pass variables support
Igor Sysoev <igor@sysoev.ru>
parents: 2256
diff changeset
2732 if (flcf->upstream.upstream == NULL) {
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2733 return NGX_CONF_ERROR;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2734 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2735
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2736 return NGX_CONF_OK;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2737 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2738
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2739
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2740 static char *
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2741 ngx_http_fastcgi_split_path_info(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2742 {
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2743 #if (NGX_PCRE)
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2744 ngx_http_fastcgi_loc_conf_t *flcf = conf;
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2745
3325
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3271
diff changeset
2746 ngx_str_t *value;
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3271
diff changeset
2747 ngx_regex_compile_t rc;
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3271
diff changeset
2748 u_char errstr[NGX_MAX_CONF_ERRSTR];
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2749
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2750 value = cf->args->elts;
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2751
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2752 flcf->split_name = value[1];
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2753
3325
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3271
diff changeset
2754 ngx_memzero(&rc, sizeof(ngx_regex_compile_t));
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3271
diff changeset
2755
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3271
diff changeset
2756 rc.pattern = value[1];
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3271
diff changeset
2757 rc.pool = cf->pool;
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3271
diff changeset
2758 rc.err.len = NGX_MAX_CONF_ERRSTR;
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3271
diff changeset
2759 rc.err.data = errstr;
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3271
diff changeset
2760
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3271
diff changeset
2761 if (ngx_regex_compile(&rc) != NGX_OK) {
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3271
diff changeset
2762 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0, "%V", &rc.err);
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2763 return NGX_CONF_ERROR;
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2764 }
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2765
3325
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3271
diff changeset
2766 if (rc.captures != 2) {
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2767 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2768 "pattern \"%V\" must have 2 captures", &value[1]);
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2769 return NGX_CONF_ERROR;
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2770 }
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2771
3325
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3271
diff changeset
2772 flcf->split_regex = rc.regex;
42c16d8bddbe regex named captures
Igor Sysoev <igor@sysoev.ru>
parents: 3271
diff changeset
2773
2443
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2774 return NGX_CONF_OK;
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2775
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2776 #else
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2777
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2778 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2779 "\"%V\" requires PCRE library", &cmd->name);
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2780 return NGX_CONF_ERROR;
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2781
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2782 #endif
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2783 }
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2784
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2785
a8697cc12b3a fastcgi_split_path_info
Igor Sysoev <igor@sysoev.ru>
parents: 2430
diff changeset
2786 static char *
1295
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2787 ngx_http_fastcgi_store(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2788 {
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2789 ngx_http_fastcgi_loc_conf_t *flcf = conf;
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2790
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2791 ngx_str_t *value;
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2792 ngx_http_script_compile_t sc;
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2793
2894
d26f4e80c71f style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2875
diff changeset
2794 if (flcf->upstream.store != NGX_CONF_UNSET
d26f4e80c71f style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2875
diff changeset
2795 || flcf->upstream.store_lengths)
1295
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2796 {
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2797 return "is duplicate";
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2798 }
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2799
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2800 value = cf->args->elts;
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2801
2895
d65e58a8d3a4 report about proxy/fastcgi_store and proxy/fastcgi_cache incompatibility
Igor Sysoev <igor@sysoev.ru>
parents: 2894
diff changeset
2802 if (ngx_strcmp(value[1].data, "off") == 0) {
d65e58a8d3a4 report about proxy/fastcgi_store and proxy/fastcgi_cache incompatibility
Igor Sysoev <igor@sysoev.ru>
parents: 2894
diff changeset
2803 flcf->upstream.store = 0;
1295
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2804 return NGX_CONF_OK;
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2805 }
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2806
2895
d65e58a8d3a4 report about proxy/fastcgi_store and proxy/fastcgi_cache incompatibility
Igor Sysoev <igor@sysoev.ru>
parents: 2894
diff changeset
2807 #if (NGX_HTTP_CACHE)
d65e58a8d3a4 report about proxy/fastcgi_store and proxy/fastcgi_cache incompatibility
Igor Sysoev <igor@sysoev.ru>
parents: 2894
diff changeset
2808
d65e58a8d3a4 report about proxy/fastcgi_store and proxy/fastcgi_cache incompatibility
Igor Sysoev <igor@sysoev.ru>
parents: 2894
diff changeset
2809 if (flcf->upstream.cache != NGX_CONF_UNSET_PTR
d65e58a8d3a4 report about proxy/fastcgi_store and proxy/fastcgi_cache incompatibility
Igor Sysoev <igor@sysoev.ru>
parents: 2894
diff changeset
2810 && flcf->upstream.cache != NULL)
d65e58a8d3a4 report about proxy/fastcgi_store and proxy/fastcgi_cache incompatibility
Igor Sysoev <igor@sysoev.ru>
parents: 2894
diff changeset
2811 {
d65e58a8d3a4 report about proxy/fastcgi_store and proxy/fastcgi_cache incompatibility
Igor Sysoev <igor@sysoev.ru>
parents: 2894
diff changeset
2812 return "is incompatible with \"fastcgi_cache\"";
d65e58a8d3a4 report about proxy/fastcgi_store and proxy/fastcgi_cache incompatibility
Igor Sysoev <igor@sysoev.ru>
parents: 2894
diff changeset
2813 }
d65e58a8d3a4 report about proxy/fastcgi_store and proxy/fastcgi_cache incompatibility
Igor Sysoev <igor@sysoev.ru>
parents: 2894
diff changeset
2814
d65e58a8d3a4 report about proxy/fastcgi_store and proxy/fastcgi_cache incompatibility
Igor Sysoev <igor@sysoev.ru>
parents: 2894
diff changeset
2815 #endif
d65e58a8d3a4 report about proxy/fastcgi_store and proxy/fastcgi_cache incompatibility
Igor Sysoev <igor@sysoev.ru>
parents: 2894
diff changeset
2816
d65e58a8d3a4 report about proxy/fastcgi_store and proxy/fastcgi_cache incompatibility
Igor Sysoev <igor@sysoev.ru>
parents: 2894
diff changeset
2817 if (ngx_strcmp(value[1].data, "on") == 0) {
d65e58a8d3a4 report about proxy/fastcgi_store and proxy/fastcgi_cache incompatibility
Igor Sysoev <igor@sysoev.ru>
parents: 2894
diff changeset
2818 flcf->upstream.store = 1;
1295
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2819 return NGX_CONF_OK;
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2820 }
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2821
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2822 /* include the terminating '\0' into script */
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2823 value[1].len++;
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2824
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2825 ngx_memzero(&sc, sizeof(ngx_http_script_compile_t));
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2826
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2827 sc.cf = cf;
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2828 sc.source = &value[1];
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2829 sc.lengths = &flcf->upstream.store_lengths;
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2830 sc.values = &flcf->upstream.store_values;
1563
022ec9420f80 style fix: remove double semicolons
Igor Sysoev <igor@sysoev.ru>
parents: 1488
diff changeset
2831 sc.variables = ngx_http_script_variables_count(&value[1]);
1295
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2832 sc.complete_lengths = 1;
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2833 sc.complete_values = 1;
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2834
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2835 if (ngx_http_script_compile(&sc) != NGX_OK) {
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2836 return NGX_CONF_ERROR;
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2837 }
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2838
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2839 return NGX_CONF_OK;
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2840 }
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2841
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2842
2602
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2843 #if (NGX_HTTP_CACHE)
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2844
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2845 static char *
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2846 ngx_http_fastcgi_cache(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2847 {
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2848 ngx_http_fastcgi_loc_conf_t *flcf = conf;
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2849
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2850 ngx_str_t *value;
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2851
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2852 value = cf->args->elts;
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2853
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2854 if (flcf->upstream.cache != NGX_CONF_UNSET_PTR) {
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2855 return "is duplicate";
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2856 }
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2857
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2858 if (ngx_strcmp(value[1].data, "off") == 0) {
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2859 flcf->upstream.cache = NULL;
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2860 return NGX_CONF_OK;
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2861 }
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2862
2895
d65e58a8d3a4 report about proxy/fastcgi_store and proxy/fastcgi_cache incompatibility
Igor Sysoev <igor@sysoev.ru>
parents: 2894
diff changeset
2863 if (flcf->upstream.store > 0 || flcf->upstream.store_lengths) {
d65e58a8d3a4 report about proxy/fastcgi_store and proxy/fastcgi_cache incompatibility
Igor Sysoev <igor@sysoev.ru>
parents: 2894
diff changeset
2864 return "is incompatible with \"fastcgi_store\"";
d65e58a8d3a4 report about proxy/fastcgi_store and proxy/fastcgi_cache incompatibility
Igor Sysoev <igor@sysoev.ru>
parents: 2894
diff changeset
2865 }
d65e58a8d3a4 report about proxy/fastcgi_store and proxy/fastcgi_cache incompatibility
Igor Sysoev <igor@sysoev.ru>
parents: 2894
diff changeset
2866
2602
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2867 flcf->upstream.cache = ngx_shared_memory_add(cf, &value[1], 0,
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2868 &ngx_http_fastcgi_module);
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2869 if (flcf->upstream.cache == NULL) {
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2870 return NGX_CONF_ERROR;
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2871 }
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2872
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2873 return NGX_CONF_OK;
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2874 }
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2875
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2876
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2877 static char *
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2878 ngx_http_fastcgi_cache_key(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2879 {
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2880 ngx_http_fastcgi_loc_conf_t *flcf = conf;
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2881
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2882 ngx_str_t *value;
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2883 ngx_http_compile_complex_value_t ccv;
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2884
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2885 value = cf->args->elts;
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2886
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2887 if (flcf->cache_key.value.len) {
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2888 return "is duplicate";
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2889 }
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2890
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2891 ngx_memzero(&ccv, sizeof(ngx_http_compile_complex_value_t));
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2892
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2893 ccv.cf = cf;
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2894 ccv.value = &value[1];
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2895 ccv.complex_value = &flcf->cache_key;
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2896
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2897 if (ngx_http_compile_complex_value(&ccv) != NGX_OK) {
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2898 return NGX_CONF_ERROR;
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2899 }
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2900
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2901 return NGX_CONF_OK;
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2902 }
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2903
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2904 #endif
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2905
4ed2fa197a4a fastcgi cache
Igor Sysoev <igor@sysoev.ru>
parents: 2592
diff changeset
2906
1295
5383f5232364 proxy_store and fastcgi_store were changed,
Igor Sysoev <igor@sysoev.ru>
parents: 1291
diff changeset
2907 static char *
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2908 ngx_http_fastcgi_lowat_check(ngx_conf_t *cf, void *post, void *data)
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2909 {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2910 #if (NGX_FREEBSD)
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2911 ssize_t *np = data;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2912
673
b80f94fa2197 nginx-0.3.58-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
2913 if ((u_long) *np >= ngx_freebsd_net_inet_tcp_sendspace) {
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2914 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2915 "\"fastcgi_send_lowat\" must be less than %d "
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2916 "(sysctl net.inet.tcp.sendspace)",
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2917 ngx_freebsd_net_inet_tcp_sendspace);
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2918
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2919 return NGX_CONF_ERROR;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2920 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2921
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2922 #elif !(NGX_HAVE_SO_SNDLOWAT)
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2923 ssize_t *np = data;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2924
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2925 ngx_conf_log_error(NGX_LOG_WARN, cf, 0,
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2926 "\"fastcgi_send_lowat\" is not supported, ignored");
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2927
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2928 *np = 0;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2929
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2930 #endif
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2931
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2932 return NGX_CONF_OK;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 507
diff changeset
2933 }