annotate src/event/modules/ngx_win32_select_module.c @ 5360:3d2d3e1cf427

Win32: MinGW GCC compatibility. Several warnings silenced, notably (ngx_socket_t) -1 is now checked on socket operations instead of -1, as ngx_socket_t is unsigned on win32 and gcc complains on comparison. With this patch, it's now possible to compile nginx using mingw gcc, with options we normally compile on win32.
author Maxim Dounin <mdounin@mdounin.ru>
date Wed, 04 Sep 2013 20:48:28 +0400
parents d620f497c50f
children 3377f9459e99
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
1
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
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.
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
5 */
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
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
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
8 #include <ngx_config.h>
8
708f8bb772ec nginx-0.0.1-2002-09-02-18:48:24 import
Igor Sysoev <igor@sysoev.ru>
parents: 7
diff changeset
9 #include <ngx_core.h>
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
10 #include <ngx_event.h>
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
11
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 23
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_select_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_select_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_select_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_select_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_select_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);
2780
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
21 static void ngx_select_repair_fd_sets(ngx_cycle_t *cycle);
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
22 static char *ngx_select_init_conf(ngx_cycle_t *cycle, void *conf);
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
23
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
24
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 23
diff changeset
25 static fd_set master_read_fd_set;
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 23
diff changeset
26 static fd_set master_write_fd_set;
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 23
diff changeset
27 static fd_set work_read_fd_set;
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 23
diff changeset
28 static fd_set work_write_fd_set;
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
29
1354
f69d1aab6a0f make 64-bit ngx_int_t on 64-bit platforms
Igor Sysoev <igor@sysoev.ru>
parents: 708
diff changeset
30 static ngx_uint_t max_read;
f69d1aab6a0f make 64-bit ngx_int_t on 64-bit platforms
Igor Sysoev <igor@sysoev.ru>
parents: 708
diff changeset
31 static ngx_uint_t max_write;
314
d71c87d11b16 nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 302
diff changeset
32 static ngx_uint_t nevents;
17
8dd06e2844f5 nginx-0.0.1-2002-09-27-19:05:29 import
Igor Sysoev <igor@sysoev.ru>
parents: 13
diff changeset
33
8dd06e2844f5 nginx-0.0.1-2002-09-27-19:05:29 import
Igor Sysoev <igor@sysoev.ru>
parents: 13
diff changeset
34 static ngx_event_t **event_index;
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
35
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
36
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
37 static ngx_str_t select_name = ngx_string("select");
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
38
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
39 ngx_event_module_t ngx_select_module_ctx = {
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
40 &select_name,
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
41 NULL, /* create configuration */
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
42 ngx_select_init_conf, /* init configuration */
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
43
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
44 {
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
45 ngx_select_add_event, /* add an event */
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
46 ngx_select_del_event, /* delete an event */
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
47 ngx_select_add_event, /* enable an event */
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
48 ngx_select_del_event, /* disable an event */
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
49 NULL, /* add an connection */
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
50 NULL, /* delete an connection */
380
5ce6561246a5 nginx-0.0.7-2004-07-07-10:15:04 import
Igor Sysoev <igor@sysoev.ru>
parents: 375
diff changeset
51 NULL, /* process the changes */
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
52 ngx_select_process_events, /* process the events */
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
53 ngx_select_init, /* init the events */
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
54 ngx_select_done /* done the events */
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
55 }
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
56
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
57 };
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
58
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
59 ngx_module_t ngx_select_module = {
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 501
diff changeset
60 NGX_MODULE_V1,
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
61 &ngx_select_module_ctx, /* module context */
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
62 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
63 NGX_EVENT_MODULE, /* module type */
541
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
64 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
65 NULL, /* init module */
541
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
66 NULL, /* init process */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
67 NULL, /* init thread */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
68 NULL, /* exit thread */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
69 NULL, /* exit process */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
70 NULL, /* exit master */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
71 NGX_MODULE_V1_PADDING
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
72 };
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
73
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
74
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
75 static ngx_int_t
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
76 ngx_select_init(ngx_cycle_t *cycle, ngx_msec_t timer)
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
77 {
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
78 ngx_event_t **index;
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
79
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
80 if (event_index == NULL) {
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
81 FD_ZERO(&master_read_fd_set);
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
82 FD_ZERO(&master_write_fd_set);
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
83 nevents = 0;
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
84 }
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
85
3358
f94e8ff65aa2 add NGX_PROCESS_HELPER process status
Igor Sysoev <igor@sysoev.ru>
parents: 3043
diff changeset
86 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: 302
diff changeset
87 || 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
88 || 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
89 {
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
90 index = ngx_alloc(sizeof(ngx_event_t *) * 2 * cycle->connection_n,
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
91 cycle->log);
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
92 if (index == NULL) {
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
93 return NGX_ERROR;
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
94 }
17
8dd06e2844f5 nginx-0.0.1-2002-09-27-19:05:29 import
Igor Sysoev <igor@sysoev.ru>
parents: 13
diff changeset
95
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
96 if (event_index) {
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
97 ngx_memcpy(index, event_index, sizeof(ngx_event_t *) * nevents);
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
98 ngx_free(event_index);
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
99 }
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
100
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
101 event_index = index;
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
102 }
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
103
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
104 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
105
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
106 ngx_event_actions = ngx_select_module_ctx.actions;
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
107
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
108 ngx_event_flags = NGX_USE_LEVEL_EVENT;
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
109
2813
c00763aa5e1b divide select module into two modules: Unix and Win32 ones
Igor Sysoev <igor@sysoev.ru>
parents: 2809
diff changeset
110 max_read = 0;
c00763aa5e1b divide select module into two modules: Unix and Win32 ones
Igor Sysoev <igor@sysoev.ru>
parents: 2809
diff changeset
111 max_write = 0;
17
8dd06e2844f5 nginx-0.0.1-2002-09-27-19:05:29 import
Igor Sysoev <igor@sysoev.ru>
parents: 13
diff changeset
112
8dd06e2844f5 nginx-0.0.1-2002-09-27-19:05:29 import
Igor Sysoev <igor@sysoev.ru>
parents: 13
diff changeset
113 return NGX_OK;
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
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
116
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
117 static void
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
118 ngx_select_done(ngx_cycle_t *cycle)
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
119 {
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
120 ngx_free(event_index);
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
121
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
122 event_index = NULL;
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
123 }
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
124
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
125
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
126 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
127 ngx_select_add_event(ngx_event_t *ev, ngx_int_t event, ngx_uint_t flags)
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
128 {
39
83fa61cd3d2f nginx-0.0.1-2002-12-24-20:30:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 38
diff changeset
129 ngx_connection_t *c;
8
708f8bb772ec nginx-0.0.1-2002-09-02-18:48:24 import
Igor Sysoev <igor@sysoev.ru>
parents: 7
diff changeset
130
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
131 c = ev->data;
8
708f8bb772ec nginx-0.0.1-2002-09-02-18:48:24 import
Igor Sysoev <igor@sysoev.ru>
parents: 7
diff changeset
132
245
e6c005b66b3a nginx-0.0.1-2004-01-30-00:45:01 import
Igor Sysoev <igor@sysoev.ru>
parents: 230
diff changeset
133 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
134 "select add event fd:%d ev:%i", c->fd, event);
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
135
38
2ffaa35fba42 nginx-0.0.1-2002-12-24-10:09:57 import
Igor Sysoev <igor@sysoev.ru>
parents: 36
diff changeset
136 if (ev->index != NGX_INVALID_INDEX) {
2ffaa35fba42 nginx-0.0.1-2002-12-24-10:09:57 import
Igor Sysoev <igor@sysoev.ru>
parents: 36
diff changeset
137 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
138 "select event fd:%d ev:%i is already set", c->fd, event);
38
2ffaa35fba42 nginx-0.0.1-2002-12-24-10:09:57 import
Igor Sysoev <igor@sysoev.ru>
parents: 36
diff changeset
139 return NGX_OK;
2ffaa35fba42 nginx-0.0.1-2002-12-24-10:09:57 import
Igor Sysoev <igor@sysoev.ru>
parents: 36
diff changeset
140 }
2ffaa35fba42 nginx-0.0.1-2002-12-24-10:09:57 import
Igor Sysoev <igor@sysoev.ru>
parents: 36
diff changeset
141
2808
b7b2b0ea3366 test event type to prevent errors
Igor Sysoev <igor@sysoev.ru>
parents: 2781
diff changeset
142 if ((event == NGX_READ_EVENT && ev->write)
b7b2b0ea3366 test event type to prevent errors
Igor Sysoev <igor@sysoev.ru>
parents: 2781
diff changeset
143 || (event == NGX_WRITE_EVENT && !ev->write))
b7b2b0ea3366 test event type to prevent errors
Igor Sysoev <igor@sysoev.ru>
parents: 2781
diff changeset
144 {
b7b2b0ea3366 test event type to prevent errors
Igor Sysoev <igor@sysoev.ru>
parents: 2781
diff changeset
145 ngx_log_error(NGX_LOG_ALERT, ev->log, 0,
b7b2b0ea3366 test event type to prevent errors
Igor Sysoev <igor@sysoev.ru>
parents: 2781
diff changeset
146 "invalid select %s event fd:%d ev:%i",
b7b2b0ea3366 test event type to prevent errors
Igor Sysoev <igor@sysoev.ru>
parents: 2781
diff changeset
147 ev->write ? "write" : "read", c->fd, event);
b7b2b0ea3366 test event type to prevent errors
Igor Sysoev <igor@sysoev.ru>
parents: 2781
diff changeset
148 return NGX_ERROR;
b7b2b0ea3366 test event type to prevent errors
Igor Sysoev <igor@sysoev.ru>
parents: 2781
diff changeset
149 }
b7b2b0ea3366 test event type to prevent errors
Igor Sysoev <igor@sysoev.ru>
parents: 2781
diff changeset
150
5360
3d2d3e1cf427 Win32: MinGW GCC compatibility.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
151 if ((event == NGX_READ_EVENT && max_read >= FD_SETSIZE)
3d2d3e1cf427 Win32: MinGW GCC compatibility.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
152 || (event == NGX_WRITE_EVENT && max_write >= FD_SETSIZE))
8
708f8bb772ec nginx-0.0.1-2002-09-02-18:48:24 import
Igor Sysoev <igor@sysoev.ru>
parents: 7
diff changeset
153 {
708f8bb772ec nginx-0.0.1-2002-09-02-18:48:24 import
Igor Sysoev <igor@sysoev.ru>
parents: 7
diff changeset
154 ngx_log_error(NGX_LOG_ERR, ev->log, 0,
708f8bb772ec nginx-0.0.1-2002-09-02-18:48:24 import
Igor Sysoev <igor@sysoev.ru>
parents: 7
diff changeset
155 "maximum number of descriptors "
708f8bb772ec nginx-0.0.1-2002-09-02-18:48:24 import
Igor Sysoev <igor@sysoev.ru>
parents: 7
diff changeset
156 "supported by select() is %d", FD_SETSIZE);
708f8bb772ec nginx-0.0.1-2002-09-02-18:48:24 import
Igor Sysoev <igor@sysoev.ru>
parents: 7
diff changeset
157 return NGX_ERROR;
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
158 }
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
159
8
708f8bb772ec nginx-0.0.1-2002-09-02-18:48:24 import
Igor Sysoev <igor@sysoev.ru>
parents: 7
diff changeset
160 if (event == NGX_READ_EVENT) {
708f8bb772ec nginx-0.0.1-2002-09-02-18:48:24 import
Igor Sysoev <igor@sysoev.ru>
parents: 7
diff changeset
161 FD_SET(c->fd, &master_read_fd_set);
708f8bb772ec nginx-0.0.1-2002-09-02-18:48:24 import
Igor Sysoev <igor@sysoev.ru>
parents: 7
diff changeset
162 max_read++;
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
163
8
708f8bb772ec nginx-0.0.1-2002-09-02-18:48:24 import
Igor Sysoev <igor@sysoev.ru>
parents: 7
diff changeset
164 } else if (event == NGX_WRITE_EVENT) {
708f8bb772ec nginx-0.0.1-2002-09-02-18:48:24 import
Igor Sysoev <igor@sysoev.ru>
parents: 7
diff changeset
165 FD_SET(c->fd, &master_write_fd_set);
708f8bb772ec nginx-0.0.1-2002-09-02-18:48:24 import
Igor Sysoev <igor@sysoev.ru>
parents: 7
diff changeset
166 max_write++;
708f8bb772ec nginx-0.0.1-2002-09-02-18:48:24 import
Igor Sysoev <igor@sysoev.ru>
parents: 7
diff changeset
167 }
179
9f3a78b06c48 nginx-0.0.1-2003-11-11-21:13:43 import
Igor Sysoev <igor@sysoev.ru>
parents: 178
diff changeset
168
39
83fa61cd3d2f nginx-0.0.1-2002-12-24-20:30:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 38
diff changeset
169 ev->active = 1;
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
170
17
8dd06e2844f5 nginx-0.0.1-2002-09-27-19:05:29 import
Igor Sysoev <igor@sysoev.ru>
parents: 13
diff changeset
171 event_index[nevents] = ev;
8dd06e2844f5 nginx-0.0.1-2002-09-27-19:05:29 import
Igor Sysoev <igor@sysoev.ru>
parents: 13
diff changeset
172 ev->index = nevents;
8dd06e2844f5 nginx-0.0.1-2002-09-27-19:05:29 import
Igor Sysoev <igor@sysoev.ru>
parents: 13
diff changeset
173 nevents++;
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
174
8
708f8bb772ec nginx-0.0.1-2002-09-02-18:48:24 import
Igor Sysoev <igor@sysoev.ru>
parents: 7
diff changeset
175 return NGX_OK;
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
176 }
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
177
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
178
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
179 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
180 ngx_select_del_event(ngx_event_t *ev, ngx_int_t event, ngx_uint_t flags)
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
181 {
2809
be08552a64bf make code clearer
Igor Sysoev <igor@sysoev.ru>
parents: 2808
diff changeset
182 ngx_event_t *e;
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
183 ngx_connection_t *c;
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
184
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
185 c = ev->data;
8
708f8bb772ec nginx-0.0.1-2002-09-02-18:48:24 import
Igor Sysoev <igor@sysoev.ru>
parents: 7
diff changeset
186
314
d71c87d11b16 nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 302
diff changeset
187 ev->active = 0;
d71c87d11b16 nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 302
diff changeset
188
92
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
189 if (ev->index == NGX_INVALID_INDEX) {
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 23
diff changeset
190 return NGX_OK;
92
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
191 }
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 23
diff changeset
192
245
e6c005b66b3a nginx-0.0.1-2004-01-30-00:45:01 import
Igor Sysoev <igor@sysoev.ru>
parents: 230
diff changeset
193 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
194 "select del event fd:%d ev:%i", c->fd, event);
23
f540a63026c9 nginx-0.0.1-2002-12-06-19:32:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 17
diff changeset
195
8
708f8bb772ec nginx-0.0.1-2002-09-02-18:48:24 import
Igor Sysoev <igor@sysoev.ru>
parents: 7
diff changeset
196 if (event == NGX_READ_EVENT) {
708f8bb772ec nginx-0.0.1-2002-09-02-18:48:24 import
Igor Sysoev <igor@sysoev.ru>
parents: 7
diff changeset
197 FD_CLR(c->fd, &master_read_fd_set);
708f8bb772ec nginx-0.0.1-2002-09-02-18:48:24 import
Igor Sysoev <igor@sysoev.ru>
parents: 7
diff changeset
198 max_read--;
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
199
8
708f8bb772ec nginx-0.0.1-2002-09-02-18:48:24 import
Igor Sysoev <igor@sysoev.ru>
parents: 7
diff changeset
200 } else if (event == NGX_WRITE_EVENT) {
708f8bb772ec nginx-0.0.1-2002-09-02-18:48:24 import
Igor Sysoev <igor@sysoev.ru>
parents: 7
diff changeset
201 FD_CLR(c->fd, &master_write_fd_set);
708f8bb772ec nginx-0.0.1-2002-09-02-18:48:24 import
Igor Sysoev <igor@sysoev.ru>
parents: 7
diff changeset
202 max_write--;
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
203 }
92
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
204
1354
f69d1aab6a0f make 64-bit ngx_int_t on 64-bit platforms
Igor Sysoev <igor@sysoev.ru>
parents: 708
diff changeset
205 if (ev->index < --nevents) {
2809
be08552a64bf make code clearer
Igor Sysoev <igor@sysoev.ru>
parents: 2808
diff changeset
206 e = event_index[nevents];
be08552a64bf make code clearer
Igor Sysoev <igor@sysoev.ru>
parents: 2808
diff changeset
207 event_index[ev->index] = e;
be08552a64bf make code clearer
Igor Sysoev <igor@sysoev.ru>
parents: 2808
diff changeset
208 e->index = ev->index;
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
209 }
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
210
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 23
diff changeset
211 ev->index = NGX_INVALID_INDEX;
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 23
diff changeset
212
8
708f8bb772ec nginx-0.0.1-2002-09-02-18:48:24 import
Igor Sysoev <igor@sysoev.ru>
parents: 7
diff changeset
213 return NGX_OK;
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
214 }
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
215
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
216
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
217 static ngx_int_t
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
218 ngx_select_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
219 ngx_uint_t flags)
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
220 {
2778
ae3cba0dbee3 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2777
diff changeset
221 int ready, nready;
ae3cba0dbee3 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2777
diff changeset
222 ngx_err_t err;
ae3cba0dbee3 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2777
diff changeset
223 ngx_uint_t i, found;
ae3cba0dbee3 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2777
diff changeset
224 ngx_event_t *ev, **queue;
ae3cba0dbee3 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2777
diff changeset
225 struct timeval tv, *tp;
ae3cba0dbee3 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2777
diff changeset
226 ngx_connection_t *c;
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
227
315
39b6f2df45c0 nginx-0.0.3-2004-04-14-21:44:28 import
Igor Sysoev <igor@sysoev.ru>
parents: 314
diff changeset
228 #if (NGX_DEBUG)
323
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 321
diff changeset
229 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: 321
diff changeset
230 for (i = 0; i < nevents; i++) {
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 321
diff changeset
231 ev = event_index[i];
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 321
diff changeset
232 c = ev->data;
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 321
diff changeset
233 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 321
diff changeset
234 "select event: fd:%d wr:%d", c->fd, ev->write);
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 321
diff changeset
235 }
315
39b6f2df45c0 nginx-0.0.3-2004-04-14-21:44:28 import
Igor Sysoev <igor@sysoev.ru>
parents: 314
diff changeset
236 }
39b6f2df45c0 nginx-0.0.3-2004-04-14-21:44:28 import
Igor Sysoev <igor@sysoev.ru>
parents: 314
diff changeset
237 #endif
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
238
316
a0beefedaf94 nginx-0.0.3-2004-04-15-00:34:05 import
Igor Sysoev <igor@sysoev.ru>
parents: 315
diff changeset
239 if (timer == NGX_TIMER_INFINITE) {
a0beefedaf94 nginx-0.0.3-2004-04-15-00:34:05 import
Igor Sysoev <igor@sysoev.ru>
parents: 315
diff changeset
240 tp = NULL;
315
39b6f2df45c0 nginx-0.0.3-2004-04-14-21:44:28 import
Igor Sysoev <igor@sysoev.ru>
parents: 314
diff changeset
241
316
a0beefedaf94 nginx-0.0.3-2004-04-15-00:34:05 import
Igor Sysoev <igor@sysoev.ru>
parents: 315
diff changeset
242 } else {
557
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
243 tv.tv_sec = (long) (timer / 1000);
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
244 tv.tv_usec = (long) ((timer % 1000) * 1000);
315
39b6f2df45c0 nginx-0.0.3-2004-04-14-21:44:28 import
Igor Sysoev <igor@sysoev.ru>
parents: 314
diff changeset
245 tp = &tv;
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 23
diff changeset
246 }
314
d71c87d11b16 nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 302
diff changeset
247
302
1526e7686b20 nginx-0.0.3-2004-04-01-10:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
248 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
557
ecd9c160f25b nginx-0.3.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
249 "select timer: %M", timer);
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
250
315
39b6f2df45c0 nginx-0.0.3-2004-04-14-21:44:28 import
Igor Sysoev <igor@sysoev.ru>
parents: 314
diff changeset
251 work_read_fd_set = master_read_fd_set;
39b6f2df45c0 nginx-0.0.3-2004-04-14-21:44:28 import
Igor Sysoev <igor@sysoev.ru>
parents: 314
diff changeset
252 work_write_fd_set = master_write_fd_set;
39b6f2df45c0 nginx-0.0.3-2004-04-14-21:44:28 import
Igor Sysoev <igor@sysoev.ru>
parents: 314
diff changeset
253
2777
7615a6c5fb54 handle Winsock select() WSAEINVAL
Igor Sysoev <igor@sysoev.ru>
parents: 2062
diff changeset
254 if (max_read || max_write) {
7615a6c5fb54 handle Winsock select() WSAEINVAL
Igor Sysoev <igor@sysoev.ru>
parents: 2062
diff changeset
255 ready = select(0, &work_read_fd_set, &work_write_fd_set, NULL, tp);
7615a6c5fb54 handle Winsock select() WSAEINVAL
Igor Sysoev <igor@sysoev.ru>
parents: 2062
diff changeset
256
7615a6c5fb54 handle Winsock select() WSAEINVAL
Igor Sysoev <igor@sysoev.ru>
parents: 2062
diff changeset
257 } else {
7615a6c5fb54 handle Winsock select() WSAEINVAL
Igor Sysoev <igor@sysoev.ru>
parents: 2062
diff changeset
258
7615a6c5fb54 handle Winsock select() WSAEINVAL
Igor Sysoev <igor@sysoev.ru>
parents: 2062
diff changeset
259 /*
7615a6c5fb54 handle Winsock select() WSAEINVAL
Igor Sysoev <igor@sysoev.ru>
parents: 2062
diff changeset
260 * Winsock select() requires that at least one descriptor set must be
7615a6c5fb54 handle Winsock select() WSAEINVAL
Igor Sysoev <igor@sysoev.ru>
parents: 2062
diff changeset
261 * be non-null, and any non-null descriptor set must contain at least
7615a6c5fb54 handle Winsock select() WSAEINVAL
Igor Sysoev <igor@sysoev.ru>
parents: 2062
diff changeset
262 * one handle to a socket. Otherwise select() returns WSAEINVAL.
7615a6c5fb54 handle Winsock select() WSAEINVAL
Igor Sysoev <igor@sysoev.ru>
parents: 2062
diff changeset
263 */
7615a6c5fb54 handle Winsock select() WSAEINVAL
Igor Sysoev <igor@sysoev.ru>
parents: 2062
diff changeset
264
7615a6c5fb54 handle Winsock select() WSAEINVAL
Igor Sysoev <igor@sysoev.ru>
parents: 2062
diff changeset
265 ngx_msleep(timer);
7615a6c5fb54 handle Winsock select() WSAEINVAL
Igor Sysoev <igor@sysoev.ru>
parents: 2062
diff changeset
266
7615a6c5fb54 handle Winsock select() WSAEINVAL
Igor Sysoev <igor@sysoev.ru>
parents: 2062
diff changeset
267 ready = 0;
7615a6c5fb54 handle Winsock select() WSAEINVAL
Igor Sysoev <igor@sysoev.ru>
parents: 2062
diff changeset
268 }
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
269
3043
a66d6dfd53f1 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 2813
diff changeset
270 err = (ready == -1) ? ngx_socket_errno : 0;
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
271
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
272 if (flags & NGX_UPDATE_TIME) {
3475
ab353d7dc182 *) introduce ngx_time_sigsafe_update() to update the error log time only
Igor Sysoev <igor@sysoev.ru>
parents: 3474
diff changeset
273 ngx_time_update();
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
274 }
178
a8ff48d26cca nginx-0.0.1-2003-11-11-00:09:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 144
diff changeset
275
302
1526e7686b20 nginx-0.0.3-2004-04-01-10:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
276 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
1526e7686b20 nginx-0.0.3-2004-04-01-10:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
277 "select ready %d", ready);
245
e6c005b66b3a nginx-0.0.1-2004-01-30-00:45:01 import
Igor Sysoev <igor@sysoev.ru>
parents: 230
diff changeset
278
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
279 if (err) {
302
1526e7686b20 nginx-0.0.3-2004-04-01-10:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
280 ngx_log_error(NGX_LOG_ALERT, cycle->log, err, "select() failed");
2780
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
281
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
282 if (err == WSAENOTSOCK) {
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
283 ngx_select_repair_fd_sets(cycle);
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
284 }
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
285
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
286 return NGX_ERROR;
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
287 }
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
288
567
1af2fcb3be8a nginx-0.3.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
289 if (ready == 0) {
1af2fcb3be8a nginx-0.3.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
290 if (timer != NGX_TIMER_INFINITE) {
1af2fcb3be8a nginx-0.3.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
291 return NGX_OK;
1af2fcb3be8a nginx-0.3.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
292 }
1af2fcb3be8a nginx-0.3.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
293
1af2fcb3be8a nginx-0.3.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
294 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
295 "select() returned no events without timeout");
1af2fcb3be8a nginx-0.3.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
296 return NGX_ERROR;
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
297 }
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
298
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
299 ngx_mutex_lock(ngx_posted_events_mutex);
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
300
17
8dd06e2844f5 nginx-0.0.1-2002-09-27-19:05:29 import
Igor Sysoev <igor@sysoev.ru>
parents: 13
diff changeset
301 nready = 0;
8dd06e2844f5 nginx-0.0.1-2002-09-27-19:05:29 import
Igor Sysoev <igor@sysoev.ru>
parents: 13
diff changeset
302
8dd06e2844f5 nginx-0.0.1-2002-09-27-19:05:29 import
Igor Sysoev <igor@sysoev.ru>
parents: 13
diff changeset
303 for (i = 0; i < nevents; i++) {
8dd06e2844f5 nginx-0.0.1-2002-09-27-19:05:29 import
Igor Sysoev <igor@sysoev.ru>
parents: 13
diff changeset
304 ev = event_index[i];
250
1903c6821958 nginx-0.0.2-2004-02-03-23:27:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 248
diff changeset
305 c = ev->data;
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
306 found = 0;
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
307
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
308 if (ev->write) {
8
708f8bb772ec nginx-0.0.1-2002-09-02-18:48:24 import
Igor Sysoev <igor@sysoev.ru>
parents: 7
diff changeset
309 if (FD_ISSET(c->fd, &work_write_fd_set)) {
39
83fa61cd3d2f nginx-0.0.1-2002-12-24-20:30:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 38
diff changeset
310 found = 1;
302
1526e7686b20 nginx-0.0.3-2004-04-01-10:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
311 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
245
e6c005b66b3a nginx-0.0.1-2004-01-30-00:45:01 import
Igor Sysoev <igor@sysoev.ru>
parents: 230
diff changeset
312 "select write %d", c->fd);
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
313 }
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
314
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
315 } else {
8
708f8bb772ec nginx-0.0.1-2002-09-02-18:48:24 import
Igor Sysoev <igor@sysoev.ru>
parents: 7
diff changeset
316 if (FD_ISSET(c->fd, &work_read_fd_set)) {
39
83fa61cd3d2f nginx-0.0.1-2002-12-24-20:30:59 import
Igor Sysoev <igor@sysoev.ru>
parents: 38
diff changeset
317 found = 1;
302
1526e7686b20 nginx-0.0.3-2004-04-01-10:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
318 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
245
e6c005b66b3a nginx-0.0.1-2004-01-30-00:45:01 import
Igor Sysoev <igor@sysoev.ru>
parents: 230
diff changeset
319 "select read %d", c->fd);
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
320 }
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
321 }
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
322
17
8dd06e2844f5 nginx-0.0.1-2002-09-27-19:05:29 import
Igor Sysoev <igor@sysoev.ru>
parents: 13
diff changeset
323 if (found) {
314
d71c87d11b16 nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 302
diff changeset
324 ev->ready = 1;
d71c87d11b16 nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 302
diff changeset
325
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
326 queue = (ngx_event_t **) (ev->accept ? &ngx_posted_accept_events:
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
327 &ngx_posted_events);
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 567
diff changeset
328 ngx_locked_post_event(ev, queue);
314
d71c87d11b16 nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 302
diff changeset
329
d71c87d11b16 nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 302
diff changeset
330 nready++;
17
8dd06e2844f5 nginx-0.0.1-2002-09-27-19:05:29 import
Igor Sysoev <igor@sysoev.ru>
parents: 13
diff changeset
331 }
8dd06e2844f5 nginx-0.0.1-2002-09-27-19:05:29 import
Igor Sysoev <igor@sysoev.ru>
parents: 13
diff changeset
332 }
13
2aba961a1d34 nginx-0.0.1-2002-09-16-19:01:44 import
Igor Sysoev <igor@sysoev.ru>
parents: 8
diff changeset
333
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
334 ngx_mutex_unlock(ngx_posted_events_mutex);
314
d71c87d11b16 nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 302
diff changeset
335
d71c87d11b16 nginx-0.0.3-2004-04-14-09:57:36 import
Igor Sysoev <igor@sysoev.ru>
parents: 302
diff changeset
336 if (ready != nready) {
2781
f545c81e5ddb try to repair the case "select ready != events"
Igor Sysoev <igor@sysoev.ru>
parents: 2780
diff changeset
337 ngx_log_error(NGX_LOG_ALERT, cycle->log, 0,
f545c81e5ddb try to repair the case "select ready != events"
Igor Sysoev <igor@sysoev.ru>
parents: 2780
diff changeset
338 "select ready != events: %d:%d", ready, nready);
f545c81e5ddb try to repair the case "select ready != events"
Igor Sysoev <igor@sysoev.ru>
parents: 2780
diff changeset
339
f545c81e5ddb try to repair the case "select ready != events"
Igor Sysoev <igor@sysoev.ru>
parents: 2780
diff changeset
340 ngx_select_repair_fd_sets(cycle);
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
341 }
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
342
8
708f8bb772ec nginx-0.0.1-2002-09-02-18:48:24 import
Igor Sysoev <igor@sysoev.ru>
parents: 7
diff changeset
343 return NGX_OK;
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
344 }
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
345
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
346
2780
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
347 static void
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
348 ngx_select_repair_fd_sets(ngx_cycle_t *cycle)
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
349 {
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
350 int n;
2813
c00763aa5e1b divide select module into two modules: Unix and Win32 ones
Igor Sysoev <igor@sysoev.ru>
parents: 2809
diff changeset
351 u_int i;
2780
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
352 socklen_t len;
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
353 ngx_err_t err;
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
354 ngx_socket_t s;
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
355
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
356 for (i = 0; i < master_read_fd_set.fd_count; i++) {
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
357
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
358 s = master_read_fd_set.fd_array[i];
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
359 len = sizeof(int);
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
360
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
361 if (getsockopt(s, SOL_SOCKET, SO_TYPE, (char *) &n, &len) == -1) {
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
362 err = ngx_socket_errno;
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
363
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
364 ngx_log_error(NGX_LOG_ALERT, cycle->log, err,
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
365 "invalid descriptor #%d in read fd_set", s);
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
366
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
367 FD_CLR(s, &master_read_fd_set);
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
368 }
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
369 }
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
370
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
371 for (i = 0; i < master_write_fd_set.fd_count; i++) {
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
372
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
373 s = master_write_fd_set.fd_array[i];
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
374 len = sizeof(int);
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
375
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
376 if (getsockopt(s, SOL_SOCKET, SO_TYPE, (char *) &n, &len) == -1) {
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
377 err = ngx_socket_errno;
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
378
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
379 ngx_log_error(NGX_LOG_ALERT, cycle->log, err,
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
380 "invalid descriptor #%d in write fd_set", s);
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
381
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
382 FD_CLR(s, &master_write_fd_set);
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
383 }
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
384 }
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
385 }
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
386
846d6ea7e406 ngx_select_repair_fd_sets()
Igor Sysoev <igor@sysoev.ru>
parents: 2779
diff changeset
387
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
388 static char *
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 487
diff changeset
389 ngx_select_init_conf(ngx_cycle_t *cycle, void *conf)
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
390 {
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
391 ngx_event_conf_t *ecf;
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
392
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 107
diff changeset
393 ecf = ngx_event_get_conf(cycle->conf_ctx, ngx_event_core_module);
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
394
321
32847588a82a nginx-0.0.3-2004-04-19-20:36:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
395 if (ecf->use != ngx_select_module.ctx_index) {
32847588a82a nginx-0.0.3-2004-04-19-20:36:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
396 return NGX_CONF_OK;
32847588a82a nginx-0.0.3-2004-04-19-20:36:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
397 }
32847588a82a nginx-0.0.3-2004-04-19-20:36:08 import
Igor Sysoev <igor@sysoev.ru>
parents: 318
diff changeset
398
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
399 return NGX_CONF_OK;
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
400 }