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);