Mercurial > hg > nginx-mail
comparison src/event/modules/ngx_devpoll_module.c @ 48:6cfc63e68377 NGINX_0_1_24
nginx 0.1.24
*) Feature: the ngx_http_ssi_filter_module supports the QUERY_STRING
and DOCUMENT_URI variables.
*) Bugfix: the ngx_http_autoindex_module may some times return the 404
response for existent directory, if this directory was used in
"alias" directive.
*) Bugfix: the ngx_http_ssi_filter_module ran incorrectly for large
responses.
*) Bugfix: the lack of the "Referer" header line was always accounted
as valid referrer.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Fri, 04 Mar 2005 00:00:00 +0300 |
parents | a39d1b793287 |
children | 72eb30262aac |
comparison
equal
deleted
inserted
replaced
47:4ae32548452c | 48:6cfc63e68377 |
---|---|
29 u_int changes; | 29 u_int changes; |
30 u_int events; | 30 u_int events; |
31 } ngx_devpoll_conf_t; | 31 } ngx_devpoll_conf_t; |
32 | 32 |
33 | 33 |
34 static int ngx_devpoll_init(ngx_cycle_t *cycle); | 34 static ngx_int_t ngx_devpoll_init(ngx_cycle_t *cycle); |
35 static void ngx_devpoll_done(ngx_cycle_t *cycle); | 35 static void ngx_devpoll_done(ngx_cycle_t *cycle); |
36 static int ngx_devpoll_add_event(ngx_event_t *ev, int event, u_int flags); | 36 static ngx_int_t ngx_devpoll_add_event(ngx_event_t *ev, int event, u_int flags); |
37 static int ngx_devpoll_del_event(ngx_event_t *ev, int event, u_int flags); | 37 static ngx_int_t ngx_devpoll_del_event(ngx_event_t *ev, int event, u_int flags); |
38 static int ngx_devpoll_set_event(ngx_event_t *ev, int event, u_int flags); | 38 static ngx_int_t ngx_devpoll_set_event(ngx_event_t *ev, int event, u_int flags); |
39 static int ngx_devpoll_process_events(ngx_cycle_t *cycle); | 39 static ngx_int_t ngx_devpoll_process_events(ngx_cycle_t *cycle); |
40 | 40 |
41 static void *ngx_devpoll_create_conf(ngx_cycle_t *cycle); | 41 static void *ngx_devpoll_create_conf(ngx_cycle_t *cycle); |
42 static char *ngx_devpoll_init_conf(ngx_cycle_t *cycle, void *conf); | 42 static char *ngx_devpoll_init_conf(ngx_cycle_t *cycle, void *conf); |
43 | 43 |
44 static int dp = -1; | 44 static int dp = -1; |
50 | 50 |
51 static ngx_str_t devpoll_name = ngx_string("/dev/poll"); | 51 static ngx_str_t devpoll_name = ngx_string("/dev/poll"); |
52 | 52 |
53 static ngx_command_t ngx_devpoll_commands[] = { | 53 static ngx_command_t ngx_devpoll_commands[] = { |
54 | 54 |
55 {ngx_string("devpoll_changes"), | 55 { ngx_string("devpoll_changes"), |
56 NGX_EVENT_CONF|NGX_CONF_TAKE1, | 56 NGX_EVENT_CONF|NGX_CONF_TAKE1, |
57 ngx_conf_set_num_slot, | 57 ngx_conf_set_num_slot, |
58 0, | 58 0, |
59 offsetof(ngx_devpoll_conf_t, changes), | 59 offsetof(ngx_devpoll_conf_t, changes), |
60 NULL}, | 60 NULL }, |
61 | 61 |
62 {ngx_string("devpoll_events"), | 62 { ngx_string("devpoll_events"), |
63 NGX_EVENT_CONF|NGX_CONF_TAKE1, | 63 NGX_EVENT_CONF|NGX_CONF_TAKE1, |
64 ngx_conf_set_num_slot, | 64 ngx_conf_set_num_slot, |
65 0, | 65 0, |
66 offsetof(ngx_devpoll_conf_t, events), | 66 offsetof(ngx_devpoll_conf_t, events), |
67 NULL}, | 67 NULL }, |
68 | 68 |
69 ngx_null_command | 69 ngx_null_command |
70 }; | 70 }; |
71 | 71 |
72 | 72 |
73 ngx_event_module_t ngx_devpoll_module_ctx = { | 73 ngx_event_module_t ngx_devpoll_module_ctx = { |
74 &devpoll_name, | 74 &devpoll_name, |
98 NULL, /* init module */ | 98 NULL, /* init module */ |
99 NULL /* init process */ | 99 NULL /* init process */ |
100 }; | 100 }; |
101 | 101 |
102 | 102 |
103 static int ngx_devpoll_init(ngx_cycle_t *cycle) | 103 static ngx_int_t |
104 ngx_devpoll_init(ngx_cycle_t *cycle) | |
104 { | 105 { |
105 size_t n; | 106 size_t n; |
106 ngx_devpoll_conf_t *dpcf; | 107 ngx_devpoll_conf_t *dpcf; |
107 | 108 |
108 dpcf = ngx_event_get_conf(cycle->conf_ctx, ngx_devpoll_module); | 109 dpcf = ngx_event_get_conf(cycle->conf_ctx, ngx_devpoll_module); |
171 | 172 |
172 return NGX_OK; | 173 return NGX_OK; |
173 } | 174 } |
174 | 175 |
175 | 176 |
176 static void ngx_devpoll_done(ngx_cycle_t *cycle) | 177 static void |
178 ngx_devpoll_done(ngx_cycle_t *cycle) | |
177 { | 179 { |
178 if (close(dp) == -1) { | 180 if (close(dp) == -1) { |
179 ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno, | 181 ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno, |
180 "close(/dev/poll) failed"); | 182 "close(/dev/poll) failed"); |
181 } | 183 } |
193 nchanges = 0; | 195 nchanges = 0; |
194 nevents = 0; | 196 nevents = 0; |
195 } | 197 } |
196 | 198 |
197 | 199 |
198 static int ngx_devpoll_add_event(ngx_event_t *ev, int event, u_int flags) | 200 static ngx_int_t |
201 ngx_devpoll_add_event(ngx_event_t *ev, int event, u_int flags) | |
199 { | 202 { |
200 #if (NGX_DEBUG) | 203 #if (NGX_DEBUG) |
201 ngx_connection_t *c; | 204 ngx_connection_t *c; |
202 #endif | 205 #endif |
203 | 206 |
215 | 218 |
216 return ngx_devpoll_set_event(ev, event, 0); | 219 return ngx_devpoll_set_event(ev, event, 0); |
217 } | 220 } |
218 | 221 |
219 | 222 |
220 static int ngx_devpoll_del_event(ngx_event_t *ev, int event, u_int flags) | 223 static ngx_int_t |
224 ngx_devpoll_del_event(ngx_event_t *ev, int event, u_int flags) | |
221 { | 225 { |
222 ngx_event_t *e; | 226 ngx_event_t *e; |
223 ngx_connection_t *c; | 227 ngx_connection_t *c; |
224 | 228 |
225 c = ev->data; | 229 c = ev->data; |
258 | 262 |
259 return NGX_OK; | 263 return NGX_OK; |
260 } | 264 } |
261 | 265 |
262 | 266 |
263 static int ngx_devpoll_set_event(ngx_event_t *ev, int event, u_int flags) | 267 static ngx_int_t |
268 ngx_devpoll_set_event(ngx_event_t *ev, int event, u_int flags) | |
264 { | 269 { |
265 size_t n; | 270 size_t n; |
266 ngx_connection_t *c; | 271 ngx_connection_t *c; |
267 | 272 |
268 c = ev->data; | 273 c = ev->data; |
306 | 311 |
307 return NGX_OK; | 312 return NGX_OK; |
308 } | 313 } |
309 | 314 |
310 | 315 |
311 int ngx_devpoll_process_events(ngx_cycle_t *cycle) | 316 ngx_int_t |
317 ngx_devpoll_process_events(ngx_cycle_t *cycle) | |
312 { | 318 { |
313 int events, revents; | 319 int events, revents; |
314 ngx_int_t i; | 320 ngx_int_t i; |
315 ngx_uint_t j, lock, accept_lock, expire; | 321 ngx_uint_t j, lock, accept_lock, expire; |
316 size_t n; | 322 size_t n; |
567 | 573 |
568 return NGX_OK; | 574 return NGX_OK; |
569 } | 575 } |
570 | 576 |
571 | 577 |
572 static void *ngx_devpoll_create_conf(ngx_cycle_t *cycle) | 578 static void * |
579 ngx_devpoll_create_conf(ngx_cycle_t *cycle) | |
573 { | 580 { |
574 ngx_devpoll_conf_t *dpcf; | 581 ngx_devpoll_conf_t *dpcf; |
575 | 582 |
576 ngx_test_null(dpcf, ngx_palloc(cycle->pool, sizeof(ngx_devpoll_conf_t)), | 583 ngx_test_null(dpcf, ngx_palloc(cycle->pool, sizeof(ngx_devpoll_conf_t)), |
577 NGX_CONF_ERROR); | 584 NGX_CONF_ERROR); |
581 | 588 |
582 return dpcf; | 589 return dpcf; |
583 } | 590 } |
584 | 591 |
585 | 592 |
586 static char *ngx_devpoll_init_conf(ngx_cycle_t *cycle, void *conf) | 593 static char * |
594 ngx_devpoll_init_conf(ngx_cycle_t *cycle, void *conf) | |
587 { | 595 { |
588 ngx_devpoll_conf_t *dpcf = conf; | 596 ngx_devpoll_conf_t *dpcf = conf; |
589 | 597 |
590 ngx_conf_init_unsigned_value(dpcf->changes, 32); | 598 ngx_conf_init_unsigned_value(dpcf->changes, 32); |
591 ngx_conf_init_unsigned_value(dpcf->events, 32); | 599 ngx_conf_init_unsigned_value(dpcf->events, 32); |