annotate src/event/ngx_event.c @ 8946:56dec0d4e5b1 quic

QUIC: avoid excessive buffer allocations in stream output. Previously, when a few bytes were send to a QUIC stream by the application, a 4K buffer was allocated for these bytes. Then a STREAM frame was created and that entire buffer was used as data for that frame. The frame with the buffer were in use up until the frame was acked by client. Meanwhile, when more bytes were send to the stream, more buffers were allocated and assigned as data to newer STREAM frames. In this scenario most buffer memory is unused. Now the unused part of the stream output buffer is available for further stream output while earlier parts of the buffer are waiting to be acked. This is achieved by splitting the output buffer.
author Roman Arutyunyan <arut@nginx.com>
date Fri, 24 Dec 2021 18:13:51 +0300
parents 9ae239d2547d
children c31d95fdaf65
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
441
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 435
diff changeset
1
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 435
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: 4309
diff changeset
4 * Copyright (C) Nginx, Inc.
441
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 435
diff changeset
5 */
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 435
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>
17
8dd06e2844f5 nginx-0.0.1-2002-09-27-19:05:29 import
Igor Sysoev <igor@sysoev.ru>
parents: 11
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>
92
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
11
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
12
113
d7f606e25b99 nginx-0.0.1-2003-07-04-19:10:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 112
diff changeset
13 #define DEFAULT_CONNECTIONS 512
92
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
14
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
15
467
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
16 extern ngx_module_t ngx_kqueue_module;
719
f30b1a75fd3b Solaris 10 event ports support
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
17 extern ngx_module_t ngx_eventport_module;
467
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
18 extern ngx_module_t ngx_devpoll_module;
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
19 extern ngx_module_t ngx_epoll_module;
97
70d2345a903f nginx-0.0.1-2003-05-29-17:02:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 96
diff changeset
20 extern ngx_module_t ngx_select_module;
92
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
21
63
36d2c25cc9bb nginx-0.0.1-2003-02-26-23:21:43 import
Igor Sysoev <igor@sysoev.ru>
parents: 60
diff changeset
22
4599
f947296f6b2b Fixed master exit if there is no events section (ticket #150).
Maxim Dounin <mdounin@mdounin.ru>
parents: 4593
diff changeset
23 static char *ngx_event_init_conf(ngx_cycle_t *cycle, void *conf);
303
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 301
diff changeset
24 static ngx_int_t ngx_event_module_init(ngx_cycle_t *cycle);
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 301
diff changeset
25 static ngx_int_t ngx_event_process_init(ngx_cycle_t *cycle);
96
a23d010f356d nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 93
diff changeset
26 static char *ngx_events_block(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
209
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
27
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
28 static char *ngx_event_connections(ngx_conf_t *cf, ngx_command_t *cmd,
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
29 void *conf);
96
a23d010f356d nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 93
diff changeset
30 static char *ngx_event_use(ngx_conf_t *cf, ngx_command_t *cmd, void *conf);
307
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
31 static char *ngx_event_debug_connection(ngx_conf_t *cf, ngx_command_t *cmd,
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
32 void *conf);
209
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
33
4599
f947296f6b2b Fixed master exit if there is no events section (ticket #150).
Maxim Dounin <mdounin@mdounin.ru>
parents: 4593
diff changeset
34 static void *ngx_event_core_create_conf(ngx_cycle_t *cycle);
f947296f6b2b Fixed master exit if there is no events section (ticket #150).
Maxim Dounin <mdounin@mdounin.ru>
parents: 4593
diff changeset
35 static char *ngx_event_core_init_conf(ngx_cycle_t *cycle, void *conf);
90
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
36
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
37
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
38 static ngx_uint_t ngx_timer_resolution;
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
39 sig_atomic_t ngx_event_timer_alarm;
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
40
495
fc9909c369b2 nginx-0.1.22-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 493
diff changeset
41 static ngx_uint_t ngx_event_max_module;
303
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 301
diff changeset
42
495
fc9909c369b2 nginx-0.1.22-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 493
diff changeset
43 ngx_uint_t ngx_event_flags;
fc9909c369b2 nginx-0.1.22-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 493
diff changeset
44 ngx_event_actions_t ngx_event_actions;
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
45
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
46
3035
f9d97311c652 *) share temporary number between workers
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
47 static ngx_atomic_t connection_counter = 1;
493
975f62e77f02 nginx-0.1.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
48 ngx_atomic_t *ngx_connection_counter = &connection_counter;
309
2e899477243a nginx-0.0.3-2004-04-09-20:03:04 import
Igor Sysoev <igor@sysoev.ru>
parents: 307
diff changeset
49
2e899477243a nginx-0.0.3-2004-04-09-20:03:04 import
Igor Sysoev <igor@sysoev.ru>
parents: 307
diff changeset
50
493
975f62e77f02 nginx-0.1.21-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 483
diff changeset
51 ngx_atomic_t *ngx_accept_mutex_ptr;
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
52 ngx_shmtx_t ngx_accept_mutex;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
53 ngx_uint_t ngx_use_accept_mutex;
719
f30b1a75fd3b Solaris 10 event ports support
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
54 ngx_uint_t ngx_accept_events;
495
fc9909c369b2 nginx-0.1.22-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 493
diff changeset
55 ngx_uint_t ngx_accept_mutex_held;
fc9909c369b2 nginx-0.1.22-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 493
diff changeset
56 ngx_msec_t ngx_accept_mutex_delay;
fc9909c369b2 nginx-0.1.22-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 493
diff changeset
57 ngx_int_t ngx_accept_disabled;
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
58
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
59
426
3f88935a02e8 nginx-0.0.10-2004-09-14-23:39:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 380
diff changeset
60 #if (NGX_STAT_STUB)
3f88935a02e8 nginx-0.0.10-2004-09-14-23:39:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 380
diff changeset
61
6922
a72886067bbb Added missing static specifiers.
Eran Kornblau <erankor@gmail.com>
parents: 6635
diff changeset
62 static ngx_atomic_t ngx_stat_accepted0;
a72886067bbb Added missing static specifiers.
Eran Kornblau <erankor@gmail.com>
parents: 6635
diff changeset
63 ngx_atomic_t *ngx_stat_accepted = &ngx_stat_accepted0;
a72886067bbb Added missing static specifiers.
Eran Kornblau <erankor@gmail.com>
parents: 6635
diff changeset
64 static ngx_atomic_t ngx_stat_handled0;
a72886067bbb Added missing static specifiers.
Eran Kornblau <erankor@gmail.com>
parents: 6635
diff changeset
65 ngx_atomic_t *ngx_stat_handled = &ngx_stat_handled0;
a72886067bbb Added missing static specifiers.
Eran Kornblau <erankor@gmail.com>
parents: 6635
diff changeset
66 static ngx_atomic_t ngx_stat_requests0;
a72886067bbb Added missing static specifiers.
Eran Kornblau <erankor@gmail.com>
parents: 6635
diff changeset
67 ngx_atomic_t *ngx_stat_requests = &ngx_stat_requests0;
a72886067bbb Added missing static specifiers.
Eran Kornblau <erankor@gmail.com>
parents: 6635
diff changeset
68 static ngx_atomic_t ngx_stat_active0;
a72886067bbb Added missing static specifiers.
Eran Kornblau <erankor@gmail.com>
parents: 6635
diff changeset
69 ngx_atomic_t *ngx_stat_active = &ngx_stat_active0;
a72886067bbb Added missing static specifiers.
Eran Kornblau <erankor@gmail.com>
parents: 6635
diff changeset
70 static ngx_atomic_t ngx_stat_reading0;
a72886067bbb Added missing static specifiers.
Eran Kornblau <erankor@gmail.com>
parents: 6635
diff changeset
71 ngx_atomic_t *ngx_stat_reading = &ngx_stat_reading0;
a72886067bbb Added missing static specifiers.
Eran Kornblau <erankor@gmail.com>
parents: 6635
diff changeset
72 static ngx_atomic_t ngx_stat_writing0;
a72886067bbb Added missing static specifiers.
Eran Kornblau <erankor@gmail.com>
parents: 6635
diff changeset
73 ngx_atomic_t *ngx_stat_writing = &ngx_stat_writing0;
a72886067bbb Added missing static specifiers.
Eran Kornblau <erankor@gmail.com>
parents: 6635
diff changeset
74 static ngx_atomic_t ngx_stat_waiting0;
a72886067bbb Added missing static specifiers.
Eran Kornblau <erankor@gmail.com>
parents: 6635
diff changeset
75 ngx_atomic_t *ngx_stat_waiting = &ngx_stat_waiting0;
426
3f88935a02e8 nginx-0.0.10-2004-09-14-23:39:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 380
diff changeset
76
3f88935a02e8 nginx-0.0.10-2004-09-14-23:39:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 380
diff changeset
77 #endif
3f88935a02e8 nginx-0.0.10-2004-09-14-23:39:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 380
diff changeset
78
3f88935a02e8 nginx-0.0.10-2004-09-14-23:39:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 380
diff changeset
79
90
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
80
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
81 static ngx_command_t ngx_events_commands[] = {
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
82
209
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
83 { ngx_string("events"),
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
84 NGX_MAIN_CONF|NGX_CONF_BLOCK|NGX_CONF_NOARGS,
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
85 ngx_events_block,
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
86 0,
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
87 0,
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
88 NULL },
90
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
89
209
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
90 ngx_null_command
90
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
91 };
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
92
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
93
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 309
diff changeset
94 static ngx_core_module_t ngx_events_module_ctx = {
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 309
diff changeset
95 ngx_string("events"),
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 309
diff changeset
96 NULL,
4599
f947296f6b2b Fixed master exit if there is no events section (ticket #150).
Maxim Dounin <mdounin@mdounin.ru>
parents: 4593
diff changeset
97 ngx_event_init_conf
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
98 };
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 309
diff changeset
99
90
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
100
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
101 ngx_module_t ngx_events_module = {
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
102 NGX_MODULE_V1,
311
11ff50a35d6d nginx-0.0.3-2004-04-12-20:38:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 309
diff changeset
103 &ngx_events_module_ctx, /* module context */
90
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
104 ngx_events_commands, /* module directives */
96
a23d010f356d nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 93
diff changeset
105 NGX_CORE_MODULE, /* module type */
541
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
106 NULL, /* init master */
113
d7f606e25b99 nginx-0.0.1-2003-07-04-19:10:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 112
diff changeset
107 NULL, /* init module */
541
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
108 NULL, /* init process */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
109 NULL, /* init thread */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
110 NULL, /* exit thread */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
111 NULL, /* exit process */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
112 NULL, /* exit master */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
113 NGX_MODULE_V1_PADDING
90
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
114 };
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
115
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
116
107
b5be4b0448d3 nginx-0.0.1-2003-07-01-19:00:03 import
Igor Sysoev <igor@sysoev.ru>
parents: 105
diff changeset
117 static ngx_str_t event_core_name = ngx_string("event_core");
90
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
118
435
5cdc4838d4e8 nginx-0.0.11-2004-09-22-20:18:21 import
Igor Sysoev <igor@sysoev.ru>
parents: 426
diff changeset
119
107
b5be4b0448d3 nginx-0.0.1-2003-07-01-19:00:03 import
Igor Sysoev <igor@sysoev.ru>
parents: 105
diff changeset
120 static ngx_command_t ngx_event_core_commands[] = {
90
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
121
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
122 { ngx_string("worker_connections"),
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
123 NGX_EVENT_CONF|NGX_CONF_TAKE1,
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
124 ngx_event_connections,
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
125 0,
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
126 0,
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
127 NULL },
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
128
209
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
129 { ngx_string("use"),
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
130 NGX_EVENT_CONF|NGX_CONF_TAKE1,
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
131 ngx_event_use,
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
132 0,
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
133 0,
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
134 NULL },
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
135
248
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
136 { ngx_string("multi_accept"),
667
63a820b0bc6c nginx-0.3.55-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 665
diff changeset
137 NGX_EVENT_CONF|NGX_CONF_FLAG,
248
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
138 ngx_conf_set_flag_slot,
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
139 0,
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
140 offsetof(ngx_event_conf_t, multi_accept),
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
141 NULL },
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
142
303
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 301
diff changeset
143 { ngx_string("accept_mutex"),
667
63a820b0bc6c nginx-0.3.55-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 665
diff changeset
144 NGX_EVENT_CONF|NGX_CONF_FLAG,
303
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 301
diff changeset
145 ngx_conf_set_flag_slot,
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 301
diff changeset
146 0,
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 301
diff changeset
147 offsetof(ngx_event_conf_t, accept_mutex),
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
148 NULL },
303
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 301
diff changeset
149
306
6b91bfbc4123 nginx-0.0.3-2004-04-05-00:32:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 305
diff changeset
150 { ngx_string("accept_mutex_delay"),
6b91bfbc4123 nginx-0.0.3-2004-04-05-00:32:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 305
diff changeset
151 NGX_EVENT_CONF|NGX_CONF_TAKE1,
6b91bfbc4123 nginx-0.0.3-2004-04-05-00:32:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 305
diff changeset
152 ngx_conf_set_msec_slot,
6b91bfbc4123 nginx-0.0.3-2004-04-05-00:32:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 305
diff changeset
153 0,
6b91bfbc4123 nginx-0.0.3-2004-04-05-00:32:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 305
diff changeset
154 offsetof(ngx_event_conf_t, accept_mutex_delay),
6b91bfbc4123 nginx-0.0.3-2004-04-05-00:32:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 305
diff changeset
155 NULL },
6b91bfbc4123 nginx-0.0.3-2004-04-05-00:32:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 305
diff changeset
156
307
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
157 { ngx_string("debug_connection"),
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
158 NGX_EVENT_CONF|NGX_CONF_TAKE1,
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
159 ngx_event_debug_connection,
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
160 0,
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
161 0,
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
162 NULL },
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
163
209
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
164 ngx_null_command
90
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
165 };
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
166
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
167
6922
a72886067bbb Added missing static specifiers.
Eran Kornblau <erankor@gmail.com>
parents: 6635
diff changeset
168 static ngx_event_module_t ngx_event_core_module_ctx = {
107
b5be4b0448d3 nginx-0.0.1-2003-07-01-19:00:03 import
Igor Sysoev <igor@sysoev.ru>
parents: 105
diff changeset
169 &event_core_name,
4599
f947296f6b2b Fixed master exit if there is no events section (ticket #150).
Maxim Dounin <mdounin@mdounin.ru>
parents: 4593
diff changeset
170 ngx_event_core_create_conf, /* create configuration */
f947296f6b2b Fixed master exit if there is no events section (ticket #150).
Maxim Dounin <mdounin@mdounin.ru>
parents: 4593
diff changeset
171 ngx_event_core_init_conf, /* init configuration */
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
172
6030
4652f8f26b12 Removed unix ngx_threaded and related ngx_process_changes.
Ruslan Ermilov <ru@nginx.com>
parents: 6018
diff changeset
173 { NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL }
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
174 };
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
175
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
176
107
b5be4b0448d3 nginx-0.0.1-2003-07-01-19:00:03 import
Igor Sysoev <igor@sysoev.ru>
parents: 105
diff changeset
177 ngx_module_t ngx_event_core_module = {
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
178 NGX_MODULE_V1,
107
b5be4b0448d3 nginx-0.0.1-2003-07-01-19:00:03 import
Igor Sysoev <igor@sysoev.ru>
parents: 105
diff changeset
179 &ngx_event_core_module_ctx, /* module context */
b5be4b0448d3 nginx-0.0.1-2003-07-01-19:00:03 import
Igor Sysoev <igor@sysoev.ru>
parents: 105
diff changeset
180 ngx_event_core_commands, /* module directives */
96
a23d010f356d nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 93
diff changeset
181 NGX_EVENT_MODULE, /* module type */
541
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
182 NULL, /* init master */
303
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 301
diff changeset
183 ngx_event_module_init, /* init module */
541
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
184 ngx_event_process_init, /* init process */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
185 NULL, /* init thread */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
186 NULL, /* exit thread */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
187 NULL, /* exit process */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
188 NULL, /* exit master */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 509
diff changeset
189 NGX_MODULE_V1_PADDING
90
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
190 };
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
191
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
192
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
193 void
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
194 ngx_process_events_and_timers(ngx_cycle_t *cycle)
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
195 {
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
196 ngx_uint_t flags;
567
1af2fcb3be8a nginx-0.3.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
197 ngx_msec_t timer, delta;
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
198
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
199 if (ngx_timer_resolution) {
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
200 timer = NGX_TIMER_INFINITE;
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
201 flags = 0;
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
202
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
203 } else {
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
204 timer = ngx_event_find_timer();
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
205 flags = NGX_UPDATE_TIME;
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
206
6113
36d99c042652 Replaced the remaining NGX_OLD_THREADS check with NGX_WIN32.
Ruslan Ermilov <ru@nginx.com>
parents: 6031
diff changeset
207 #if (NGX_WIN32)
36d99c042652 Replaced the remaining NGX_OLD_THREADS check with NGX_WIN32.
Ruslan Ermilov <ru@nginx.com>
parents: 6031
diff changeset
208
36d99c042652 Replaced the remaining NGX_OLD_THREADS check with NGX_WIN32.
Ruslan Ermilov <ru@nginx.com>
parents: 6031
diff changeset
209 /* handle signals from master in case of network inactivity */
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
210
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
211 if (timer == NGX_TIMER_INFINITE || timer > 500) {
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
212 timer = 500;
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
213 }
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
214
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
215 #endif
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
216 }
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
217
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
218 if (ngx_use_accept_mutex) {
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
219 if (ngx_accept_disabled > 0) {
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
220 ngx_accept_disabled--;
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
221
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
222 } else {
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
223 if (ngx_trylock_accept_mutex(cycle) == NGX_ERROR) {
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
224 return;
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
225 }
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
226
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
227 if (ngx_accept_mutex_held) {
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
228 flags |= NGX_POST_EVENTS;
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
229
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
230 } else {
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
231 if (timer == NGX_TIMER_INFINITE
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
232 || timer > ngx_accept_mutex_delay)
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
233 {
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
234 timer = ngx_accept_mutex_delay;
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
235 }
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
236 }
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
237 }
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
238 }
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
239
7584
9d2ad2fb4423 SSL: available bytes handling (ticket #1431).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7316
diff changeset
240 if (!ngx_queue_empty(&ngx_posted_next_events)) {
7617
f1720934c45b SSL: reworked posted next events again.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7612
diff changeset
241 ngx_event_move_posted_next(cycle);
7584
9d2ad2fb4423 SSL: available bytes handling (ticket #1431).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7316
diff changeset
242 timer = 0;
9d2ad2fb4423 SSL: available bytes handling (ticket #1431).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7316
diff changeset
243 }
9d2ad2fb4423 SSL: available bytes handling (ticket #1431).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7316
diff changeset
244
567
1af2fcb3be8a nginx-0.3.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
245 delta = ngx_current_msec;
1af2fcb3be8a nginx-0.3.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
246
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
247 (void) ngx_process_events(cycle, timer, flags);
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
248
567
1af2fcb3be8a nginx-0.3.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
249 delta = ngx_current_msec - delta;
1af2fcb3be8a nginx-0.3.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
250
1af2fcb3be8a nginx-0.3.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
251 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
1af2fcb3be8a nginx-0.3.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
252 "timer delta: %M", delta);
1af2fcb3be8a nginx-0.3.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
253
5821
3f5f0ab59b35 Events: processing of posted events changed from LIFO to FIFO.
Valentin Bartenev <vbart@nginx.com>
parents: 5820
diff changeset
254 ngx_event_process_posted(cycle, &ngx_posted_accept_events);
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
255
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
256 if (ngx_accept_mutex_held) {
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
257 ngx_shmtx_unlock(&ngx_accept_mutex);
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
258 }
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
259
7806
2ed5d03c2d90 Events: fixed expiration of timers in the past.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7788
diff changeset
260 ngx_event_expire_timers();
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 567
diff changeset
261
5821
3f5f0ab59b35 Events: processing of posted events changed from LIFO to FIFO.
Valentin Bartenev <vbart@nginx.com>
parents: 5820
diff changeset
262 ngx_event_process_posted(cycle, &ngx_posted_events);
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
263 }
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
264
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
265
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
266 ngx_int_t
1354
f69d1aab6a0f make 64-bit ngx_int_t on 64-bit platforms
Igor Sysoev <igor@sysoev.ru>
parents: 1092
diff changeset
267 ngx_handle_read_event(ngx_event_t *rev, ngx_uint_t flags)
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
268 {
8481
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents: 8215
diff changeset
269 #if (NGX_QUIC)
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents: 8215
diff changeset
270
8215
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents: 7617
diff changeset
271 ngx_connection_t *c;
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents: 7617
diff changeset
272
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents: 7617
diff changeset
273 c = rev->data;
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents: 7617
diff changeset
274
8630
279ad36f2f4b QUIC: renamed c->qs to c->quic.
Roman Arutyunyan <arut@nginx.com>
parents: 8481
diff changeset
275 if (c->quic) {
8855
9ae239d2547d QUIC: separate event handling functions.
Roman Arutyunyan <arut@nginx.com>
parents: 8813
diff changeset
276 return ngx_quic_handle_read_event(rev, flags);
8215
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents: 7617
diff changeset
277 }
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents: 7617
diff changeset
278
8481
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents: 8215
diff changeset
279 #endif
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents: 8215
diff changeset
280
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
281 if (ngx_event_flags & NGX_USE_CLEAR_EVENT) {
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
282
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
283 /* kqueue, epoll */
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
284
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
285 if (!rev->active && !rev->ready) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
286 if (ngx_add_event(rev, NGX_READ_EVENT, NGX_CLEAR_EVENT)
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
287 == NGX_ERROR)
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
288 {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
289 return NGX_ERROR;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
290 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
291 }
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
292
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
293 return NGX_OK;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
294
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
295 } else if (ngx_event_flags & NGX_USE_LEVEL_EVENT) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
296
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
297 /* select, poll, /dev/poll */
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
298
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
299 if (!rev->active && !rev->ready) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
300 if (ngx_add_event(rev, NGX_READ_EVENT, NGX_LEVEL_EVENT)
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
301 == NGX_ERROR)
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
302 {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
303 return NGX_ERROR;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
304 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
305
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
306 return NGX_OK;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
307 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
308
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
309 if (rev->active && (rev->ready || (flags & NGX_CLOSE_EVENT))) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
310 if (ngx_del_event(rev, NGX_READ_EVENT, NGX_LEVEL_EVENT | flags)
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
311 == NGX_ERROR)
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
312 {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
313 return NGX_ERROR;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
314 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
315
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
316 return NGX_OK;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
317 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
318
719
f30b1a75fd3b Solaris 10 event ports support
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
319 } else if (ngx_event_flags & NGX_USE_EVENTPORT_EVENT) {
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
320
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
321 /* event ports */
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
322
719
f30b1a75fd3b Solaris 10 event ports support
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
323 if (!rev->active && !rev->ready) {
f30b1a75fd3b Solaris 10 event ports support
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
324 if (ngx_add_event(rev, NGX_READ_EVENT, 0) == NGX_ERROR) {
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
325 return NGX_ERROR;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
326 }
719
f30b1a75fd3b Solaris 10 event ports support
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
327
f30b1a75fd3b Solaris 10 event ports support
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
328 return NGX_OK;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
329 }
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
330
7788
9ca8fb98ef1c Events: fixed eventport handling in ngx_handle_read_event().
Maxim Dounin <mdounin@mdounin.ru>
parents: 7617
diff changeset
331 if (rev->oneshot && rev->ready) {
719
f30b1a75fd3b Solaris 10 event ports support
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
332 if (ngx_del_event(rev, NGX_READ_EVENT, 0) == NGX_ERROR) {
f30b1a75fd3b Solaris 10 event ports support
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
333 return NGX_ERROR;
f30b1a75fd3b Solaris 10 event ports support
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
334 }
f30b1a75fd3b Solaris 10 event ports support
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
335
f30b1a75fd3b Solaris 10 event ports support
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
336 return NGX_OK;
f30b1a75fd3b Solaris 10 event ports support
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
337 }
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
338 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
339
6126
adba26ff70b5 Removed the obsolete rtsig module.
Ruslan Ermilov <ru@nginx.com>
parents: 6125
diff changeset
340 /* iocp */
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
341
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
342 return NGX_OK;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
343 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
344
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
345
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
346 ngx_int_t
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
347 ngx_handle_write_event(ngx_event_t *wev, size_t lowat)
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
348 {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
349 ngx_connection_t *c;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
350
8215
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents: 7617
diff changeset
351 c = wev->data;
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents: 7617
diff changeset
352
8855
9ae239d2547d QUIC: separate event handling functions.
Roman Arutyunyan <arut@nginx.com>
parents: 8813
diff changeset
353 #if (NGX_QUIC)
9ae239d2547d QUIC: separate event handling functions.
Roman Arutyunyan <arut@nginx.com>
parents: 8813
diff changeset
354 if (c->quic) {
9ae239d2547d QUIC: separate event handling functions.
Roman Arutyunyan <arut@nginx.com>
parents: 8813
diff changeset
355 return ngx_quic_handle_write_event(wev, lowat);
9ae239d2547d QUIC: separate event handling functions.
Roman Arutyunyan <arut@nginx.com>
parents: 8813
diff changeset
356 }
9ae239d2547d QUIC: separate event handling functions.
Roman Arutyunyan <arut@nginx.com>
parents: 8813
diff changeset
357 #endif
9ae239d2547d QUIC: separate event handling functions.
Roman Arutyunyan <arut@nginx.com>
parents: 8813
diff changeset
358
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
359 if (lowat) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
360 if (ngx_send_lowat(c, lowat) == NGX_ERROR) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
361 return NGX_ERROR;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
362 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
363 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
364
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
365 if (ngx_event_flags & NGX_USE_CLEAR_EVENT) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
366
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
367 /* kqueue, epoll */
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
368
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
369 if (!wev->active && !wev->ready) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
370 if (ngx_add_event(wev, NGX_WRITE_EVENT,
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
371 NGX_CLEAR_EVENT | (lowat ? NGX_LOWAT_EVENT : 0))
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
372 == NGX_ERROR)
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
373 {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
374 return NGX_ERROR;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
375 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
376 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
377
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
378 return NGX_OK;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
379
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
380 } else if (ngx_event_flags & NGX_USE_LEVEL_EVENT) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
381
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
382 /* select, poll, /dev/poll */
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
383
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
384 if (!wev->active && !wev->ready) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
385 if (ngx_add_event(wev, NGX_WRITE_EVENT, NGX_LEVEL_EVENT)
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
386 == NGX_ERROR)
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
387 {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
388 return NGX_ERROR;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
389 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
390
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
391 return NGX_OK;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
392 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
393
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
394 if (wev->active && wev->ready) {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
395 if (ngx_del_event(wev, NGX_WRITE_EVENT, NGX_LEVEL_EVENT)
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
396 == NGX_ERROR)
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
397 {
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
398 return NGX_ERROR;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
399 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
400
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
401 return NGX_OK;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
402 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
403
719
f30b1a75fd3b Solaris 10 event ports support
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
404 } else if (ngx_event_flags & NGX_USE_EVENTPORT_EVENT) {
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
405
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
406 /* event ports */
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
407
719
f30b1a75fd3b Solaris 10 event ports support
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
408 if (!wev->active && !wev->ready) {
f30b1a75fd3b Solaris 10 event ports support
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
409 if (ngx_add_event(wev, NGX_WRITE_EVENT, 0) == NGX_ERROR) {
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
410 return NGX_ERROR;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
411 }
719
f30b1a75fd3b Solaris 10 event ports support
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
412
f30b1a75fd3b Solaris 10 event ports support
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
413 return NGX_OK;
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
414 }
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
415
719
f30b1a75fd3b Solaris 10 event ports support
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
416 if (wev->oneshot && wev->ready) {
f30b1a75fd3b Solaris 10 event ports support
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
417 if (ngx_del_event(wev, NGX_WRITE_EVENT, 0) == NGX_ERROR) {
f30b1a75fd3b Solaris 10 event ports support
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
418 return NGX_ERROR;
f30b1a75fd3b Solaris 10 event ports support
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
419 }
f30b1a75fd3b Solaris 10 event ports support
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
420
f30b1a75fd3b Solaris 10 event ports support
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
421 return NGX_OK;
f30b1a75fd3b Solaris 10 event ports support
Igor Sysoev <igor@sysoev.ru>
parents: 667
diff changeset
422 }
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
423 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
424
6126
adba26ff70b5 Removed the obsolete rtsig module.
Ruslan Ermilov <ru@nginx.com>
parents: 6125
diff changeset
425 /* iocp */
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
426
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
427 return NGX_OK;
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
428 }
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
429
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
430
4599
f947296f6b2b Fixed master exit if there is no events section (ticket #150).
Maxim Dounin <mdounin@mdounin.ru>
parents: 4593
diff changeset
431 static char *
f947296f6b2b Fixed master exit if there is no events section (ticket #150).
Maxim Dounin <mdounin@mdounin.ru>
parents: 4593
diff changeset
432 ngx_event_init_conf(ngx_cycle_t *cycle, void *conf)
f947296f6b2b Fixed master exit if there is no events section (ticket #150).
Maxim Dounin <mdounin@mdounin.ru>
parents: 4593
diff changeset
433 {
7315
e7b2b907c0f8 Events: moved sockets cloning to ngx_event_init_conf().
Maxim Dounin <mdounin@mdounin.ru>
parents: 6947
diff changeset
434 #if (NGX_HAVE_REUSEPORT)
e7b2b907c0f8 Events: moved sockets cloning to ngx_event_init_conf().
Maxim Dounin <mdounin@mdounin.ru>
parents: 6947
diff changeset
435 ngx_uint_t i;
e7b2b907c0f8 Events: moved sockets cloning to ngx_event_init_conf().
Maxim Dounin <mdounin@mdounin.ru>
parents: 6947
diff changeset
436 ngx_listening_t *ls;
e7b2b907c0f8 Events: moved sockets cloning to ngx_event_init_conf().
Maxim Dounin <mdounin@mdounin.ru>
parents: 6947
diff changeset
437 #endif
e7b2b907c0f8 Events: moved sockets cloning to ngx_event_init_conf().
Maxim Dounin <mdounin@mdounin.ru>
parents: 6947
diff changeset
438
4599
f947296f6b2b Fixed master exit if there is no events section (ticket #150).
Maxim Dounin <mdounin@mdounin.ru>
parents: 4593
diff changeset
439 if (ngx_get_conf(cycle->conf_ctx, ngx_events_module) == NULL) {
f947296f6b2b Fixed master exit if there is no events section (ticket #150).
Maxim Dounin <mdounin@mdounin.ru>
parents: 4593
diff changeset
440 ngx_log_error(NGX_LOG_EMERG, cycle->log, 0,
f947296f6b2b Fixed master exit if there is no events section (ticket #150).
Maxim Dounin <mdounin@mdounin.ru>
parents: 4593
diff changeset
441 "no \"events\" section in configuration");
f947296f6b2b Fixed master exit if there is no events section (ticket #150).
Maxim Dounin <mdounin@mdounin.ru>
parents: 4593
diff changeset
442 return NGX_CONF_ERROR;
f947296f6b2b Fixed master exit if there is no events section (ticket #150).
Maxim Dounin <mdounin@mdounin.ru>
parents: 4593
diff changeset
443 }
f947296f6b2b Fixed master exit if there is no events section (ticket #150).
Maxim Dounin <mdounin@mdounin.ru>
parents: 4593
diff changeset
444
7316
8f152ca81f5f Events: added configuration check on the number of connections.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7315
diff changeset
445 if (cycle->connection_n < cycle->listening.nelts + 1) {
8f152ca81f5f Events: added configuration check on the number of connections.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7315
diff changeset
446
8f152ca81f5f Events: added configuration check on the number of connections.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7315
diff changeset
447 /*
8f152ca81f5f Events: added configuration check on the number of connections.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7315
diff changeset
448 * there should be at least one connection for each listening
8f152ca81f5f Events: added configuration check on the number of connections.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7315
diff changeset
449 * socket, plus an additional connection for channel
8f152ca81f5f Events: added configuration check on the number of connections.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7315
diff changeset
450 */
8f152ca81f5f Events: added configuration check on the number of connections.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7315
diff changeset
451
8f152ca81f5f Events: added configuration check on the number of connections.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7315
diff changeset
452 ngx_log_error(NGX_LOG_EMERG, cycle->log, 0,
8f152ca81f5f Events: added configuration check on the number of connections.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7315
diff changeset
453 "%ui worker_connections are not enough "
8f152ca81f5f Events: added configuration check on the number of connections.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7315
diff changeset
454 "for %ui listening sockets",
8f152ca81f5f Events: added configuration check on the number of connections.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7315
diff changeset
455 cycle->connection_n, cycle->listening.nelts);
8f152ca81f5f Events: added configuration check on the number of connections.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7315
diff changeset
456
8f152ca81f5f Events: added configuration check on the number of connections.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7315
diff changeset
457 return NGX_CONF_ERROR;
8f152ca81f5f Events: added configuration check on the number of connections.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7315
diff changeset
458 }
8f152ca81f5f Events: added configuration check on the number of connections.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7315
diff changeset
459
7315
e7b2b907c0f8 Events: moved sockets cloning to ngx_event_init_conf().
Maxim Dounin <mdounin@mdounin.ru>
parents: 6947
diff changeset
460 #if (NGX_HAVE_REUSEPORT)
e7b2b907c0f8 Events: moved sockets cloning to ngx_event_init_conf().
Maxim Dounin <mdounin@mdounin.ru>
parents: 6947
diff changeset
461
7867
c860f0b7010c Core: disabled cloning sockets when testing config (ticket #2188).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7806
diff changeset
462 if (!ngx_test_config) {
7315
e7b2b907c0f8 Events: moved sockets cloning to ngx_event_init_conf().
Maxim Dounin <mdounin@mdounin.ru>
parents: 6947
diff changeset
463
e7b2b907c0f8 Events: moved sockets cloning to ngx_event_init_conf().
Maxim Dounin <mdounin@mdounin.ru>
parents: 6947
diff changeset
464 ls = cycle->listening.elts;
7867
c860f0b7010c Core: disabled cloning sockets when testing config (ticket #2188).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7806
diff changeset
465 for (i = 0; i < cycle->listening.nelts; i++) {
c860f0b7010c Core: disabled cloning sockets when testing config (ticket #2188).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7806
diff changeset
466
c860f0b7010c Core: disabled cloning sockets when testing config (ticket #2188).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7806
diff changeset
467 if (!ls[i].reuseport || ls[i].worker != 0) {
c860f0b7010c Core: disabled cloning sockets when testing config (ticket #2188).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7806
diff changeset
468 continue;
c860f0b7010c Core: disabled cloning sockets when testing config (ticket #2188).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7806
diff changeset
469 }
c860f0b7010c Core: disabled cloning sockets when testing config (ticket #2188).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7806
diff changeset
470
c860f0b7010c Core: disabled cloning sockets when testing config (ticket #2188).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7806
diff changeset
471 if (ngx_clone_listening(cycle, &ls[i]) != NGX_OK) {
c860f0b7010c Core: disabled cloning sockets when testing config (ticket #2188).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7806
diff changeset
472 return NGX_CONF_ERROR;
c860f0b7010c Core: disabled cloning sockets when testing config (ticket #2188).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7806
diff changeset
473 }
c860f0b7010c Core: disabled cloning sockets when testing config (ticket #2188).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7806
diff changeset
474
c860f0b7010c Core: disabled cloning sockets when testing config (ticket #2188).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7806
diff changeset
475 /* cloning may change cycle->listening.elts */
c860f0b7010c Core: disabled cloning sockets when testing config (ticket #2188).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7806
diff changeset
476
c860f0b7010c Core: disabled cloning sockets when testing config (ticket #2188).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7806
diff changeset
477 ls = cycle->listening.elts;
c860f0b7010c Core: disabled cloning sockets when testing config (ticket #2188).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7806
diff changeset
478 }
7315
e7b2b907c0f8 Events: moved sockets cloning to ngx_event_init_conf().
Maxim Dounin <mdounin@mdounin.ru>
parents: 6947
diff changeset
479 }
e7b2b907c0f8 Events: moved sockets cloning to ngx_event_init_conf().
Maxim Dounin <mdounin@mdounin.ru>
parents: 6947
diff changeset
480
e7b2b907c0f8 Events: moved sockets cloning to ngx_event_init_conf().
Maxim Dounin <mdounin@mdounin.ru>
parents: 6947
diff changeset
481 #endif
e7b2b907c0f8 Events: moved sockets cloning to ngx_event_init_conf().
Maxim Dounin <mdounin@mdounin.ru>
parents: 6947
diff changeset
482
4599
f947296f6b2b Fixed master exit if there is no events section (ticket #150).
Maxim Dounin <mdounin@mdounin.ru>
parents: 4593
diff changeset
483 return NGX_CONF_OK;
f947296f6b2b Fixed master exit if there is no events section (ticket #150).
Maxim Dounin <mdounin@mdounin.ru>
parents: 4593
diff changeset
484 }
f947296f6b2b Fixed master exit if there is no events section (ticket #150).
Maxim Dounin <mdounin@mdounin.ru>
parents: 4593
diff changeset
485
f947296f6b2b Fixed master exit if there is no events section (ticket #150).
Maxim Dounin <mdounin@mdounin.ru>
parents: 4593
diff changeset
486
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
487 static ngx_int_t
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
488 ngx_event_module_init(ngx_cycle_t *cycle)
303
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 301
diff changeset
489 {
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
490 void ***cf;
605
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 581
diff changeset
491 u_char *shared;
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
492 size_t size, cl;
1704
e584e946e198 move condition declarations inside blocks where they are used
Igor Sysoev <igor@sysoev.ru>
parents: 1380
diff changeset
493 ngx_shm_t shm;
3035
f9d97311c652 *) share temporary number between workers
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
494 ngx_time_t *tp;
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
495 ngx_core_conf_t *ccf;
1704
e584e946e198 move condition declarations inside blocks where they are used
Igor Sysoev <igor@sysoev.ru>
parents: 1380
diff changeset
496 ngx_event_conf_t *ecf;
473
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
497
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
498 cf = ngx_get_conf(cycle->conf_ctx, ngx_events_module);
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
499 ecf = (*cf)[ngx_event_core_module.ctx_index];
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
500
2725
d43d73277c5c Win32 master/workers model
Igor Sysoev <igor@sysoev.ru>
parents: 2720
diff changeset
501 if (!ngx_test_config && ngx_process <= NGX_PROCESS_MASTER) {
641
5e8fb59c18c1 nginx-0.3.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 611
diff changeset
502 ngx_log_error(NGX_LOG_NOTICE, cycle->log, 0,
5e8fb59c18c1 nginx-0.3.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 611
diff changeset
503 "using the \"%s\" event method", ecf->name);
5e8fb59c18c1 nginx-0.3.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 611
diff changeset
504 }
473
8e8f3af115b5 nginx-0.1.11-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 469
diff changeset
505
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
506 ccf = (ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx, ngx_core_module);
303
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 301
diff changeset
507
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
508 ngx_timer_resolution = ccf->timer_resolution;
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
509
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
510 #if !(NGX_WIN32)
1704
e584e946e198 move condition declarations inside blocks where they are used
Igor Sysoev <igor@sysoev.ru>
parents: 1380
diff changeset
511 {
e584e946e198 move condition declarations inside blocks where they are used
Igor Sysoev <igor@sysoev.ru>
parents: 1380
diff changeset
512 ngx_int_t limit;
e584e946e198 move condition declarations inside blocks where they are used
Igor Sysoev <igor@sysoev.ru>
parents: 1380
diff changeset
513 struct rlimit rlmt;
303
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 301
diff changeset
514
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
515 if (getrlimit(RLIMIT_NOFILE, &rlmt) == -1) {
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
516 ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
517 "getrlimit(RLIMIT_NOFILE) failed, ignored");
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
518
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
519 } else {
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
520 if (ecf->connections > (ngx_uint_t) rlmt.rlim_cur
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
521 && (ccf->rlimit_nofile == NGX_CONF_UNSET
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
522 || ecf->connections > (ngx_uint_t) ccf->rlimit_nofile))
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
523 {
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
524 limit = (ccf->rlimit_nofile == NGX_CONF_UNSET) ?
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
525 (ngx_int_t) rlmt.rlim_cur : ccf->rlimit_nofile;
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
526
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
527 ngx_log_error(NGX_LOG_WARN, cycle->log, 0,
4593
834049edae24 Fixed grammar in error messages.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
528 "%ui worker_connections exceed "
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
529 "open file resource limit: %i",
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
530 ecf->connections, limit);
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
531 }
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
532 }
1704
e584e946e198 move condition declarations inside blocks where they are used
Igor Sysoev <igor@sysoev.ru>
parents: 1380
diff changeset
533 }
605
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 581
diff changeset
534 #endif /* !(NGX_WIN32) */
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 581
diff changeset
535
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
536
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
537 if (ccf->master == 0) {
303
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 301
diff changeset
538 return NGX_OK;
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 301
diff changeset
539 }
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 301
diff changeset
540
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
541 if (ngx_accept_mutex_ptr) {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
542 return NGX_OK;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
543 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
544
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
545
4593
834049edae24 Fixed grammar in error messages.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
546 /* cl should be equal to or greater than cache line size */
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
547
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
548 cl = 128;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
549
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
550 size = cl /* ngx_accept_mutex */
3035
f9d97311c652 *) share temporary number between workers
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
551 + cl /* ngx_connection_counter */
f9d97311c652 *) share temporary number between workers
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
552 + cl; /* ngx_temp_number */
303
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 301
diff changeset
553
426
3f88935a02e8 nginx-0.0.10-2004-09-14-23:39:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 380
diff changeset
554 #if (NGX_STAT_STUB)
3f88935a02e8 nginx-0.0.10-2004-09-14-23:39:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 380
diff changeset
555
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
556 size += cl /* ngx_stat_accepted */
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
557 + cl /* ngx_stat_handled */
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
558 + cl /* ngx_stat_requests */
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
559 + cl /* ngx_stat_active */
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
560 + cl /* ngx_stat_reading */
5115
a29c574d61fa Status: introduced the "ngx_stat_waiting" counter.
Valentin Bartenev <vbart@nginx.com>
parents: 5002
diff changeset
561 + cl /* ngx_stat_writing */
a29c574d61fa Status: introduced the "ngx_stat_waiting" counter.
Valentin Bartenev <vbart@nginx.com>
parents: 5002
diff changeset
562 + cl; /* ngx_stat_waiting */
426
3f88935a02e8 nginx-0.0.10-2004-09-14-23:39:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 380
diff changeset
563
3f88935a02e8 nginx-0.0.10-2004-09-14-23:39:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 380
diff changeset
564 #endif
3f88935a02e8 nginx-0.0.10-2004-09-14-23:39:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 380
diff changeset
565
605
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 581
diff changeset
566 shm.size = size;
6947
a8d7c9139831 Core: set nginx_shared_zone name via ngx_str_set().
Ruslan Ermilov <ru@nginx.com>
parents: 6922
diff changeset
567 ngx_str_set(&shm.name, "nginx_shared_zone");
605
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 581
diff changeset
568 shm.log = cycle->log;
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 581
diff changeset
569
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 581
diff changeset
570 if (ngx_shm_alloc(&shm) != NGX_OK) {
358
0a03c921c81d nginx-0.0.7-2004-06-17-21:18:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 356
diff changeset
571 return NGX_ERROR;
0a03c921c81d nginx-0.0.7-2004-06-17-21:18:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 356
diff changeset
572 }
309
2e899477243a nginx-0.0.3-2004-04-09-20:03:04 import
Igor Sysoev <igor@sysoev.ru>
parents: 307
diff changeset
573
605
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 581
diff changeset
574 shared = shm.addr;
5dac8c7fb71b nginx-0.3.24-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 581
diff changeset
575
330
377a955421dc nginx-0.0.3-2004-04-29-20:34:26 import
Igor Sysoev <igor@sysoev.ru>
parents: 325
diff changeset
576 ngx_accept_mutex_ptr = (ngx_atomic_t *) shared;
3909
0daede16d68b use POSIX semaphores in shmtx instead of sched_yield()
Igor Sysoev <igor@sysoev.ru>
parents: 3473
diff changeset
577 ngx_accept_mutex.spin = (ngx_uint_t) -1;
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
578
4309
3f6040cd731e Added shmtx interface to forcibly unlock mutexes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4133
diff changeset
579 if (ngx_shmtx_create(&ngx_accept_mutex, (ngx_shmtx_sh_t *) shared,
3f6040cd731e Added shmtx interface to forcibly unlock mutexes.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4133
diff changeset
580 cycle->lock_file.data)
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
581 != NGX_OK)
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
582 {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
583 return NGX_ERROR;
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
584 }
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
585
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
586 ngx_connection_counter = (ngx_atomic_t *) (shared + 1 * cl);
309
2e899477243a nginx-0.0.3-2004-04-09-20:03:04 import
Igor Sysoev <igor@sysoev.ru>
parents: 307
diff changeset
587
2720
b3b8c66bd520 support attaching to an existent Win32 shared memory
Igor Sysoev <igor@sysoev.ru>
parents: 2537
diff changeset
588 (void) ngx_atomic_cmp_set(ngx_connection_counter, 0, 1);
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
589
325
7c3323909107 nginx-0.0.3-2004-04-23-20:50:51 import
Igor Sysoev <igor@sysoev.ru>
parents: 323
diff changeset
590 ngx_log_debug2(NGX_LOG_DEBUG_EVENT, cycle->log, 0,
6480
f01ab2dbcfdc Fixed logging.
Sergey Kandaurov <pluknet@nginx.com>
parents: 6465
diff changeset
591 "counter: %p, %uA",
325
7c3323909107 nginx-0.0.3-2004-04-23-20:50:51 import
Igor Sysoev <igor@sysoev.ru>
parents: 323
diff changeset
592 ngx_connection_counter, *ngx_connection_counter);
7c3323909107 nginx-0.0.3-2004-04-23-20:50:51 import
Igor Sysoev <igor@sysoev.ru>
parents: 323
diff changeset
593
3035
f9d97311c652 *) share temporary number between workers
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
594 ngx_temp_number = (ngx_atomic_t *) (shared + 2 * cl);
f9d97311c652 *) share temporary number between workers
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
595
f9d97311c652 *) share temporary number between workers
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
596 tp = ngx_timeofday();
f9d97311c652 *) share temporary number between workers
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
597
f9d97311c652 *) share temporary number between workers
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
598 ngx_random_number = (tp->msec << 16) + ngx_pid;
f9d97311c652 *) share temporary number between workers
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
599
f9d97311c652 *) share temporary number between workers
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
600 #if (NGX_STAT_STUB)
f9d97311c652 *) share temporary number between workers
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
601
f9d97311c652 *) share temporary number between workers
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
602 ngx_stat_accepted = (ngx_atomic_t *) (shared + 3 * cl);
f9d97311c652 *) share temporary number between workers
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
603 ngx_stat_handled = (ngx_atomic_t *) (shared + 4 * cl);
f9d97311c652 *) share temporary number between workers
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
604 ngx_stat_requests = (ngx_atomic_t *) (shared + 5 * cl);
f9d97311c652 *) share temporary number between workers
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
605 ngx_stat_active = (ngx_atomic_t *) (shared + 6 * cl);
f9d97311c652 *) share temporary number between workers
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
606 ngx_stat_reading = (ngx_atomic_t *) (shared + 7 * cl);
f9d97311c652 *) share temporary number between workers
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
607 ngx_stat_writing = (ngx_atomic_t *) (shared + 8 * cl);
5115
a29c574d61fa Status: introduced the "ngx_stat_waiting" counter.
Valentin Bartenev <vbart@nginx.com>
parents: 5002
diff changeset
608 ngx_stat_waiting = (ngx_atomic_t *) (shared + 9 * cl);
3035
f9d97311c652 *) share temporary number between workers
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
609
f9d97311c652 *) share temporary number between workers
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
610 #endif
f9d97311c652 *) share temporary number between workers
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
611
303
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 301
diff changeset
612 return NGX_OK;
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 301
diff changeset
613 }
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 301
diff changeset
614
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 301
diff changeset
615
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
616 #if !(NGX_WIN32)
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
617
4759
4c36e15651f7 Fixed compilation with -Wmissing-prototypes.
Ruslan Ermilov <ru@nginx.com>
parents: 4613
diff changeset
618 static void
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
619 ngx_timer_signal_handler(int signo)
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
620 {
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
621 ngx_event_timer_alarm = 1;
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
622
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
623 #if 1
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
624 ngx_log_debug0(NGX_LOG_DEBUG_EVENT, ngx_cycle->log, 0, "timer signal");
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
625 #endif
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
626 }
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
627
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
628 #endif
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
629
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
630
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
631 static ngx_int_t
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
632 ngx_event_process_init(ngx_cycle_t *cycle)
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
633 {
290
87e73f067470 nginx-0.0.2-2004-03-16-10:10:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 288
diff changeset
634 ngx_uint_t m, i;
103
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 102
diff changeset
635 ngx_event_t *rev, *wev;
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
636 ngx_listening_t *ls;
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
637 ngx_connection_t *c, *next, *old;
303
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 301
diff changeset
638 ngx_core_conf_t *ccf;
97
70d2345a903f nginx-0.0.1-2003-05-29-17:02:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 96
diff changeset
639 ngx_event_conf_t *ecf;
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
640 ngx_event_module_t *module;
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
641
303
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 301
diff changeset
642 ccf = (ngx_core_conf_t *) ngx_get_conf(cycle->conf_ctx, ngx_core_module);
306
6b91bfbc4123 nginx-0.0.3-2004-04-05-00:32:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 305
diff changeset
643 ecf = ngx_event_get_conf(cycle->conf_ctx, ngx_event_core_module);
303
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 301
diff changeset
644
865
797b54c6425b fix segfault
Igor Sysoev <igor@sysoev.ru>
parents: 860
diff changeset
645 if (ccf->master && ccf->worker_processes > 1 && ecf->accept_mutex) {
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
646 ngx_use_accept_mutex = 1;
345
fade4edd61f8 nginx-0.0.3-2004-06-04-18:57:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 344
diff changeset
647 ngx_accept_mutex_held = 0;
306
6b91bfbc4123 nginx-0.0.3-2004-04-05-00:32:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 305
diff changeset
648 ngx_accept_mutex_delay = ecf->accept_mutex_delay;
611
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
649
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
650 } else {
3f8a2132b93d nginx-0.3.27-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 605
diff changeset
651 ngx_use_accept_mutex = 0;
303
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 301
diff changeset
652 }
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 301
diff changeset
653
5235
c9fe549b127b Win32: accept_mutex now always disabled (ticket #362).
Maxim Dounin <mdounin@mdounin.ru>
parents: 5115
diff changeset
654 #if (NGX_WIN32)
c9fe549b127b Win32: accept_mutex now always disabled (ticket #362).
Maxim Dounin <mdounin@mdounin.ru>
parents: 5115
diff changeset
655
c9fe549b127b Win32: accept_mutex now always disabled (ticket #362).
Maxim Dounin <mdounin@mdounin.ru>
parents: 5115
diff changeset
656 /*
c9fe549b127b Win32: accept_mutex now always disabled (ticket #362).
Maxim Dounin <mdounin@mdounin.ru>
parents: 5115
diff changeset
657 * disable accept mutex on win32 as it may cause deadlock if
c9fe549b127b Win32: accept_mutex now always disabled (ticket #362).
Maxim Dounin <mdounin@mdounin.ru>
parents: 5115
diff changeset
658 * grabbed by a process which can't accept connections
c9fe549b127b Win32: accept_mutex now always disabled (ticket #362).
Maxim Dounin <mdounin@mdounin.ru>
parents: 5115
diff changeset
659 */
c9fe549b127b Win32: accept_mutex now always disabled (ticket #362).
Maxim Dounin <mdounin@mdounin.ru>
parents: 5115
diff changeset
660
c9fe549b127b Win32: accept_mutex now always disabled (ticket #362).
Maxim Dounin <mdounin@mdounin.ru>
parents: 5115
diff changeset
661 ngx_use_accept_mutex = 0;
c9fe549b127b Win32: accept_mutex now always disabled (ticket #362).
Maxim Dounin <mdounin@mdounin.ru>
parents: 5115
diff changeset
662
c9fe549b127b Win32: accept_mutex now always disabled (ticket #362).
Maxim Dounin <mdounin@mdounin.ru>
parents: 5115
diff changeset
663 #endif
c9fe549b127b Win32: accept_mutex now always disabled (ticket #362).
Maxim Dounin <mdounin@mdounin.ru>
parents: 5115
diff changeset
664
5821
3f5f0ab59b35 Events: processing of posted events changed from LIFO to FIFO.
Valentin Bartenev <vbart@nginx.com>
parents: 5820
diff changeset
665 ngx_queue_init(&ngx_posted_accept_events);
7584
9d2ad2fb4423 SSL: available bytes handling (ticket #1431).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7316
diff changeset
666 ngx_queue_init(&ngx_posted_next_events);
5821
3f5f0ab59b35 Events: processing of posted events changed from LIFO to FIFO.
Valentin Bartenev <vbart@nginx.com>
parents: 5820
diff changeset
667 ngx_queue_init(&ngx_posted_events);
3f5f0ab59b35 Events: processing of posted events changed from LIFO to FIFO.
Valentin Bartenev <vbart@nginx.com>
parents: 5820
diff changeset
668
270
7bb9562216ce nginx-0.0.2-2004-02-25-23:16:15 import
Igor Sysoev <igor@sysoev.ru>
parents: 260
diff changeset
669 if (ngx_event_timer_init(cycle->log) == NGX_ERROR) {
7bb9562216ce nginx-0.0.2-2004-02-25-23:16:15 import
Igor Sysoev <igor@sysoev.ru>
parents: 260
diff changeset
670 return NGX_ERROR;
7bb9562216ce nginx-0.0.2-2004-02-25-23:16:15 import
Igor Sysoev <igor@sysoev.ru>
parents: 260
diff changeset
671 }
209
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
672
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
673 for (m = 0; cycle->modules[m]; m++) {
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
674 if (cycle->modules[m]->type != NGX_EVENT_MODULE) {
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
675 continue;
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
676 }
59
e8cdc2989cee nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 57
diff changeset
677
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
678 if (cycle->modules[m]->ctx_index != ecf->use) {
2062
90312b616162 prepare to allow various number of connections in child processes
Igor Sysoev <igor@sysoev.ru>
parents: 2024
diff changeset
679 continue;
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
680 }
2062
90312b616162 prepare to allow various number of connections in child processes
Igor Sysoev <igor@sysoev.ru>
parents: 2024
diff changeset
681
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
682 module = cycle->modules[m]->ctx;
2062
90312b616162 prepare to allow various number of connections in child processes
Igor Sysoev <igor@sysoev.ru>
parents: 2024
diff changeset
683
90312b616162 prepare to allow various number of connections in child processes
Igor Sysoev <igor@sysoev.ru>
parents: 2024
diff changeset
684 if (module->actions.init(cycle, ngx_timer_resolution) != NGX_OK) {
90312b616162 prepare to allow various number of connections in child processes
Igor Sysoev <igor@sysoev.ru>
parents: 2024
diff changeset
685 /* fatal */
90312b616162 prepare to allow various number of connections in child processes
Igor Sysoev <igor@sysoev.ru>
parents: 2024
diff changeset
686 exit(2);
90312b616162 prepare to allow various number of connections in child processes
Igor Sysoev <igor@sysoev.ru>
parents: 2024
diff changeset
687 }
90312b616162 prepare to allow various number of connections in child processes
Igor Sysoev <igor@sysoev.ru>
parents: 2024
diff changeset
688
90312b616162 prepare to allow various number of connections in child processes
Igor Sysoev <igor@sysoev.ru>
parents: 2024
diff changeset
689 break;
44
0e81ac0bb3e2 nginx-0.0.1-2003-01-09-08:36:00 import
Igor Sysoev <igor@sysoev.ru>
parents: 39
diff changeset
690 }
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
691
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
692 #if !(NGX_WIN32)
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
693
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
694 if (ngx_timer_resolution && !(ngx_event_flags & NGX_USE_TIMER_EVENT)) {
1704
e584e946e198 move condition declarations inside blocks where they are used
Igor Sysoev <igor@sysoev.ru>
parents: 1380
diff changeset
695 struct sigaction sa;
e584e946e198 move condition declarations inside blocks where they are used
Igor Sysoev <igor@sysoev.ru>
parents: 1380
diff changeset
696 struct itimerval itv;
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
697
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
698 ngx_memzero(&sa, sizeof(struct sigaction));
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
699 sa.sa_handler = ngx_timer_signal_handler;
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
700 sigemptyset(&sa.sa_mask);
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
701
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
702 if (sigaction(SIGALRM, &sa, NULL) == -1) {
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
703 ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
704 "sigaction(SIGALRM) failed");
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
705 return NGX_ERROR;
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
706 }
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
707
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
708 itv.it_interval.tv_sec = ngx_timer_resolution / 1000;
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
709 itv.it_interval.tv_usec = (ngx_timer_resolution % 1000) * 1000;
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
710 itv.it_value.tv_sec = ngx_timer_resolution / 1000;
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
711 itv.it_value.tv_usec = (ngx_timer_resolution % 1000 ) * 1000;
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
712
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
713 if (setitimer(ITIMER_REAL, &itv, NULL) == -1) {
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
714 ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
715 "setitimer() failed");
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
716 }
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
717 }
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 561
diff changeset
718
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
719 if (ngx_event_flags & NGX_USE_FD_EVENT) {
1704
e584e946e198 move condition declarations inside blocks where they are used
Igor Sysoev <igor@sysoev.ru>
parents: 1380
diff changeset
720 struct rlimit rlmt;
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
721
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
722 if (getrlimit(RLIMIT_NOFILE, &rlmt) == -1) {
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
723 ngx_log_error(NGX_LOG_ALERT, cycle->log, ngx_errno,
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
724 "getrlimit(RLIMIT_NOFILE) failed");
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
725 return NGX_ERROR;
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
726 }
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
727
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
728 cycle->files_n = (ngx_uint_t) rlmt.rlim_cur;
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
729
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
730 cycle->files = ngx_calloc(sizeof(ngx_connection_t *) * cycle->files_n,
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
731 cycle->log);
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
732 if (cycle->files == NULL) {
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
733 return NGX_ERROR;
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
734 }
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
735 }
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
736
6266
dceb078b1156 Win32: timer_resolution now ignored with select.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6166
diff changeset
737 #else
dceb078b1156 Win32: timer_resolution now ignored with select.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6166
diff changeset
738
dceb078b1156 Win32: timer_resolution now ignored with select.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6166
diff changeset
739 if (ngx_timer_resolution && !(ngx_event_flags & NGX_USE_TIMER_EVENT)) {
dceb078b1156 Win32: timer_resolution now ignored with select.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6166
diff changeset
740 ngx_log_error(NGX_LOG_WARN, cycle->log, 0,
dceb078b1156 Win32: timer_resolution now ignored with select.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6166
diff changeset
741 "the \"timer_resolution\" directive is not supported "
dceb078b1156 Win32: timer_resolution now ignored with select.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6166
diff changeset
742 "with the configured event method, ignored");
dceb078b1156 Win32: timer_resolution now ignored with select.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6166
diff changeset
743 ngx_timer_resolution = 0;
dceb078b1156 Win32: timer_resolution now ignored with select.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6166
diff changeset
744 }
dceb078b1156 Win32: timer_resolution now ignored with select.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6166
diff changeset
745
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
746 #endif
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
747
2062
90312b616162 prepare to allow various number of connections in child processes
Igor Sysoev <igor@sysoev.ru>
parents: 2024
diff changeset
748 cycle->connections =
90312b616162 prepare to allow various number of connections in child processes
Igor Sysoev <igor@sysoev.ru>
parents: 2024
diff changeset
749 ngx_alloc(sizeof(ngx_connection_t) * cycle->connection_n, cycle->log);
561
e48ebafc6939 nginx-0.3.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 543
diff changeset
750 if (cycle->connections == NULL) {
209
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
751 return NGX_ERROR;
112
da763a85be66 nginx-0.0.1-2003-07-04-10:03:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 109
diff changeset
752 }
da763a85be66 nginx-0.0.1-2003-07-04-10:03:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 109
diff changeset
753
561
e48ebafc6939 nginx-0.3.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 543
diff changeset
754 c = cycle->connections;
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 113
diff changeset
755
2062
90312b616162 prepare to allow various number of connections in child processes
Igor Sysoev <igor@sysoev.ru>
parents: 2024
diff changeset
756 cycle->read_events = ngx_alloc(sizeof(ngx_event_t) * cycle->connection_n,
209
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
757 cycle->log);
561
e48ebafc6939 nginx-0.3.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 543
diff changeset
758 if (cycle->read_events == NULL) {
209
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
759 return NGX_ERROR;
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
760 }
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
761
561
e48ebafc6939 nginx-0.3.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 543
diff changeset
762 rev = cycle->read_events;
375
744ccb59062d nginx-0.0.7-2004-07-02-19:54:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 370
diff changeset
763 for (i = 0; i < cycle->connection_n; i++) {
744ccb59062d nginx-0.0.7-2004-07-02-19:54:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 370
diff changeset
764 rev[i].closed = 1;
481
fd661d14a7fa nginx-0.1.15-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
765 rev[i].instance = 1;
375
744ccb59062d nginx-0.0.7-2004-07-02-19:54:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 370
diff changeset
766 }
744ccb59062d nginx-0.0.7-2004-07-02-19:54:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 370
diff changeset
767
2062
90312b616162 prepare to allow various number of connections in child processes
Igor Sysoev <igor@sysoev.ru>
parents: 2024
diff changeset
768 cycle->write_events = ngx_alloc(sizeof(ngx_event_t) * cycle->connection_n,
481
fd661d14a7fa nginx-0.1.15-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 473
diff changeset
769 cycle->log);
561
e48ebafc6939 nginx-0.3.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 543
diff changeset
770 if (cycle->write_events == NULL) {
209
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
771 return NGX_ERROR;
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
772 }
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
773
561
e48ebafc6939 nginx-0.3.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 543
diff changeset
774 wev = cycle->write_events;
375
744ccb59062d nginx-0.0.7-2004-07-02-19:54:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 370
diff changeset
775 for (i = 0; i < cycle->connection_n; i++) {
744ccb59062d nginx-0.0.7-2004-07-02-19:54:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 370
diff changeset
776 wev[i].closed = 1;
744ccb59062d nginx-0.0.7-2004-07-02-19:54:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 370
diff changeset
777 }
744ccb59062d nginx-0.0.7-2004-07-02-19:54:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 370
diff changeset
778
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
779 i = cycle->connection_n;
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
780 next = NULL;
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
781
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
782 do {
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
783 i--;
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
784
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
785 c[i].data = next;
561
e48ebafc6939 nginx-0.3.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 543
diff changeset
786 c[i].read = &cycle->read_events[i];
e48ebafc6939 nginx-0.3.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 543
diff changeset
787 c[i].write = &cycle->write_events[i];
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
788 c[i].fd = (ngx_socket_t) -1;
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
789
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
790 next = &c[i];
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
791 } while (i);
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
792
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
793 cycle->free_connections = next;
2062
90312b616162 prepare to allow various number of connections in child processes
Igor Sysoev <igor@sysoev.ru>
parents: 2024
diff changeset
794 cycle->free_connection_n = cycle->connection_n;
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
795
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
796 /* for each listening socket */
103
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 102
diff changeset
797
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
798 ls = cycle->listening.elts;
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 113
diff changeset
799 for (i = 0; i < cycle->listening.nelts; i++) {
3
34a521b1a148 nginx-0.0.1-2002-08-20-18:48:28 import
Igor Sysoev <igor@sysoev.ru>
parents: 0
diff changeset
800
6153
4f6efabcb09b The "reuseport" option of the "listen" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6139
diff changeset
801 #if (NGX_HAVE_REUSEPORT)
4f6efabcb09b The "reuseport" option of the "listen" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6139
diff changeset
802 if (ls[i].reuseport && ls[i].worker != ngx_worker) {
4f6efabcb09b The "reuseport" option of the "listen" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6139
diff changeset
803 continue;
4f6efabcb09b The "reuseport" option of the "listen" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6139
diff changeset
804 }
4f6efabcb09b The "reuseport" option of the "listen" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6139
diff changeset
805 #endif
4f6efabcb09b The "reuseport" option of the "listen" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6139
diff changeset
806
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
807 c = ngx_get_connection(ls[i].fd, cycle->log);
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
808
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
809 if (c == NULL) {
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
810 return NGX_ERROR;
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
811 }
103
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 102
diff changeset
812
6436
8f038068f4bc Stream: UDP proxy.
Roman Arutyunyan <arut@nginx.com>
parents: 6379
diff changeset
813 c->type = ls[i].type;
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
814 c->log = &ls[i].log;
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
815
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
816 c->listening = &ls[i];
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
817 ls[i].connection = c;
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
818
561
e48ebafc6939 nginx-0.3.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 543
diff changeset
819 rev = c->read;
209
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
820
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 113
diff changeset
821 rev->log = c->log;
301
744965ec6275 nginx-0.0.3-2004-03-31-19:26:46 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
822 rev->accept = 1;
744965ec6275 nginx-0.0.3-2004-03-31-19:26:46 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
823
469
2ff194b74f1e nginx-0.1.9-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 467
diff changeset
824 #if (NGX_HAVE_DEFERRED_ACCEPT)
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
825 rev->deferred_accept = ls[i].deferred_accept;
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
826 #endif
59
e8cdc2989cee nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 57
diff changeset
827
209
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
828 if (!(ngx_event_flags & NGX_USE_IOCP_EVENT)) {
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
829 if (ls[i].previous) {
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 113
diff changeset
830
209
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
831 /*
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
832 * delete the old accept events that were bound to
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
833 * the old cycle read events array
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
834 */
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 113
diff changeset
835
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
836 old = ls[i].previous->connection;
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
837
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
838 if (ngx_del_event(old->read, NGX_READ_EVENT, NGX_CLOSE_EVENT)
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
839 == NGX_ERROR)
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 216
diff changeset
840 {
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 113
diff changeset
841 return NGX_ERROR;
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 113
diff changeset
842 }
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 113
diff changeset
843
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
844 old->fd = (ngx_socket_t) -1;
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 113
diff changeset
845 }
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 113
diff changeset
846 }
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 113
diff changeset
847
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
848 #if (NGX_WIN32)
59
e8cdc2989cee nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 57
diff changeset
849
144
ef8c87afcfc5 nginx-0.0.1-2003-10-12-20:49:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 114
diff changeset
850 if (ngx_event_flags & NGX_USE_IOCP_EVENT) {
1704
e584e946e198 move condition declarations inside blocks where they are used
Igor Sysoev <igor@sysoev.ru>
parents: 1380
diff changeset
851 ngx_iocp_conf_t *iocpcf;
e584e946e198 move condition declarations inside blocks where they are used
Igor Sysoev <igor@sysoev.ru>
parents: 1380
diff changeset
852
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
853 rev->handler = ngx_event_acceptex;
59
e8cdc2989cee nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 57
diff changeset
854
2771
4d62ef39f08b add listen events for win32 only after accept mutex is hold
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
855 if (ngx_use_accept_mutex) {
4d62ef39f08b add listen events for win32 only after accept mutex is hold
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
856 continue;
4d62ef39f08b add listen events for win32 only after accept mutex is hold
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
857 }
4d62ef39f08b add listen events for win32 only after accept mutex is hold
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
858
103
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 102
diff changeset
859 if (ngx_add_event(rev, 0, NGX_IOCP_ACCEPT) == NGX_ERROR) {
59
e8cdc2989cee nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 57
diff changeset
860 return NGX_ERROR;
e8cdc2989cee nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 57
diff changeset
861 }
e8cdc2989cee nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 57
diff changeset
862
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
863 ls[i].log.handler = ngx_acceptex_log_error;
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
864
114
ac69ab96328d nginx-0.0.1-2003-07-07-10:11:50 import
Igor Sysoev <igor@sysoev.ru>
parents: 113
diff changeset
865 iocpcf = ngx_event_get_conf(cycle->conf_ctx, ngx_iocp_module);
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
866 if (ngx_event_post_acceptex(&ls[i], iocpcf->post_acceptex)
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
867 == NGX_ERROR)
288
f81d075ad172 nginx-0.0.2-2004-03-14-23:46:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 276
diff changeset
868 {
103
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 102
diff changeset
869 return NGX_ERROR;
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 102
diff changeset
870 }
59
e8cdc2989cee nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 57
diff changeset
871
e8cdc2989cee nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 57
diff changeset
872 } else {
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
873 rev->handler = ngx_event_accept;
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
874
2771
4d62ef39f08b add listen events for win32 only after accept mutex is hold
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
875 if (ngx_use_accept_mutex) {
4d62ef39f08b add listen events for win32 only after accept mutex is hold
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
876 continue;
4d62ef39f08b add listen events for win32 only after accept mutex is hold
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
877 }
4d62ef39f08b add listen events for win32 only after accept mutex is hold
Igor Sysoev <igor@sysoev.ru>
parents: 2725
diff changeset
878
301
744965ec6275 nginx-0.0.3-2004-03-31-19:26:46 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
879 if (ngx_add_event(rev, NGX_READ_EVENT, 0) == NGX_ERROR) {
744965ec6275 nginx-0.0.3-2004-03-31-19:26:46 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
880 return NGX_ERROR;
744965ec6275 nginx-0.0.3-2004-03-31-19:26:46 import
Igor Sysoev <igor@sysoev.ru>
parents: 290
diff changeset
881 }
59
e8cdc2989cee nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 57
diff changeset
882 }
e8cdc2989cee nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 57
diff changeset
883
e8cdc2989cee nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 57
diff changeset
884 #else
e8cdc2989cee nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 57
diff changeset
885
6436
8f038068f4bc Stream: UDP proxy.
Roman Arutyunyan <arut@nginx.com>
parents: 6379
diff changeset
886 rev->handler = (c->type == SOCK_STREAM) ? ngx_event_accept
8f038068f4bc Stream: UDP proxy.
Roman Arutyunyan <arut@nginx.com>
parents: 6379
diff changeset
887 : ngx_event_recvmsg;
260
5dacbb4daaf6 nginx-0.0.2-2004-02-17-20:53:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 257
diff changeset
888
6155
193bbc006d5e Fixed reuseport with accept_mutex.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6153
diff changeset
889 #if (NGX_HAVE_REUSEPORT)
6635
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6633
diff changeset
890
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6633
diff changeset
891 if (ls[i].reuseport) {
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6633
diff changeset
892 if (ngx_add_event(rev, NGX_READ_EVENT, 0) == NGX_ERROR) {
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6633
diff changeset
893 return NGX_ERROR;
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6633
diff changeset
894 }
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6633
diff changeset
895
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6633
diff changeset
896 continue;
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6633
diff changeset
897 }
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6633
diff changeset
898
6155
193bbc006d5e Fixed reuseport with accept_mutex.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6153
diff changeset
899 #endif
6635
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6633
diff changeset
900
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6633
diff changeset
901 if (ngx_use_accept_mutex) {
345
fade4edd61f8 nginx-0.0.3-2004-06-04-18:57:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 344
diff changeset
902 continue;
fade4edd61f8 nginx-0.0.3-2004-06-04-18:57:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 344
diff changeset
903 }
344
e366ba5db8f8 nginx-0.0.3-2004-06-01-10:04:46 import
Igor Sysoev <igor@sysoev.ru>
parents: 331
diff changeset
904
6635
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6633
diff changeset
905 #if (NGX_HAVE_EPOLLEXCLUSIVE)
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6633
diff changeset
906
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6633
diff changeset
907 if ((ngx_event_flags & NGX_USE_EPOLL_EVENT)
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6633
diff changeset
908 && ccf->worker_processes > 1)
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6633
diff changeset
909 {
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6633
diff changeset
910 if (ngx_add_event(rev, NGX_READ_EVENT, NGX_EXCLUSIVE_EVENT)
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6633
diff changeset
911 == NGX_ERROR)
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6633
diff changeset
912 {
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6633
diff changeset
913 return NGX_ERROR;
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6633
diff changeset
914 }
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6633
diff changeset
915
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6633
diff changeset
916 continue;
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6633
diff changeset
917 }
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6633
diff changeset
918
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6633
diff changeset
919 #endif
6acaa638fa07 Events: support for EPOLLEXCLUSIVE.
Valentin Bartenev <vbart@nginx.com>
parents: 6633
diff changeset
920
6126
adba26ff70b5 Removed the obsolete rtsig module.
Ruslan Ermilov <ru@nginx.com>
parents: 6125
diff changeset
921 if (ngx_add_event(rev, NGX_READ_EVENT, 0) == NGX_ERROR) {
adba26ff70b5 Removed the obsolete rtsig module.
Ruslan Ermilov <ru@nginx.com>
parents: 6125
diff changeset
922 return NGX_ERROR;
260
5dacbb4daaf6 nginx-0.0.2-2004-02-17-20:53:12 import
Igor Sysoev <igor@sysoev.ru>
parents: 257
diff changeset
923 }
59
e8cdc2989cee nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 57
diff changeset
924
e8cdc2989cee nginx-0.0.1-2003-02-06-20:21:13 import
Igor Sysoev <igor@sysoev.ru>
parents: 57
diff changeset
925 #endif
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 541
diff changeset
926
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
927 }
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
928
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
929 return NGX_OK;
3
34a521b1a148 nginx-0.0.1-2002-08-20-18:48:28 import
Igor Sysoev <igor@sysoev.ru>
parents: 0
diff changeset
930 }
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
931
90
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
932
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
933 ngx_int_t
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
934 ngx_send_lowat(ngx_connection_t *c, size_t lowat)
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
935 {
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
936 int sndlowat;
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
937
8481
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents: 8215
diff changeset
938 #if (NGX_QUIC)
8630
279ad36f2f4b QUIC: renamed c->qs to c->quic.
Roman Arutyunyan <arut@nginx.com>
parents: 8481
diff changeset
939 if (c->quic) {
8215
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents: 7617
diff changeset
940 return NGX_OK;
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents: 7617
diff changeset
941 }
8481
0d2b2664b41c QUIC: added "quic" listen parameter.
Roman Arutyunyan <arut@nginx.com>
parents: 8215
diff changeset
942 #endif
8215
38c0898b6df7 HTTP/3.
Roman Arutyunyan <arut@nginx.com>
parents: 7617
diff changeset
943
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
944 #if (NGX_HAVE_LOWAT_EVENT)
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
945
455
295d97d70c69 nginx-0.1.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 452
diff changeset
946 if (ngx_event_flags & NGX_USE_KQUEUE_EVENT) {
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
947 c->write->available = lowat;
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
948 return NGX_OK;
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
949 }
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
950
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
951 #endif
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 573
diff changeset
952
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
953 if (lowat == 0 || c->sndlowat) {
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
954 return NGX_OK;
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
955 }
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
956
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
957 sndlowat = (int) lowat;
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
958
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
959 if (setsockopt(c->fd, SOL_SOCKET, SO_SNDLOWAT,
1092
3184d28c22dc style fix
Igor Sysoev <igor@sysoev.ru>
parents: 865
diff changeset
960 (const void *) &sndlowat, sizeof(int))
3184d28c22dc style fix
Igor Sysoev <igor@sysoev.ru>
parents: 865
diff changeset
961 == -1)
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
962 {
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
963 ngx_connection_error(c, ngx_socket_errno,
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
964 "setsockopt(SO_SNDLOWAT) failed");
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
965 return NGX_ERROR;
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
966 }
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
967
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
968 c->sndlowat = 1;
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
969
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
970 return NGX_OK;
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
971 }
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
972
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
973
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
974 static char *
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
975 ngx_events_block(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
90
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
976 {
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
977 char *rv;
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
978 void ***ctx;
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
979 ngx_uint_t i;
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
980 ngx_conf_t pcf;
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
981 ngx_event_module_t *m;
90
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
982
5002
39c597272c8d Events: added check for duplicate "events" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4810
diff changeset
983 if (*(void **) conf) {
39c597272c8d Events: added check for duplicate "events" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4810
diff changeset
984 return "is duplicate";
39c597272c8d Events: added check for duplicate "events" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4810
diff changeset
985 }
39c597272c8d Events: added check for duplicate "events" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4810
diff changeset
986
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
987 /* count the number of the event modules and set up their indices */
90
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
988
6378
0f203a2af17c Dynamic modules: moved module-related stuff to separate files.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6266
diff changeset
989 ngx_event_max_module = ngx_count_modules(cf->cycle, NGX_EVENT_MODULE);
90
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
990
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
991 ctx = ngx_pcalloc(cf->pool, sizeof(void *));
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
992 if (ctx == NULL) {
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
993 return NGX_CONF_ERROR;
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
994 }
90
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
995
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
996 *ctx = ngx_pcalloc(cf->pool, ngx_event_max_module * sizeof(void *));
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
997 if (*ctx == NULL) {
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
998 return NGX_CONF_ERROR;
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
999 }
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1000
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1001 *(void **) conf = ctx;
90
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
1002
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1003 for (i = 0; cf->cycle->modules[i]; i++) {
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1004 if (cf->cycle->modules[i]->type != NGX_EVENT_MODULE) {
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1005 continue;
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1006 }
90
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
1007
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1008 m = cf->cycle->modules[i]->ctx;
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1009
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1010 if (m->create_conf) {
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1011 (*ctx)[cf->cycle->modules[i]->ctx_index] =
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1012 m->create_conf(cf->cycle);
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1013 if ((*ctx)[cf->cycle->modules[i]->ctx_index] == NULL) {
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1014 return NGX_CONF_ERROR;
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1015 }
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1016 }
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1017 }
90
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
1018
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
1019 pcf = *cf;
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1020 cf->ctx = ctx;
96
a23d010f356d nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 93
diff changeset
1021 cf->module_type = NGX_EVENT_MODULE;
90
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
1022 cf->cmd_type = NGX_EVENT_CONF;
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1023
90
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
1024 rv = ngx_conf_parse(cf, NULL);
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1025
90
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
1026 *cf = pcf;
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
1027
6166
Maxim Dounin <mdounin@mdounin.ru>
parents: 6155
diff changeset
1028 if (rv != NGX_CONF_OK) {
90
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
1029 return rv;
6166
Maxim Dounin <mdounin@mdounin.ru>
parents: 6155
diff changeset
1030 }
90
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
1031
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1032 for (i = 0; cf->cycle->modules[i]; i++) {
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1033 if (cf->cycle->modules[i]->type != NGX_EVENT_MODULE) {
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1034 continue;
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1035 }
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1036
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1037 m = cf->cycle->modules[i]->ctx;
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1038
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1039 if (m->init_conf) {
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1040 rv = m->init_conf(cf->cycle,
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1041 (*ctx)[cf->cycle->modules[i]->ctx_index]);
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1042 if (rv != NGX_CONF_OK) {
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1043 return rv;
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1044 }
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1045 }
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1046 }
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1047
90
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
1048 return NGX_CONF_OK;
37530da31268 nginx-0.0.1-2003-05-16-19:27:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
1049 }
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1050
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1051
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
1052 static char *
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
1053 ngx_event_connections(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
209
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1054 {
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1055 ngx_event_conf_t *ecf = conf;
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1056
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1057 ngx_str_t *value;
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1058
323
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 311
diff changeset
1059 if (ecf->connections != NGX_CONF_UNSET_UINT) {
2024
7018254cc006 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
1060 return "is duplicate";
209
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1061 }
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1062
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1063 value = cf->args->elts;
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1064 ecf->connections = ngx_atoi(value[1].data, value[1].len);
323
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 311
diff changeset
1065 if (ecf->connections == (ngx_uint_t) NGX_ERROR) {
209
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1066 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
1067 "invalid number \"%V\"", &value[1]);
209
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1068
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1069 return NGX_CONF_ERROR;
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1070 }
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1071
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1072 cf->cycle->connection_n = ecf->connections;
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1073
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1074 return NGX_CONF_OK;
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1075 }
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1076
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1077
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
1078 static char *
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
1079 ngx_event_use(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1080 {
96
a23d010f356d nginx-0.0.1-2003-05-27-16:18:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 93
diff changeset
1081 ngx_event_conf_t *ecf = conf;
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1082
255
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
1083 ngx_int_t m;
209
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1084 ngx_str_t *value;
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1085 ngx_event_conf_t *old_ecf;
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1086 ngx_event_module_t *module;
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1087
356
2e3cbc1bbe3c nginx-0.0.7-2004-06-16-19:32:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 355
diff changeset
1088 if (ecf->use != NGX_CONF_UNSET_UINT) {
2024
7018254cc006 style fix
Igor Sysoev <igor@sysoev.ru>
parents: 1704
diff changeset
1089 return "is duplicate";
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1090 }
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1091
209
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1092 value = cf->args->elts;
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1093
227
2ba3477070ac nginx-0.0.1-2004-01-14-21:19:42 import
Igor Sysoev <igor@sysoev.ru>
parents: 218
diff changeset
1094 if (cf->cycle->old_cycle->conf_ctx) {
209
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1095 old_ecf = ngx_event_get_conf(cf->cycle->old_cycle->conf_ctx,
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1096 ngx_event_core_module);
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1097 } else {
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1098 old_ecf = NULL;
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1099 }
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1100
249
2a0540287298 nginx-0.0.2-2004-02-03-19:43:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 248
diff changeset
1101
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1102 for (m = 0; cf->cycle->modules[m]; m++) {
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1103 if (cf->cycle->modules[m]->type != NGX_EVENT_MODULE) {
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1104 continue;
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1105 }
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1106
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1107 module = cf->cycle->modules[m]->ctx;
209
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1108 if (module->name->len == value[1].len) {
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1109 if (ngx_strcmp(module->name->data, value[1].data) == 0) {
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1110 ecf->use = cf->cycle->modules[m]->ctx_index;
209
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1111 ecf->name = module->name->data;
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1112
249
2a0540287298 nginx-0.0.2-2004-02-03-19:43:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 248
diff changeset
1113 if (ngx_process == NGX_PROCESS_SINGLE
2a0540287298 nginx-0.0.2-2004-02-03-19:43:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 248
diff changeset
1114 && old_ecf
2a0540287298 nginx-0.0.2-2004-02-03-19:43:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 248
diff changeset
1115 && old_ecf->use != ecf->use)
2a0540287298 nginx-0.0.2-2004-02-03-19:43:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 248
diff changeset
1116 {
209
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1117 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
467
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1118 "when the server runs without a master process "
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1119 "the \"%V\" event type must be the same as "
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1120 "in previous configuration - \"%s\" "
4133
59b99f217c6d Replaced "can not" with "cannot" and "could not" in a bunch of places.
Ruslan Ermilov <ru@nginx.com>
parents: 3909
diff changeset
1121 "and it cannot be changed on the fly, "
467
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1122 "to change it you need to stop server "
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1123 "and start it again",
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1124 &value[1], old_ecf->name);
249
2a0540287298 nginx-0.0.2-2004-02-03-19:43:54 import
Igor Sysoev <igor@sysoev.ru>
parents: 248
diff changeset
1125
209
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1126 return NGX_CONF_ERROR;
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1127 }
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1128
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1129 return NGX_CONF_OK;
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1130 }
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1131 }
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1132 }
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1133
209
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1134 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
461
a88a3e4e158f nginx-0.1.5-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 455
diff changeset
1135 "invalid event type \"%V\"", &value[1]);
209
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1136
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1137 return NGX_CONF_ERROR;
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1138 }
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1139
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1140
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
1141 static char *
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
1142 ngx_event_debug_connection(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
307
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
1143 {
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
1144 #if (NGX_DEBUG)
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
1145 ngx_event_conf_t *ecf = conf;
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
1146
4763
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1147 ngx_int_t rc;
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1148 ngx_str_t *value;
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1149 ngx_url_t u;
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1150 ngx_cidr_t c, *cidr;
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1151 ngx_uint_t i;
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1152 struct sockaddr_in *sin;
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1153 #if (NGX_HAVE_INET6)
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1154 struct sockaddr_in6 *sin6;
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1155 #endif
307
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
1156
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
1157 value = cf->args->elts;
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
1158
4613
9ee20e074a2e debug_connection: added the IPv6 and UNIX-domain socket support.
Ruslan Ermilov <ru@nginx.com>
parents: 4599
diff changeset
1159 #if (NGX_HAVE_UNIX_DOMAIN)
9ee20e074a2e debug_connection: added the IPv6 and UNIX-domain socket support.
Ruslan Ermilov <ru@nginx.com>
parents: 4599
diff changeset
1160
9ee20e074a2e debug_connection: added the IPv6 and UNIX-domain socket support.
Ruslan Ermilov <ru@nginx.com>
parents: 4599
diff changeset
1161 if (ngx_strcmp(value[1].data, "unix:") == 0) {
4763
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1162 cidr = ngx_array_push(&ecf->debug_connection);
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1163 if (cidr == NULL) {
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1164 return NGX_CONF_ERROR;
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1165 }
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1166
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1167 cidr->family = AF_UNIX;
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1168 return NGX_CONF_OK;
4613
9ee20e074a2e debug_connection: added the IPv6 and UNIX-domain socket support.
Ruslan Ermilov <ru@nginx.com>
parents: 4599
diff changeset
1169 }
9ee20e074a2e debug_connection: added the IPv6 and UNIX-domain socket support.
Ruslan Ermilov <ru@nginx.com>
parents: 4599
diff changeset
1170
9ee20e074a2e debug_connection: added the IPv6 and UNIX-domain socket support.
Ruslan Ermilov <ru@nginx.com>
parents: 4599
diff changeset
1171 #endif
9ee20e074a2e debug_connection: added the IPv6 and UNIX-domain socket support.
Ruslan Ermilov <ru@nginx.com>
parents: 4599
diff changeset
1172
4763
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1173 rc = ngx_ptocidr(&value[1], &c);
1380
b590a528fd41 ignore meaningless bits in CIDR and warn about them
Igor Sysoev <igor@sysoev.ru>
parents: 1354
diff changeset
1174
4763
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1175 if (rc != NGX_ERROR) {
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1176 if (rc == NGX_DONE) {
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1177 ngx_conf_log_error(NGX_LOG_WARN, cf, 0,
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1178 "low address bits of %V are meaningless",
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1179 &value[1]);
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1180 }
1380
b590a528fd41 ignore meaningless bits in CIDR and warn about them
Igor Sysoev <igor@sysoev.ru>
parents: 1354
diff changeset
1181
4763
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1182 cidr = ngx_array_push(&ecf->debug_connection);
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1183 if (cidr == NULL) {
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1184 return NGX_CONF_ERROR;
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1185 }
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1186
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1187 *cidr = c;
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1188
1380
b590a528fd41 ignore meaningless bits in CIDR and warn about them
Igor Sysoev <igor@sysoev.ru>
parents: 1354
diff changeset
1189 return NGX_CONF_OK;
307
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
1190 }
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
1191
4763
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1192 ngx_memzero(&u, sizeof(ngx_url_t));
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1193 u.host = value[1];
307
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
1194
4763
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1195 if (ngx_inet_resolve_host(cf->pool, &u) != NGX_OK) {
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1196 if (u.err) {
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1197 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1198 "%s in debug_connection \"%V\"",
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1199 u.err, &u.host);
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1200 }
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1201
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1202 return NGX_CONF_ERROR;
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1203 }
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1204
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1205 cidr = ngx_array_push_n(&ecf->debug_connection, u.naddrs);
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1206 if (cidr == NULL) {
307
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
1207 return NGX_CONF_ERROR;
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
1208 }
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
1209
4763
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1210 ngx_memzero(cidr, u.naddrs * sizeof(ngx_cidr_t));
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1211
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1212 for (i = 0; i < u.naddrs; i++) {
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1213 cidr[i].family = u.addrs[i].sockaddr->sa_family;
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1214
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1215 switch (cidr[i].family) {
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1216
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1217 #if (NGX_HAVE_INET6)
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1218 case AF_INET6:
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1219 sin6 = (struct sockaddr_in6 *) u.addrs[i].sockaddr;
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1220 cidr[i].u.in6.addr = sin6->sin6_addr;
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1221 ngx_memset(cidr[i].u.in6.mask.s6_addr, 0xff, 16);
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1222 break;
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1223 #endif
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1224
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1225 default: /* AF_INET */
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1226 sin = (struct sockaddr_in *) u.addrs[i].sockaddr;
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1227 cidr[i].u.in.addr = sin->sin_addr.s_addr;
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1228 cidr[i].u.in.mask = 0xffffffff;
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1229 break;
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1230 }
b0b93b2a1f8a When "debug_connection" is configured with a domain name, only the first
Ruslan Ermilov <ru@nginx.com>
parents: 4759
diff changeset
1231 }
307
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
1232
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
1233 #else
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
1234
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
1235 ngx_conf_log_error(NGX_LOG_WARN, cf, 0,
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
1236 "\"debug_connection\" is ignored, you need to rebuild "
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
1237 "nginx using --with-debug option to enable it");
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
1238
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
1239 #endif
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
1240
1380
b590a528fd41 ignore meaningless bits in CIDR and warn about them
Igor Sysoev <igor@sysoev.ru>
parents: 1354
diff changeset
1241 return NGX_CONF_OK;
307
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
1242 }
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
1243
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
1244
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
1245 static void *
4599
f947296f6b2b Fixed master exit if there is no events section (ticket #150).
Maxim Dounin <mdounin@mdounin.ru>
parents: 4593
diff changeset
1246 ngx_event_core_create_conf(ngx_cycle_t *cycle)
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1247 {
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1248 ngx_event_conf_t *ecf;
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1249
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1250 ecf = ngx_palloc(cycle->pool, sizeof(ngx_event_conf_t));
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1251 if (ecf == NULL) {
2912
c7d57b539248 return NULL instead of NGX_CONF_ERROR on a create conf failure
Igor Sysoev <igor@sysoev.ru>
parents: 2771
diff changeset
1252 return NULL;
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1253 }
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1254
323
ba876b26b76d nginx-0.0.3-2004-04-21-22:54:33 import
Igor Sysoev <igor@sysoev.ru>
parents: 311
diff changeset
1255 ecf->connections = NGX_CONF_UNSET_UINT;
358
0a03c921c81d nginx-0.0.7-2004-06-17-21:18:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 356
diff changeset
1256 ecf->use = NGX_CONF_UNSET_UINT;
248
e885208c518b nginx-0.0.2-2004-02-03-00:19:52 import
Igor Sysoev <igor@sysoev.ru>
parents: 245
diff changeset
1257 ecf->multi_accept = NGX_CONF_UNSET;
303
00c5660d2707 nginx-0.0.3-2004-04-01-20:20:53 import
Igor Sysoev <igor@sysoev.ru>
parents: 301
diff changeset
1258 ecf->accept_mutex = NGX_CONF_UNSET;
306
6b91bfbc4123 nginx-0.0.3-2004-04-05-00:32:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 305
diff changeset
1259 ecf->accept_mutex_delay = NGX_CONF_UNSET_MSEC;
209
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1260 ecf->name = (void *) NGX_CONF_UNSET;
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1261
307
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
1262 #if (NGX_DEBUG)
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1263
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1264 if (ngx_array_init(&ecf->debug_connection, cycle->pool, 4,
4613
9ee20e074a2e debug_connection: added the IPv6 and UNIX-domain socket support.
Ruslan Ermilov <ru@nginx.com>
parents: 4599
diff changeset
1265 sizeof(ngx_cidr_t)) == NGX_ERROR)
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1266 {
2912
c7d57b539248 return NULL instead of NGX_CONF_ERROR on a create conf failure
Igor Sysoev <igor@sysoev.ru>
parents: 2771
diff changeset
1267 return NULL;
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1268 }
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1269
307
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
1270 #endif
ce375c313e96 nginx-0.0.3-2004-04-08-19:58:25 import
Igor Sysoev <igor@sysoev.ru>
parents: 306
diff changeset
1271
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1272 return ecf;
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1273 }
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1274
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1275
509
9b8c906f6e63 nginx-0.1.29-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 503
diff changeset
1276 static char *
4599
f947296f6b2b Fixed master exit if there is no events section (ticket #150).
Maxim Dounin <mdounin@mdounin.ru>
parents: 4593
diff changeset
1277 ngx_event_core_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: 90
diff changeset
1278 {
354
eaf1f651cf86 nginx-0.0.7-2004-06-15-11:55:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 352
diff changeset
1279 ngx_event_conf_t *ecf = conf;
467
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1280
501
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1281 #if (NGX_HAVE_EPOLL) && !(NGX_TEST_BUILD_EPOLL)
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1282 int fd;
d4ea69372b94 nginx-0.1.25-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 499
diff changeset
1283 #endif
2062
90312b616162 prepare to allow various number of connections in child processes
Igor Sysoev <igor@sysoev.ru>
parents: 2024
diff changeset
1284 ngx_int_t i;
467
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1285 ngx_module_t *module;
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1286 ngx_event_module_t *event_module;
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1287
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1288 module = NULL;
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1289
469
2ff194b74f1e nginx-0.1.9-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 467
diff changeset
1290 #if (NGX_HAVE_EPOLL) && !(NGX_TEST_BUILD_EPOLL)
467
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1291
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1292 fd = epoll_create(100);
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1293
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1294 if (fd != -1) {
4810
e1d11fb9a71f Explicitly ignore returned value from close() in ngx_event_core_init_conf().
Andrey Belov <defan@nginx.com>
parents: 4763
diff changeset
1295 (void) close(fd);
467
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1296 module = &ngx_epoll_module;
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1297
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1298 } else if (ngx_errno != NGX_ENOSYS) {
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1299 module = &ngx_epoll_module;
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1300 }
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1301
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1302 #endif
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1303
6465
9fd68d5009e3 Fixed --test-build-*.
Ruslan Ermilov <ru@nginx.com>
parents: 6436
diff changeset
1304 #if (NGX_HAVE_DEVPOLL) && !(NGX_TEST_BUILD_DEVPOLL)
467
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1305
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1306 module = &ngx_devpoll_module;
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1307
360
239e37d44a34 nginx-0.0.7-2004-06-18-20:22:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 358
diff changeset
1308 #endif
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1309
469
2ff194b74f1e nginx-0.1.9-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 467
diff changeset
1310 #if (NGX_HAVE_KQUEUE)
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1311
467
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1312 module = &ngx_kqueue_module;
253
b6793bc5034b nginx-0.0.2-2004-02-09-10:46:43 import
Igor Sysoev <igor@sysoev.ru>
parents: 250
diff changeset
1313
467
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1314 #endif
351
af4c6b45a687 nginx-0.0.4-2004-06-10-22:36:57 import
Igor Sysoev <igor@sysoev.ru>
parents: 346
diff changeset
1315
469
2ff194b74f1e nginx-0.1.9-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 467
diff changeset
1316 #if (NGX_HAVE_SELECT)
351
af4c6b45a687 nginx-0.0.4-2004-06-10-22:36:57 import
Igor Sysoev <igor@sysoev.ru>
parents: 346
diff changeset
1317
467
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1318 if (module == NULL) {
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1319 module = &ngx_select_module;
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1320 }
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1321
355
0fb6c53fb135 nginx-0.0.7-2004-06-15-21:47:16 import
Igor Sysoev <igor@sysoev.ru>
parents: 354
diff changeset
1322 #endif
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1323
467
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1324 if (module == NULL) {
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1325 for (i = 0; cycle->modules[i]; i++) {
2062
90312b616162 prepare to allow various number of connections in child processes
Igor Sysoev <igor@sysoev.ru>
parents: 2024
diff changeset
1326
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1327 if (cycle->modules[i]->type != NGX_EVENT_MODULE) {
2062
90312b616162 prepare to allow various number of connections in child processes
Igor Sysoev <igor@sysoev.ru>
parents: 2024
diff changeset
1328 continue;
90312b616162 prepare to allow various number of connections in child processes
Igor Sysoev <igor@sysoev.ru>
parents: 2024
diff changeset
1329 }
90312b616162 prepare to allow various number of connections in child processes
Igor Sysoev <igor@sysoev.ru>
parents: 2024
diff changeset
1330
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1331 event_module = cycle->modules[i]->ctx;
255
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
1332
2062
90312b616162 prepare to allow various number of connections in child processes
Igor Sysoev <igor@sysoev.ru>
parents: 2024
diff changeset
1333 if (ngx_strcmp(event_module->name->data, event_core_name.data) == 0)
90312b616162 prepare to allow various number of connections in child processes
Igor Sysoev <igor@sysoev.ru>
parents: 2024
diff changeset
1334 {
90312b616162 prepare to allow various number of connections in child processes
Igor Sysoev <igor@sysoev.ru>
parents: 2024
diff changeset
1335 continue;
90312b616162 prepare to allow various number of connections in child processes
Igor Sysoev <igor@sysoev.ru>
parents: 2024
diff changeset
1336 }
255
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
1337
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6378
diff changeset
1338 module = cycle->modules[i];
2062
90312b616162 prepare to allow various number of connections in child processes
Igor Sysoev <igor@sysoev.ru>
parents: 2024
diff changeset
1339 break;
255
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
1340 }
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
1341 }
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
1342
467
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1343 if (module == NULL) {
255
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
1344 ngx_log_error(NGX_LOG_EMERG, cycle->log, 0, "no events module found");
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
1345 return NGX_CONF_ERROR;
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
1346 }
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
1347
2062
90312b616162 prepare to allow various number of connections in child processes
Igor Sysoev <igor@sysoev.ru>
parents: 2024
diff changeset
1348 ngx_conf_init_uint_value(ecf->connections, DEFAULT_CONNECTIONS);
467
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1349 cycle->connection_n = ecf->connections;
255
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
1350
663
6d5c1535bb9d nginx-0.3.53-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 641
diff changeset
1351 ngx_conf_init_uint_value(ecf->use, module->ctx_index);
255
e6938ca7331a nginx-0.0.2-2004-02-09-23:47:18 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
1352
467
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1353 event_module = module->ctx;
bbd6b0b4a2b1 nginx-0.1.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 461
diff changeset
1354 ngx_conf_init_ptr_value(ecf->name, event_module->name->data);
209
e1c815be05ae nginx-0.0.1-2003-12-09-18:08:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 205
diff changeset
1355
250
1903c6821958 nginx-0.0.2-2004-02-03-23:27:11 import
Igor Sysoev <igor@sysoev.ru>
parents: 249
diff changeset
1356 ngx_conf_init_value(ecf->multi_accept, 0);
6633
d82b3c344e7e Events: the "accept_mutex" directive is turned off by default.
Valentin Bartenev <vbart@nginx.com>
parents: 6480
diff changeset
1357 ngx_conf_init_value(ecf->accept_mutex, 0);
306
6b91bfbc4123 nginx-0.0.3-2004-04-05-00:32:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 305
diff changeset
1358 ngx_conf_init_msec_value(ecf->accept_mutex_delay, 500);
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1359
573
58475592100c nginx-0.3.8-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 567
diff changeset
1360 return NGX_CONF_OK;
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 90
diff changeset
1361 }