annotate src/event/modules/ngx_poll_module.c @ 7583:efd71d49bde0

Events: available bytes calculation via ioctl(FIONREAD). This makes it possible to avoid looping for a long time while working with a fast enough peer when data are added to the socket buffer faster than we are able to read and process them (ticket #1431). This is basically what we already do on FreeBSD with kqueue, where information about the number of bytes in the socket buffer is returned by the kevent() call. With other event methods rev->available is now set to -1 when the socket is ready for reading. Later in ngx_recv() and ngx_recv_chain(), if full buffer is received, real number of bytes in the socket buffer is retrieved using ioctl(FIONREAD). Reading more than this number of bytes ensures that even with edge-triggered event methods the event will be triggered again, so it is safe to stop processing of the socket and switch to other connections. Using ioctl(FIONREAD) only after reading a full buffer is an optimization. With this approach we only call ioctl(FIONREAD) when there are at least two recv()/readv() calls.
author Maxim Dounin <mdounin@mdounin.ru>
date Thu, 17 Oct 2019 16:02:19 +0300
parents e0e636ab10be
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
92
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
1
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
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
4412
d620f497c50f Copyright updated.
Maxim Konovalov <maxim@nginx.com>
parents: 3475
diff changeset
4 * Copyright (C) Nginx, Inc.
92
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
5 */
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
6
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
7
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
8 #include <ngx_config.h>
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
9 #include <ngx_core.h>
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
10 #include <ngx_event.h>
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
11
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
12
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
13 static ngx_int_t ngx_poll_init(ngx_cycle_t *cycle, ngx_msec_t timer);
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
14 static void ngx_poll_done(ngx_cycle_t *cycle);
1354
f69d1aab6a0f make 64-bit ngx_int_t on 64-bit platforms
Igor Sysoev <igor@sysoev.ru>
parents: 708
diff changeset
15 static ngx_int_t ngx_poll_add_event(ngx_event_t *ev, ngx_int_t event,
f69d1aab6a0f make 64-bit ngx_int_t on 64-bit platforms
Igor Sysoev <igor@sysoev.ru>
parents: 708
diff changeset
16 ngx_uint_t flags);
f69d1aab6a0f make 64-bit ngx_int_t on 64-bit platforms
Igor Sysoev <igor@sysoev.ru>
parents: 708
diff changeset
17 static ngx_int_t ngx_poll_del_event(ngx_event_t *ev, ngx_int_t event,
f69d1aab6a0f make 64-bit ngx_int_t on 64-bit platforms
Igor Sysoev <igor@sysoev.ru>
parents: 708
diff changeset
18 ngx_uint_t flags);
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
19 static ngx_int_t ngx_poll_process_events(ngx_cycle_t *cycle, ngx_msec_t timer,
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
20 ngx_uint_t flags);
381
02a511569afb nginx-0.0.7-2004-07-07-19:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 380
diff changeset
21 static char *ngx_poll_init_conf(ngx_cycle_t *cycle, void *conf);
92
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
22
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
23
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
24 static struct pollfd *event_list;
5802
a4e9c7e6e062 Events: changed nevents type to unsigned in poll module.
Yves Crespin <yves.crespin@e-quartz.fr>
parents: 5016
diff changeset
25 static ngx_uint_t nevents;
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
26
92
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
27
6922
a72886067bbb Added missing static specifiers.
Eran Kornblau <erankor@gmail.com>
parents: 6806
diff changeset
28 static ngx_str_t poll_name = ngx_string("poll");
92
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
29
6922
a72886067bbb Added missing static specifiers.
Eran Kornblau <erankor@gmail.com>
parents: 6806
diff changeset
30 static ngx_event_module_t ngx_poll_module_ctx = {
92
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
31 &poll_name,
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
32 NULL, /* create configuration */
381
02a511569afb nginx-0.0.7-2004-07-07-19:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 380
diff changeset
33 ngx_poll_init_conf, /* init configuration */
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
34
92
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
35 {
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
36 ngx_poll_add_event, /* add an event */
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
37 ngx_poll_del_event, /* delete an event */
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
38 ngx_poll_add_event, /* enable an event */
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
39 ngx_poll_del_event, /* disable an event */
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
40 NULL, /* add an connection */
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
41 NULL, /* delete an connection */
6018
466bd63b63d1 Thread pools implementation.
Valentin Bartenev <vbart@nginx.com>
parents: 6016
diff changeset
42 NULL, /* trigger a notify */
92
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
43 ngx_poll_process_events, /* process the events */
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
44 ngx_poll_init, /* init the events */
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
45 ngx_poll_done /* done the events */
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
46 }
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
47
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
48 };
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
49
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
50 ngx_module_t ngx_poll_module = {
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
51 NGX_MODULE_V1,
92
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
52 &ngx_poll_module_ctx, /* module context */
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
53 NULL, /* module directives */
96
a23d010f356d nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 92
diff changeset
54 NGX_EVENT_MODULE, /* module type */
541
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
55 NULL, /* init master */
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
56 NULL, /* init module */
541
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
57 NULL, /* init process */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
58 NULL, /* init thread */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
59 NULL, /* exit thread */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
60 NULL, /* exit process */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
61 NULL, /* exit master */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
62 NGX_MODULE_V1_PADDING
92
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
63 };
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
64
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
65
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
66
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
67 static ngx_int_t
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
68 ngx_poll_init(ngx_cycle_t *cycle, ngx_msec_t timer)
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
69 {
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
70 struct pollfd *list;
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
71
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
72 if (event_list == NULL) {
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
73 nevents = 0;
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
74 }
92
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
75
3358
f94e8ff65aa2 add NGX_PROCESS_HELPER process status
Igor Sysoev <igor@sysoev.ru>
parents: 3043
diff changeset
76 if (ngx_process >= NGX_PROCESS_WORKER
314
d71c87d11b16 nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 313
diff changeset
77 || cycle->old_cycle == NULL
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
78 || cycle->old_cycle->connection_n < cycle->connection_n)
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
79 {
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
80 list = ngx_alloc(sizeof(struct pollfd) * cycle->connection_n,
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
81 cycle->log);
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
82 if (list == NULL) {
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
83 return NGX_ERROR;
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
84 }
92
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
85
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
86 if (event_list) {
7442
e0e636ab10be Events: fixed copying of old events in poll init.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6922
diff changeset
87 ngx_memcpy(list, event_list, sizeof(struct pollfd) * nevents);
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
88 ngx_free(event_list);
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
89 }
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
90
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
91 event_list = list;
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
92 }
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
93
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
94 ngx_io = ngx_os_io;
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
95
92
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
96 ngx_event_actions = ngx_poll_module_ctx.actions;
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
97
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
98 ngx_event_flags = NGX_USE_LEVEL_EVENT|NGX_USE_FD_EVENT;
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
99
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
100 return NGX_OK;
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
101 }
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
102
92
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
103
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
104 static void
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
105 ngx_poll_done(ngx_cycle_t *cycle)
92
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
106 {
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
107 ngx_free(event_list);
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
108
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
109 event_list = NULL;
92
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
110 }
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
111
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
112
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
113 static ngx_int_t
1354
f69d1aab6a0f make 64-bit ngx_int_t on 64-bit platforms
Igor Sysoev <igor@sysoev.ru>
parents: 708
diff changeset
114 ngx_poll_add_event(ngx_event_t *ev, ngx_int_t event, ngx_uint_t flags)
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
115 {
39
83fa61cd3d2f nginx-0.0.1-2002-12-24-20:30:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 38
diff changeset
116 ngx_event_t *e;
83fa61cd3d2f nginx-0.0.1-2002-12-24-20:30:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 38
diff changeset
117 ngx_connection_t *c;
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
118
92
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
119 c = ev->data;
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
120
315
39b6f2df45c0 nginx-0.0.3-2004-04-14-21:44:28 import
Igor Sysoev <igor@sysoev.ru>
parents: 314
diff changeset
121 ev->active = 1;
39b6f2df45c0 nginx-0.0.3-2004-04-14-21:44:28 import
Igor Sysoev <igor@sysoev.ru>
parents: 314
diff changeset
122
250
1903c6821958 nginx-0.0.2-2004-02-03-23:27:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 248
diff changeset
123 if (ev->index != NGX_INVALID_INDEX) {
1903c6821958 nginx-0.0.2-2004-02-03-23:27:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 248
diff changeset
124 ngx_log_error(NGX_LOG_ALERT, ev->log, 0,
1354
f69d1aab6a0f make 64-bit ngx_int_t on 64-bit platforms
Igor Sysoev <igor@sysoev.ru>
parents: 708
diff changeset
125 "poll event fd:%d ev:%i is already set", c->fd, event);
250
1903c6821958 nginx-0.0.2-2004-02-03-23:27:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 248
diff changeset
126 return NGX_OK;
1903c6821958 nginx-0.0.2-2004-02-03-23:27:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 248
diff changeset
127 }
1903c6821958 nginx-0.0.2-2004-02-03-23:27:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 248
diff changeset
128
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
129 if (event == NGX_READ_EVENT) {
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
130 e = c->write;
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
131 #if (NGX_READ_EVENT != POLLIN)
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
132 event = POLLIN;
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
133 #endif
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
134
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
135 } else {
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
136 e = c->read;
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
137 #if (NGX_WRITE_EVENT != POLLOUT)
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
138 event = POLLOUT;
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
139 #endif
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
140 }
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
141
245
e6c005b66b3a nginx-0.0.1-2004-01-30-00:45:01 import
Igor Sysoev <igor@sysoev.ru>
parents: 230
diff changeset
142 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0,
1354
f69d1aab6a0f make 64-bit ngx_int_t on 64-bit platforms
Igor Sysoev <igor@sysoev.ru>
parents: 708
diff changeset
143 "poll add event: fd:%d ev:%i", c->fd, event);
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
144
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
145 if (e == NULL || e->index == NGX_INVALID_INDEX) {
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
146 event_list[nevents].fd = c->fd;
1354
f69d1aab6a0f make 64-bit ngx_int_t on 64-bit platforms
Igor Sysoev <igor@sysoev.ru>
parents: 708
diff changeset
147 event_list[nevents].events = (short) event;
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
148 event_list[nevents].revents = 0;
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
149
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
150 ev->index = nevents;
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
151 nevents++;
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
152
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
153 } else {
250
1903c6821958 nginx-0.0.2-2004-02-03-23:27:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 248
diff changeset
154 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, ev->log, 0,
1354
f69d1aab6a0f make 64-bit ngx_int_t on 64-bit platforms
Igor Sysoev <igor@sysoev.ru>
parents: 708
diff changeset
155 "poll add index: %i", e->index);
250
1903c6821958 nginx-0.0.2-2004-02-03-23:27:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 248
diff changeset
156
1354
f69d1aab6a0f make 64-bit ngx_int_t on 64-bit platforms
Igor Sysoev <igor@sysoev.ru>
parents: 708
diff changeset
157 event_list[e->index].events |= (short) event;
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
158 ev->index = e->index;
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
159 }
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
160
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
161 return NGX_OK;
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
162 }
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
163
92
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
164
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
165 static ngx_int_t
1354
f69d1aab6a0f make 64-bit ngx_int_t on 64-bit platforms
Igor Sysoev <igor@sysoev.ru>
parents: 708
diff changeset
166 ngx_poll_del_event(ngx_event_t *ev, ngx_int_t event, ngx_uint_t flags)
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
167 {
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
168 ngx_event_t *e;
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
169 ngx_connection_t *c;
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
170
252
84b1c672ec5a nginx-0.0.2-2004-02-05-19:58:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 251
diff changeset
171 c = ev->data;
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
172
313
98f1a8028067 nginx-0.0.3-2004-04-13-19:08:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 305
diff changeset
173 ev->active = 0;
98f1a8028067 nginx-0.0.3-2004-04-13-19:08:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 305
diff changeset
174
39
83fa61cd3d2f nginx-0.0.1-2002-12-24-20:30:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 38
diff changeset
175 if (ev->index == NGX_INVALID_INDEX) {
252
84b1c672ec5a nginx-0.0.2-2004-02-05-19:58:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 251
diff changeset
176 ngx_log_error(NGX_LOG_ALERT, ev->log, 0,
1354
f69d1aab6a0f make 64-bit ngx_int_t on 64-bit platforms
Igor Sysoev <igor@sysoev.ru>
parents: 708
diff changeset
177 "poll event fd:%d ev:%i is already deleted",
252
84b1c672ec5a nginx-0.0.2-2004-02-05-19:58:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 251
diff changeset
178 c->fd, event);
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
179 return NGX_OK;
39
83fa61cd3d2f nginx-0.0.1-2002-12-24-20:30:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 38
diff changeset
180 }
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
181
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
182 if (event == NGX_READ_EVENT) {
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
183 e = c->write;
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
184 #if (NGX_READ_EVENT != POLLIN)
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
185 event = POLLIN;
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
186 #endif
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
187
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
188 } else {
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
189 e = c->read;
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
190 #if (NGX_WRITE_EVENT != POLLOUT)
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
191 event = POLLOUT;
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
192 #endif
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
193 }
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
194
245
e6c005b66b3a nginx-0.0.1-2004-01-30-00:45:01 import
Igor Sysoev <igor@sysoev.ru>
parents: 230
diff changeset
195 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0,
1354
f69d1aab6a0f make 64-bit ngx_int_t on 64-bit platforms
Igor Sysoev <igor@sysoev.ru>
parents: 708
diff changeset
196 "poll del event: fd:%d ev:%i", c->fd, event);
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
197
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
198 if (e == NULL || e->index == NGX_INVALID_INDEX) {
250
1903c6821958 nginx-0.0.2-2004-02-03-23:27:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 248
diff changeset
199 nevents--;
1903c6821958 nginx-0.0.2-2004-02-03-23:27:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 248
diff changeset
200
5802
a4e9c7e6e062 Events: changed nevents type to unsigned in poll module.
Yves Crespin <yves.crespin@e-quartz.fr>
parents: 5016
diff changeset
201 if (ev->index < nevents) {
259
d30f2c39caae nginx-0.0.2-2004-02-12-23:57:10 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
202
d30f2c39caae nginx-0.0.2-2004-02-12-23:57:10 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
203 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, ev->log, 0,
1354
f69d1aab6a0f make 64-bit ngx_int_t on 64-bit platforms
Igor Sysoev <igor@sysoev.ru>
parents: 708
diff changeset
204 "index: copy event %ui to %i", nevents, ev->index);
259
d30f2c39caae nginx-0.0.2-2004-02-12-23:57:10 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
205
37
9fe40e51d4a3 nginx-0.0.1-2002-12-23-21:22:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 36
diff changeset
206 event_list[ev->index] = event_list[nevents];
252
84b1c672ec5a nginx-0.0.2-2004-02-05-19:58:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 251
diff changeset
207
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
208 c = ngx_cycle->files[event_list[nevents].fd];
252
84b1c672ec5a nginx-0.0.2-2004-02-05-19:58:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 251
diff changeset
209
84b1c672ec5a nginx-0.0.2-2004-02-05-19:58:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 251
diff changeset
210 if (c->fd == -1) {
84b1c672ec5a nginx-0.0.2-2004-02-05-19:58:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 251
diff changeset
211 ngx_log_error(NGX_LOG_ALERT, ev->log, 0,
84b1c672ec5a nginx-0.0.2-2004-02-05-19:58:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 251
diff changeset
212 "unexpected last event");
84b1c672ec5a nginx-0.0.2-2004-02-05-19:58:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 251
diff changeset
213
84b1c672ec5a nginx-0.0.2-2004-02-05-19:58:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 251
diff changeset
214 } else {
5802
a4e9c7e6e062 Events: changed nevents type to unsigned in poll module.
Yves Crespin <yves.crespin@e-quartz.fr>
parents: 5016
diff changeset
215 if (c->read->index == nevents) {
252
84b1c672ec5a nginx-0.0.2-2004-02-05-19:58:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 251
diff changeset
216 c->read->index = ev->index;
259
d30f2c39caae nginx-0.0.2-2004-02-12-23:57:10 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
217 }
252
84b1c672ec5a nginx-0.0.2-2004-02-05-19:58:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 251
diff changeset
218
5802
a4e9c7e6e062 Events: changed nevents type to unsigned in poll module.
Yves Crespin <yves.crespin@e-quartz.fr>
parents: 5016
diff changeset
219 if (c->write->index == nevents) {
259
d30f2c39caae nginx-0.0.2-2004-02-12-23:57:10 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
220 c->write->index = ev->index;
252
84b1c672ec5a nginx-0.0.2-2004-02-05-19:58:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 251
diff changeset
221 }
84b1c672ec5a nginx-0.0.2-2004-02-05-19:58:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 251
diff changeset
222 }
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
223 }
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
224
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
225 } else {
250
1903c6821958 nginx-0.0.2-2004-02-03-23:27:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 248
diff changeset
226 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, ev->log, 0,
1354
f69d1aab6a0f make 64-bit ngx_int_t on 64-bit platforms
Igor Sysoev <igor@sysoev.ru>
parents: 708
diff changeset
227 "poll del index: %i", e->index);
250
1903c6821958 nginx-0.0.2-2004-02-03-23:27:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 248
diff changeset
228
1354
f69d1aab6a0f make 64-bit ngx_int_t on 64-bit platforms
Igor Sysoev <igor@sysoev.ru>
parents: 708
diff changeset
229 event_list[e->index].events &= (short) ~event;
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
230 }
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
231
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
232 ev->index = NGX_INVALID_INDEX;
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
233
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
234 return NGX_OK;
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
235 }
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
236
92
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
237
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
238 static ngx_int_t
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
239 ngx_poll_process_events(ngx_cycle_t *cycle, ngx_msec_t timer, ngx_uint_t flags)
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
240 {
483
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
241 int ready, revents;
557
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 543
diff changeset
242 ngx_err_t err;
5802
a4e9c7e6e062 Events: changed nevents type to unsigned in poll module.
Yves Crespin <yves.crespin@e-quartz.fr>
parents: 5016
diff changeset
243 ngx_uint_t i, found, level;
5821
3f5f0ab59b35 Events: processing of posted events changed from LIFO to FIFO.
Valentin Bartenev <vbart@nginx.com>
parents: 5820
diff changeset
244 ngx_event_t *ev;
3f5f0ab59b35 Events: processing of posted events changed from LIFO to FIFO.
Valentin Bartenev <vbart@nginx.com>
parents: 5820
diff changeset
245 ngx_queue_t *queue;
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
246 ngx_connection_t *c;
356
2e3cbc1bbe3c nginx-0.0.7-2004-06-16-19:32:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 327
diff changeset
247
2e3cbc1bbe3c nginx-0.0.7-2004-06-16-19:32:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 327
diff changeset
248 /* NGX_TIMER_INFINITE == INFTIM */
2e3cbc1bbe3c nginx-0.0.7-2004-06-16-19:32:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 327
diff changeset
249
252
84b1c672ec5a nginx-0.0.2-2004-02-05-19:58:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 251
diff changeset
250 #if (NGX_DEBUG0)
323
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
251 if (cycle->log->log_level & NGX_LOG_DEBUG_ALL) {
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
252 for (i = 0; i < nevents; i++) {
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
253 ngx_log_debug3(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
5803
ecfc601f1225 Events: format specifier fixes.
Yves Crespin <yves.crespin@e-quartz.fr>
parents: 5802
diff changeset
254 "poll: %ui: fd:%d ev:%04Xd",
323
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
255 i, event_list[i].fd, event_list[i].events);
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
256 }
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
257 }
313
98f1a8028067 nginx-0.0.3-2004-04-13-19:08:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 305
diff changeset
258 #endif
98f1a8028067 nginx-0.0.3-2004-04-13-19:08:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 305
diff changeset
259
557
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 543
diff changeset
260 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0, "poll timer: %M", timer);
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
261
194
2357fa41738a nginx-0.0.1-2003-11-21-09:30:49 import
Igor Sysoev <igor@sysoev.ru>
parents: 179
diff changeset
262 ready = poll(event_list, (u_int) nevents, (int) timer);
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
263
3043
a66d6dfd53f1 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 1354
diff changeset
264 err = (ready == -1) ? ngx_errno : 0;
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
265
3473
0299cf5856fc do not update time in the timer signal handler,
Igor Sysoev <igor@sysoev.ru>
parents: 3358
diff changeset
266 if (flags & NGX_UPDATE_TIME || ngx_event_timer_alarm) {
3475
ab353d7dc182 *) introduce ngx_time_sigsafe_update() to update the error log time only
Igor Sysoev <igor@sysoev.ru>
parents: 3474
diff changeset
267 ngx_time_update();
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
268 }
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
269
305
4b1a3a4acc60 nginx-0.0.3-2004-04-02-19:13:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 261
diff changeset
270 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
5803
ecfc601f1225 Events: format specifier fixes.
Yves Crespin <yves.crespin@e-quartz.fr>
parents: 5802
diff changeset
271 "poll ready %d of %ui", ready, nevents);
246
6753e8cdaa2c nginx-0.0.1-2004-01-30-20:39:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
272
6753e8cdaa2c nginx-0.0.1-2004-01-30-20:39:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
273 if (err) {
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
274 if (err == NGX_EINTR) {
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
275
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
276 if (ngx_event_timer_alarm) {
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
277 ngx_event_timer_alarm = 0;
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
278 return NGX_OK;
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
279 }
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 567
diff changeset
280
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
281 level = NGX_LOG_INFO;
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 567
diff changeset
282
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 567
diff changeset
283 } else {
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
284 level = NGX_LOG_ALERT;
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
285 }
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
286
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
287 ngx_log_error(level, cycle->log, err, "poll() failed");
246
6753e8cdaa2c nginx-0.0.1-2004-01-30-20:39:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
288 return NGX_ERROR;
6753e8cdaa2c nginx-0.0.1-2004-01-30-20:39:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
289 }
6753e8cdaa2c nginx-0.0.1-2004-01-30-20:39:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
290
567
1af2fcb3be8a nginx-0.3.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
291 if (ready == 0) {
1af2fcb3be8a nginx-0.3.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
292 if (timer != NGX_TIMER_INFINITE) {
1af2fcb3be8a nginx-0.3.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
293 return NGX_OK;
1af2fcb3be8a nginx-0.3.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
294 }
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
295
567
1af2fcb3be8a nginx-0.3.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
296 ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
1af2fcb3be8a nginx-0.3.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
297 "poll() returned no events without timeout");
1af2fcb3be8a nginx-0.3.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
298 return NGX_ERROR;
313
98f1a8028067 nginx-0.0.3-2004-04-13-19:08:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 305
diff changeset
299 }
98f1a8028067 nginx-0.0.3-2004-04-13-19:08:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 305
diff changeset
300
38
2ffaa35fba42 nginx-0.0.1-2002-12-24-10:09:57 import
Igor Sysoev <igor@sysoev.ru>
parents: 37
diff changeset
301 for (i = 0; i < nevents && ready; i++) {
247
008276b9e061 nginx-0.0.1-2004-02-01-11:10:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 246
diff changeset
302
483
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
303 revents = event_list[i].revents;
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
304
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
305 #if 1
305
4b1a3a4acc60 nginx-0.0.3-2004-04-02-19:13:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 261
diff changeset
306 ngx_log_debug4(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
5803
ecfc601f1225 Events: format specifier fixes.
Yves Crespin <yves.crespin@e-quartz.fr>
parents: 5802
diff changeset
307 "poll: %ui: fd:%d ev:%04Xd rev:%04Xd",
483
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
308 i, event_list[i].fd, event_list[i].events, revents);
252
84b1c672ec5a nginx-0.0.2-2004-02-05-19:58:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 251
diff changeset
309 #else
483
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
310 if (revents) {
305
4b1a3a4acc60 nginx-0.0.3-2004-04-02-19:13:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 261
diff changeset
311 ngx_log_debug4(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
5803
ecfc601f1225 Events: format specifier fixes.
Yves Crespin <yves.crespin@e-quartz.fr>
parents: 5802
diff changeset
312 "poll: %ui: fd:%d ev:%04Xd rev:%04Xd",
483
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
313 i, event_list[i].fd, event_list[i].events, revents);
252
84b1c672ec5a nginx-0.0.2-2004-02-05-19:58:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 251
diff changeset
314 }
84b1c672ec5a nginx-0.0.2-2004-02-05-19:58:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 251
diff changeset
315 #endif
247
008276b9e061 nginx-0.0.1-2004-02-01-11:10:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 246
diff changeset
316
483
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
317 if (revents & POLLNVAL) {
305
4b1a3a4acc60 nginx-0.0.3-2004-04-02-19:13:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 261
diff changeset
318 ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
319 "poll() error fd:%d ev:%04Xd rev:%04Xd",
483
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
320 event_list[i].fd, event_list[i].events, revents);
247
008276b9e061 nginx-0.0.1-2004-02-01-11:10:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 246
diff changeset
321 }
008276b9e061 nginx-0.0.1-2004-02-01-11:10:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 246
diff changeset
322
483
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
323 if (revents & ~(POLLIN|POLLOUT|POLLERR|POLLHUP|POLLNVAL)) {
305
4b1a3a4acc60 nginx-0.0.3-2004-04-02-19:13:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 261
diff changeset
324 ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
325 "strange poll() events fd:%d ev:%04Xd rev:%04Xd",
483
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
326 event_list[i].fd, event_list[i].events, revents);
247
008276b9e061 nginx-0.0.1-2004-02-01-11:10:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 246
diff changeset
327 }
008276b9e061 nginx-0.0.1-2004-02-01-11:10:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 246
diff changeset
328
251
c31c40540318 nginx-0.0.2-2004-02-04-23:30:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 250
diff changeset
329 if (event_list[i].fd == -1) {
313
98f1a8028067 nginx-0.0.3-2004-04-13-19:08:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 305
diff changeset
330 /*
314
d71c87d11b16 nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 313
diff changeset
331 * the disabled event, a workaround for our possible bug,
d71c87d11b16 nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 313
diff changeset
332 * see the comment below
313
98f1a8028067 nginx-0.0.3-2004-04-13-19:08:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 305
diff changeset
333 */
251
c31c40540318 nginx-0.0.2-2004-02-04-23:30:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 250
diff changeset
334 continue;
c31c40540318 nginx-0.0.2-2004-02-04-23:30:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 250
diff changeset
335 }
c31c40540318 nginx-0.0.2-2004-02-04-23:30:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 250
diff changeset
336
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
337 c = ngx_cycle->files[event_list[i].fd];
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
338
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
339 if (c->fd == -1) {
305
4b1a3a4acc60 nginx-0.0.3-2004-04-02-19:13:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 261
diff changeset
340 ngx_log_error(NGX_LOG_ALERT, cycle->log, 0, "unexpected event");
250
1903c6821958 nginx-0.0.2-2004-02-03-23:27:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 248
diff changeset
341
1903c6821958 nginx-0.0.2-2004-02-03-23:27:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 248
diff changeset
342 /*
1903c6821958 nginx-0.0.2-2004-02-03-23:27:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 248
diff changeset
343 * it is certainly our fault and it should be investigated,
1903c6821958 nginx-0.0.2-2004-02-03-23:27:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 248
diff changeset
344 * in the meantime we disable this event to avoid a CPU spinning
1903c6821958 nginx-0.0.2-2004-02-03-23:27:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 248
diff changeset
345 */
1903c6821958 nginx-0.0.2-2004-02-03-23:27:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 248
diff changeset
346
1903c6821958 nginx-0.0.2-2004-02-03-23:27:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 248
diff changeset
347 if (i == nevents - 1) {
1903c6821958 nginx-0.0.2-2004-02-03-23:27:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 248
diff changeset
348 nevents--;
1903c6821958 nginx-0.0.2-2004-02-03-23:27:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 248
diff changeset
349 } else {
1903c6821958 nginx-0.0.2-2004-02-03-23:27:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 248
diff changeset
350 event_list[i].fd = -1;
1903c6821958 nginx-0.0.2-2004-02-03-23:27:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 248
diff changeset
351 }
1903c6821958 nginx-0.0.2-2004-02-03-23:27:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 248
diff changeset
352
247
008276b9e061 nginx-0.0.1-2004-02-01-11:10:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 246
diff changeset
353 continue;
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
354 }
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
355
6806
75dbab4ea930 Events: improved error event handling for UDP sockets.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 6112
diff changeset
356 if (revents & (POLLERR|POLLHUP|POLLNVAL)) {
75dbab4ea930 Events: improved error event handling for UDP sockets.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 6112
diff changeset
357
483
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
358 /*
6806
75dbab4ea930 Events: improved error event handling for UDP sockets.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 6112
diff changeset
359 * if the error events were returned, add POLLIN and POLLOUT
75dbab4ea930 Events: improved error event handling for UDP sockets.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 6112
diff changeset
360 * to handle the events at least in one active handler
483
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
361 */
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
362
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
363 revents |= POLLIN|POLLOUT;
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
364 }
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
365
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
366 found = 0;
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
367
5016
4406168861e8 Events: fixed null pointer dereference with resolver and poll.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
368 if ((revents & POLLIN) && c->read->active) {
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
369 found = 1;
313
98f1a8028067 nginx-0.0.3-2004-04-13-19:08:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 305
diff changeset
370
98f1a8028067 nginx-0.0.3-2004-04-13-19:08:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 305
diff changeset
371 ev = c->read;
5820
3377f9459e99 Events: removed broken thread support from posted events.
Valentin Bartenev <vbart@nginx.com>
parents: 5804
diff changeset
372 ev->ready = 1;
7583
efd71d49bde0 Events: available bytes calculation via ioctl(FIONREAD).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7442
diff changeset
373 ev->available = -1;
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
374
5820
3377f9459e99 Events: removed broken thread support from posted events.
Valentin Bartenev <vbart@nginx.com>
parents: 5804
diff changeset
375 queue = ev->accept ? &ngx_posted_accept_events
3377f9459e99 Events: removed broken thread support from posted events.
Valentin Bartenev <vbart@nginx.com>
parents: 5804
diff changeset
376 : &ngx_posted_events;
313
98f1a8028067 nginx-0.0.3-2004-04-13-19:08:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 305
diff changeset
377
5820
3377f9459e99 Events: removed broken thread support from posted events.
Valentin Bartenev <vbart@nginx.com>
parents: 5804
diff changeset
378 ngx_post_event(ev, queue);
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
379 }
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
380
5016
4406168861e8 Events: fixed null pointer dereference with resolver and poll.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
381 if ((revents & POLLOUT) && c->write->active) {
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
382 found = 1;
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
383
5820
3377f9459e99 Events: removed broken thread support from posted events.
Valentin Bartenev <vbart@nginx.com>
parents: 5804
diff changeset
384 ev = c->write;
3377f9459e99 Events: removed broken thread support from posted events.
Valentin Bartenev <vbart@nginx.com>
parents: 5804
diff changeset
385 ev->ready = 1;
313
98f1a8028067 nginx-0.0.3-2004-04-13-19:08:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 305
diff changeset
386
5820
3377f9459e99 Events: removed broken thread support from posted events.
Valentin Bartenev <vbart@nginx.com>
parents: 5804
diff changeset
387 ngx_post_event(ev, &ngx_posted_events);
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
388 }
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
389
92
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
390 if (found) {
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
391 ready--;
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
392 continue;
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
393 }
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
394 }
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
395
39
83fa61cd3d2f nginx-0.0.1-2002-12-24-20:30:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 38
diff changeset
396 if (ready != 0) {
305
4b1a3a4acc60 nginx-0.0.3-2004-04-02-19:13:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 261
diff changeset
397 ngx_log_error(NGX_LOG_ALERT, cycle->log, 0, "poll ready != events");
39
83fa61cd3d2f nginx-0.0.1-2002-12-24-20:30:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 38
diff changeset
398 }
83fa61cd3d2f nginx-0.0.1-2002-12-24-20:30:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 38
diff changeset
399
5804
92490a725fef Events: removed unused variable in ngx_poll_process_events().
Maxim Dounin <mdounin@mdounin.ru>
parents: 5803
diff changeset
400 return NGX_OK;
36
c14d7232b11f nginx-0.0.1-2002-12-23-09:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
401 }
381
02a511569afb nginx-0.0.7-2004-07-07-19:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 380
diff changeset
402
02a511569afb nginx-0.0.7-2004-07-07-19:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 380
diff changeset
403
499
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
404 static char *
64d9afb209da nginx-0.1.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
405 ngx_poll_init_conf(ngx_cycle_t *cycle, void *conf)
381
02a511569afb nginx-0.0.7-2004-07-07-19:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 380
diff changeset
406 {
02a511569afb nginx-0.0.7-2004-07-07-19:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 380
diff changeset
407 ngx_event_conf_t *ecf;
02a511569afb nginx-0.0.7-2004-07-07-19:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 380
diff changeset
408
02a511569afb nginx-0.0.7-2004-07-07-19:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 380
diff changeset
409 ecf = ngx_event_get_conf(cycle->conf_ctx, ngx_event_core_module);
02a511569afb nginx-0.0.7-2004-07-07-19:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 380
diff changeset
410
02a511569afb nginx-0.0.7-2004-07-07-19:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 380
diff changeset
411 if (ecf->use != ngx_poll_module.ctx_index) {
02a511569afb nginx-0.0.7-2004-07-07-19:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 380
diff changeset
412 return NGX_CONF_OK;
02a511569afb nginx-0.0.7-2004-07-07-19:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 380
diff changeset
413 }
02a511569afb nginx-0.0.7-2004-07-07-19:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 380
diff changeset
414
02a511569afb nginx-0.0.7-2004-07-07-19:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 380
diff changeset
415 return NGX_CONF_OK;
02a511569afb nginx-0.0.7-2004-07-07-19:01:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 380
diff changeset
416 }