Mercurial > hg > nginx
annotate src/http/ngx_http.h @ 3440:88741ec7731a stable-0.7
merge r3294, r3305:
Fix a bug introduced in r2032: After a child process has read a terminate
message from a channel, the process tries to read the channel again.
The kernel (at least FreeBSD) may preempt the process and sends a SIGIO
signal to a master process. The master process sends a new terminate message,
the kernel switches again to the the child process, and the child process
reads the messages instead of an EAGAIN error. And this may repeat over
and over. Being that the child process can not exit the cycle and test
the termination flag set by the message handler.
The fix disallow the master process to send a new terminate message on
SIGIO signal reception. It may send the message only on SIGALARM signal.
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Mon, 01 Feb 2010 15:49:36 +0000 |
parents | 26e06e009ced |
children | 23e6f26fb4bd |
rev | line source |
---|---|
441
da8c5707af39
nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents:
432
diff
changeset
|
1 |
da8c5707af39
nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents:
432
diff
changeset
|
2 /* |
444
42d11f017717
nginx-0.1.0-2004-09-29-20:00:49 import; remove years from copyright
Igor Sysoev <igor@sysoev.ru>
parents:
441
diff
changeset
|
3 * Copyright (C) Igor Sysoev |
441
da8c5707af39
nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents:
432
diff
changeset
|
4 */ |
da8c5707af39
nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents:
432
diff
changeset
|
5 |
da8c5707af39
nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents:
432
diff
changeset
|
6 |
0
4eff17414a43
nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
7 #ifndef _NGX_HTTP_H_INCLUDED_ |
4eff17414a43
nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
8 #define _NGX_HTTP_H_INCLUDED_ |
4eff17414a43
nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
9 |
4eff17414a43
nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
10 |
4eff17414a43
nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
11 #include <ngx_config.h> |
100
7ebc8b7fb816
nginx-0.0.1-2003-06-03-19:42:58 import
Igor Sysoev <igor@sysoev.ru>
parents:
99
diff
changeset
|
12 #include <ngx_core.h> |
190
02a715e85df1
nginx-0.0.1-2003-11-19-00:34:08 import
Igor Sysoev <igor@sysoev.ru>
parents:
178
diff
changeset
|
13 |
509 | 14 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2589
diff
changeset
|
15 typedef struct ngx_http_request_s ngx_http_request_t; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2589
diff
changeset
|
16 typedef struct ngx_http_upstream_s ngx_http_upstream_t; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2589
diff
changeset
|
17 typedef struct ngx_http_cache_s ngx_http_cache_t; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2589
diff
changeset
|
18 typedef struct ngx_http_file_cache_s ngx_http_file_cache_t; |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2589
diff
changeset
|
19 typedef struct ngx_http_log_ctx_s ngx_http_log_ctx_t; |
509 | 20 |
21 typedef ngx_int_t (*ngx_http_header_handler_pt)(ngx_http_request_t *r, | |
22 ngx_table_elt_t *h, ngx_uint_t offset); | |
665 | 23 typedef u_char *(*ngx_http_log_handler_pt)(ngx_http_request_t *r, |
24 ngx_http_request_t *sr, u_char *buf, size_t len); | |
501 | 25 |
197
0b81c7a0b133
nginx-0.0.1-2003-11-27-10:45:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
191
diff
changeset
|
26 |
509 | 27 #include <ngx_http_variables.h> |
28 #include <ngx_http_request.h> | |
479 | 29 #include <ngx_http_upstream.h> |
884 | 30 #include <ngx_http_upstream_round_robin.h> |
96
a23d010f356d
nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
91
diff
changeset
|
31 #include <ngx_http_config.h> |
174
ea464a6c0581
nginx-0.0.1-2003-11-05-01:12:39 import
Igor Sysoev <igor@sysoev.ru>
parents:
170
diff
changeset
|
32 #include <ngx_http_busy_lock.h> |
2589
859f6675a553
use complex value in error_page
Igor Sysoev <igor@sysoev.ru>
parents:
2578
diff
changeset
|
33 #include <ngx_http_script.h> |
96
a23d010f356d
nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents:
91
diff
changeset
|
34 #include <ngx_http_core_module.h> |
0
4eff17414a43
nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
35 |
2592
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2589
diff
changeset
|
36 #if (NGX_HTTP_CACHE) |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2589
diff
changeset
|
37 #include <ngx_http_cache.h> |
3a8a53c0c42f
a prelimiary proxy cache support
Igor Sysoev <igor@sysoev.ru>
parents:
2589
diff
changeset
|
38 #endif |
597 | 39 #if (NGX_HTTP_SSI) |
40 #include <ngx_http_ssi_filter_module.h> | |
41 #endif | |
395
f8f0f1834266
nginx-0.0.7-2004-07-16-21:11:43 import
Igor Sysoev <igor@sysoev.ru>
parents:
392
diff
changeset
|
42 #if (NGX_HTTP_SSL) |
f8f0f1834266
nginx-0.0.7-2004-07-16-21:11:43 import
Igor Sysoev <igor@sysoev.ru>
parents:
392
diff
changeset
|
43 #include <ngx_http_ssl_module.h> |
383
c05876036128
nginx-0.0.7-2004-07-08-19:17:47 import
Igor Sysoev <igor@sysoev.ru>
parents:
356
diff
changeset
|
44 #endif |
c05876036128
nginx-0.0.7-2004-07-08-19:17:47 import
Igor Sysoev <igor@sysoev.ru>
parents:
356
diff
changeset
|
45 |
26
53cb81681040
nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
24
diff
changeset
|
46 |
479 | 47 struct ngx_http_log_ctx_s { |
1810 | 48 ngx_connection_t *connection; |
461 | 49 ngx_http_request_t *request; |
665 | 50 ngx_http_request_t *current_request; |
479 | 51 }; |
6
669801705ab1
nginx-0.0.1-2002-08-26-19:18:19 import
Igor Sysoev <igor@sysoev.ru>
parents:
4
diff
changeset
|
52 |
0
4eff17414a43
nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
53 |
675 | 54 #define ngx_http_get_module_ctx(r, module) (r)->ctx[module.ctx_index] |
55 #define ngx_http_set_ctx(r, c, module) r->ctx[module.ctx_index] = c; | |
9
6f58641241bb
nginx-0.0.1-2002-09-07-14:14:25 import
Igor Sysoev <igor@sysoev.ru>
parents:
8
diff
changeset
|
56 |
6f58641241bb
nginx-0.0.1-2002-09-07-14:14:25 import
Igor Sysoev <igor@sysoev.ru>
parents:
8
diff
changeset
|
57 |
2027 | 58 ngx_int_t ngx_http_add_location(ngx_conf_t *cf, ngx_queue_t **locations, |
59 ngx_http_core_loc_conf_t *clcf); | |
60 | |
61 | |
86
3973260705cc
nginx-0.0.1-2003-05-12-19:52:24 import
Igor Sysoev <igor@sysoev.ru>
parents:
83
diff
changeset
|
62 void ngx_http_init_connection(ngx_connection_t *c); |
200
abeaebe0a33c
nginx-0.0.1-2003-11-28-20:41:47 import
Igor Sysoev <igor@sysoev.ru>
parents:
197
diff
changeset
|
63 |
1219 | 64 #ifdef SSL_CTRL_SET_TLSEXT_HOSTNAME |
65 int ngx_http_ssl_servername(ngx_ssl_conn_t *ssl_conn, int *ad, void *arg); | |
66 #endif | |
67 | |
432
11362a3e3911
nginx-0.0.11-2004-09-21-09:38:28 import
Igor Sysoev <igor@sysoev.ru>
parents:
416
diff
changeset
|
68 ngx_int_t ngx_http_parse_request_line(ngx_http_request_t *r, ngx_buf_t *b); |
1585 | 69 ngx_int_t ngx_http_parse_complex_uri(ngx_http_request_t *r, |
70 ngx_uint_t merge_slashes); | |
573 | 71 ngx_int_t ngx_http_parse_unsafe_uri(ngx_http_request_t *r, ngx_str_t *uri, |
72 ngx_str_t *args, ngx_uint_t *flags); | |
2256 | 73 ngx_int_t ngx_http_parse_header_line(ngx_http_request_t *r, ngx_buf_t *b, |
74 ngx_uint_t allow_underscores); | |
509 | 75 ngx_int_t ngx_http_parse_multi_header_lines(ngx_array_t *headers, |
76 ngx_str_t *name, ngx_str_t *value); | |
2415 | 77 ngx_int_t ngx_http_arg(ngx_http_request_t *r, u_char *name, size_t len, |
78 ngx_str_t *value); | |
2578 | 79 void ngx_http_split_args(ngx_http_request_t *r, ngx_str_t *uri, |
80 ngx_str_t *args); | |
2415 | 81 |
200
abeaebe0a33c
nginx-0.0.1-2003-11-28-20:41:47 import
Igor Sysoev <igor@sysoev.ru>
parents:
197
diff
changeset
|
82 |
356
2e3cbc1bbe3c
nginx-0.0.7-2004-06-16-19:32:11 import
Igor Sysoev <igor@sysoev.ru>
parents:
346
diff
changeset
|
83 ngx_int_t ngx_http_find_server_conf(ngx_http_request_t *r); |
535 | 84 void ngx_http_update_location_config(ngx_http_request_t *r); |
88
674d333f4296
nginx-0.0.1-2003-05-14-21:13:13 import
Igor Sysoev <igor@sysoev.ru>
parents:
87
diff
changeset
|
85 void ngx_http_handler(ngx_http_request_t *r); |
2377
87b8c44906b5
*) refactor subrequest handling, now they run as separate posted requests
Igor Sysoev <igor@sysoev.ru>
parents:
2294
diff
changeset
|
86 void ngx_http_run_posted_requests(ngx_connection_t *c); |
87b8c44906b5
*) refactor subrequest handling, now they run as separate posted requests
Igor Sysoev <igor@sysoev.ru>
parents:
2294
diff
changeset
|
87 ngx_int_t ngx_http_post_request(ngx_http_request_t *r); |
509 | 88 void ngx_http_finalize_request(ngx_http_request_t *r, ngx_int_t rc); |
87
5f6d848dcbef
nginx-0.0.1-2003-05-13-20:02:32 import
Igor Sysoev <igor@sysoev.ru>
parents:
86
diff
changeset
|
89 |
191
71ce40b3c37b
nginx-0.0.1-2003-11-19-19:26:41 import
Igor Sysoev <igor@sysoev.ru>
parents:
190
diff
changeset
|
90 void ngx_http_empty_handler(ngx_event_t *wev); |
509 | 91 void ngx_http_request_empty_handler(ngx_http_request_t *r); |
87
5f6d848dcbef
nginx-0.0.1-2003-05-13-20:02:32 import
Igor Sysoev <igor@sysoev.ru>
parents:
86
diff
changeset
|
92 |
2377
87b8c44906b5
*) refactor subrequest handling, now they run as separate posted requests
Igor Sysoev <igor@sysoev.ru>
parents:
2294
diff
changeset
|
93 |
581 | 94 #define NGX_HTTP_LAST 1 |
95 #define NGX_HTTP_FLUSH 2 | |
96 | |
97 ngx_int_t ngx_http_send_special(ngx_http_request_t *r, ngx_uint_t flags); | |
98 | |
59
e8cdc2989cee
nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents:
58
diff
changeset
|
99 |
479 | 100 ngx_int_t ngx_http_read_client_request_body(ngx_http_request_t *r, |
499 | 101 ngx_http_client_body_handler_pt post_handler); |
83
a7e45c45a95c
nginx-0.0.1-2003-04-28-19:06:39 import
Igor Sysoev <igor@sysoev.ru>
parents:
82
diff
changeset
|
102 |
356
2e3cbc1bbe3c
nginx-0.0.7-2004-06-16-19:32:11 import
Igor Sysoev <igor@sysoev.ru>
parents:
346
diff
changeset
|
103 ngx_int_t ngx_http_send_header(ngx_http_request_t *r); |
499 | 104 ngx_int_t ngx_http_special_response_handler(ngx_http_request_t *r, |
105 ngx_int_t error); | |
2787
3daf68f2efe3
ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents:
2592
diff
changeset
|
106 ngx_int_t ngx_http_filter_finalize_request(ngx_http_request_t *r, |
2821
26e06e009ced
allow to pass image filter errors via the same location where the filter is set
Igor Sysoev <igor@sysoev.ru>
parents:
2787
diff
changeset
|
107 ngx_module_t *m, ngx_int_t error); |
2787
3daf68f2efe3
ngx_http_filter_finalize_request() and ngx_http_clean_header()
Igor Sysoev <igor@sysoev.ru>
parents:
2592
diff
changeset
|
108 void ngx_http_clean_header(ngx_http_request_t *r); |
59
e8cdc2989cee
nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents:
58
diff
changeset
|
109 |
e8cdc2989cee
nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents:
58
diff
changeset
|
110 |
290
87e73f067470
nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents:
287
diff
changeset
|
111 time_t ngx_http_parse_time(u_char *value, size_t len); |
59
e8cdc2989cee
nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents:
58
diff
changeset
|
112 size_t ngx_http_get_time(char *buf, time_t t); |
164
84036764e215
nginx-0.0.1-2003-10-29-11:30:44 import
Igor Sysoev <igor@sysoev.ru>
parents:
160
diff
changeset
|
113 |
0
4eff17414a43
nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
114 |
4eff17414a43
nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
115 |
1370
cc114c85be0f
rename ngx_http_discard_body() to ngx_http_discard_request_body()
Igor Sysoev <igor@sysoev.ru>
parents:
1368
diff
changeset
|
116 ngx_int_t ngx_http_discard_request_body(ngx_http_request_t *r); |
1368
202cae9a0c2b
rename ngx_http_block_read() and ngx_http_test_read() to ..._reading()
Igor Sysoev <igor@sysoev.ru>
parents:
1219
diff
changeset
|
117 void ngx_http_block_reading(ngx_http_request_t *r); |
2294 | 118 void ngx_http_test_reading(ngx_http_request_t *r); |
26
53cb81681040
nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents:
24
diff
changeset
|
119 |
58
6b13b1cadabe
nginx-0.0.1-2003-01-30-21:21:39 import
Igor Sysoev <igor@sysoev.ru>
parents:
56
diff
changeset
|
120 |
2138 | 121 char *ngx_http_types_slot(ngx_conf_t *cf, ngx_command_t *cmd, void *conf); |
122 char *ngx_http_merge_types(ngx_conf_t *cf, ngx_array_t *keys, | |
123 ngx_hash_t *types_hash, ngx_array_t *prev_keys, ngx_hash_t *prev_types_hash, | |
124 ngx_str_t *default_types); | |
2175
a69886fc2864
*) fix segfaults in types hash
Igor Sysoev <igor@sysoev.ru>
parents:
2166
diff
changeset
|
125 ngx_int_t ngx_http_set_default_types(ngx_conf_t *cf, ngx_array_t **types, |
2138 | 126 ngx_str_t *default_type); |
127 | |
128 | |
91
637625a2acdb
nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents:
89
diff
changeset
|
129 extern ngx_module_t ngx_http_module; |
44
0e81ac0bb3e2
nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents:
43
diff
changeset
|
130 |
2166
723df5089c05
use hash in gzip_types, ssi_types, and sub_filter_types
Igor Sysoev <igor@sysoev.ru>
parents:
2138
diff
changeset
|
131 extern ngx_str_t ngx_http_html_default_types[]; |
723df5089c05
use hash in gzip_types, ssi_types, and sub_filter_types
Igor Sysoev <igor@sysoev.ru>
parents:
2138
diff
changeset
|
132 |
10
4f3879d9b6f6
nginx-0.0.1-2002-09-11-19:18:33 import
Igor Sysoev <igor@sysoev.ru>
parents:
9
diff
changeset
|
133 |
356
2e3cbc1bbe3c
nginx-0.0.7-2004-06-16-19:32:11 import
Igor Sysoev <igor@sysoev.ru>
parents:
346
diff
changeset
|
134 extern ngx_http_output_header_filter_pt ngx_http_top_header_filter; |
2e3cbc1bbe3c
nginx-0.0.7-2004-06-16-19:32:11 import
Igor Sysoev <igor@sysoev.ru>
parents:
346
diff
changeset
|
135 extern ngx_http_output_body_filter_pt ngx_http_top_body_filter; |
2e3cbc1bbe3c
nginx-0.0.7-2004-06-16-19:32:11 import
Igor Sysoev <igor@sysoev.ru>
parents:
346
diff
changeset
|
136 |
44
0e81ac0bb3e2
nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents:
43
diff
changeset
|
137 |
0
4eff17414a43
nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff
changeset
|
138 #endif /* _NGX_HTTP_H_INCLUDED_ */ |