annotate src/core/ngx_connection.h @ 7985:ec2e6893caaa

Simplified sendfile(SF_NODISKIO) usage. Starting with FreeBSD 11, there is no need to use AIO operations to preload data into cache for sendfile(SF_NODISKIO) to work. Instead, sendfile() handles non-blocking loading data from disk by itself. It still can, however, return EBUSY if a page is already being loaded (for example, by a different process). If this happens, we now post an event for the next event loop iteration, so sendfile() is retried "after a short period", as manpage recommends. The limit of the number of EBUSY tolerated without any progress is preserved, but now it does not result in an alert, since on an idle system event loop iteration might be very short and EBUSY can happen many times in a row. Instead, SF_NODISKIO is simply disabled for one call once the limit is reached. With this change, sendfile(SF_NODISKIO) is now used automatically as long as sendfile() is enabled, and no longer requires "aio on;".
author Maxim Dounin <mdounin@mdounin.ru>
date Mon, 27 Dec 2021 19:48:33 +0300
parents fdc3d40979b0
children 32b0ba4855a6 eaf356a35f5d
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: 432
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: 432
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: 4323
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: 432
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: 432
diff changeset
6
da8c5707af39 nginx-0.1.0-2004-09-28-12:34:51 import; set copyright and remove unused files
Igor Sysoev <igor@sysoev.ru>
parents: 432
diff changeset
7
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
8 #ifndef _NGX_CONNECTION_H_INCLUDED_
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
9 #define _NGX_CONNECTION_H_INCLUDED_
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
10
103
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 101
diff changeset
11
100
7ebc8b7fb816 nginx-0.0.1-2003-06-03-19:42:58 import
Igor Sysoev <igor@sysoev.ru>
parents: 99
diff changeset
12 #include <ngx_config.h>
92
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
13 #include <ngx_core.h>
103
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 101
diff changeset
14
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 101
diff changeset
15
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
16 typedef struct ngx_listening_s ngx_listening_t;
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
17
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
18 struct ngx_listening_s {
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
19 ngx_socket_t fd;
103
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 101
diff changeset
20
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
21 struct sockaddr *sockaddr;
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
22 socklen_t socklen; /* size of sockaddr */
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
23 size_t addr_text_max_len;
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
24 ngx_str_t addr_text;
103
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 101
diff changeset
25
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
26 int type;
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
27
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
28 int backlog;
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
29 int rcvbuf;
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
30 int sndbuf;
4323
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 3880
diff changeset
31 #if (NGX_HAVE_KEEPALIVE_TUNABLE)
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 3880
diff changeset
32 int keepidle;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 3880
diff changeset
33 int keepintvl;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 3880
diff changeset
34 int keepcnt;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 3880
diff changeset
35 #endif
103
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 101
diff changeset
36
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
37 /* handler of accepted connection */
547
818fbd4750b9 nginx-0.2.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 543
diff changeset
38 ngx_connection_handler_pt handler;
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
39
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
40 void *servers; /* array of ngx_http_in_addr_t, for example */
103
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 101
diff changeset
41
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
42 ngx_log_t log;
2785
d478379e51ac *) refactor error_log processing: listen socket log might inherit built-in
Igor Sysoev <igor@sysoev.ru>
parents: 2562
diff changeset
43 ngx_log_t *logp;
103
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 101
diff changeset
44
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
45 size_t pool_size;
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
46 /* should be here because of the AcceptEx() preread */
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
47 size_t post_accept_buffer_size;
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
48
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
49 ngx_listening_t *previous;
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
50 ngx_connection_t *connection;
103
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 101
diff changeset
51
7286
d27aa9060c95 Stream: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents: 7007
diff changeset
52 ngx_rbtree_t rbtree;
d27aa9060c95 Stream: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents: 7007
diff changeset
53 ngx_rbtree_node_t sentinel;
d27aa9060c95 Stream: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents: 7007
diff changeset
54
6153
4f6efabcb09b The "reuseport" option of the "listen" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6129
diff changeset
55 ngx_uint_t worker;
4f6efabcb09b The "reuseport" option of the "listen" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6129
diff changeset
56
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
57 unsigned open:1;
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
58 unsigned remain:1;
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
59 unsigned ignore:1;
109
a9bc21d63fe4 nginx-0.0.1-2003-07-02-18:41:17 import
Igor Sysoev <igor@sysoev.ru>
parents: 103
diff changeset
60
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
61 unsigned bound:1; /* already bound */
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
62 unsigned inherited:1; /* inherited from previous process */
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
63 unsigned nonblocking_accept:1;
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 557
diff changeset
64 unsigned listen:1;
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
65 unsigned nonblocking:1;
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
66 unsigned shared:1; /* shared between threads or processes */
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
67 unsigned addr_ntop:1;
6436
8f038068f4bc Stream: UDP proxy.
Roman Arutyunyan <arut@nginx.com>
parents: 6246
diff changeset
68 unsigned wildcard:1;
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
69
6719
cebf5fed00bf Modules compatibility: removed unneeded IPV6_V6ONLY checks.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6602
diff changeset
70 #if (NGX_HAVE_INET6)
4771
bdcdbdf35b52 Core: ipv6only is now on by default.
Ruslan Ermilov <ru@nginx.com>
parents: 4412
diff changeset
71 unsigned ipv6only:1;
2562
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2560
diff changeset
72 #endif
6153
4f6efabcb09b The "reuseport" option of the "listen" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6129
diff changeset
73 unsigned reuseport:1;
4f6efabcb09b The "reuseport" option of the "listen" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6129
diff changeset
74 unsigned add_reuseport:1;
4323
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 3880
diff changeset
75 unsigned keepalive:2;
2562
c352c419be85 ipv6only
Igor Sysoev <igor@sysoev.ru>
parents: 2560
diff changeset
76
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
77 unsigned deferred_accept:1;
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
78 unsigned delete_deferred:1;
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
79 unsigned add_deferred:1;
6721
48bab8b83f4e Modules compatibility: removed two NGX_HAVE_DEFERRED_ACCEPT checks.
Ruslan Ermilov <ru@nginx.com>
parents: 6720
diff changeset
80 #if (NGX_HAVE_DEFERRED_ACCEPT && defined SO_ACCEPTFILTER)
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
81 char *accept_filter;
523
2019117e6b38 nginx-0.1.36-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 521
diff changeset
82 #endif
3676
4430d110293e listen setfib=X
Igor Sysoev <igor@sysoev.ru>
parents: 3263
diff changeset
83 #if (NGX_HAVE_SETFIB)
4430d110293e listen setfib=X
Igor Sysoev <igor@sysoev.ru>
parents: 3263
diff changeset
84 int setfib;
4430d110293e listen setfib=X
Igor Sysoev <igor@sysoev.ru>
parents: 3263
diff changeset
85 #endif
419
47709bff4468 nginx-0.0.10-2004-09-09-19:40:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 417
diff changeset
86
5456
692afcea9d0d Added support for TCP_FASTOPEN supported in Linux >= 3.7.1.
Mathew Rodley <mathew@rodley.com.au>
parents: 5104
diff changeset
87 #if (NGX_HAVE_TCP_FASTOPEN)
692afcea9d0d Added support for TCP_FASTOPEN supported in Linux >= 3.7.1.
Mathew Rodley <mathew@rodley.com.au>
parents: 5104
diff changeset
88 int fastopen;
692afcea9d0d Added support for TCP_FASTOPEN supported in Linux >= 3.7.1.
Mathew Rodley <mathew@rodley.com.au>
parents: 5104
diff changeset
89 #endif
692afcea9d0d Added support for TCP_FASTOPEN supported in Linux >= 3.7.1.
Mathew Rodley <mathew@rodley.com.au>
parents: 5104
diff changeset
90
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
91 };
92
19cc647ecd91 nginx-0.0.1-2003-05-20-19:37:55 import
Igor Sysoev <igor@sysoev.ru>
parents: 91
diff changeset
92
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
93
256
8e39cab6abd5 nginx-0.0.2-2004-02-10-19:23:38 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
94 typedef enum {
6474
Ruslan Ermilov <ru@nginx.com>
parents: 6436
diff changeset
95 NGX_ERROR_ALERT = 0,
Ruslan Ermilov <ru@nginx.com>
parents: 6436
diff changeset
96 NGX_ERROR_ERR,
Ruslan Ermilov <ru@nginx.com>
parents: 6436
diff changeset
97 NGX_ERROR_INFO,
Ruslan Ermilov <ru@nginx.com>
parents: 6436
diff changeset
98 NGX_ERROR_IGNORE_ECONNRESET,
Ruslan Ermilov <ru@nginx.com>
parents: 6436
diff changeset
99 NGX_ERROR_IGNORE_EINVAL
256
8e39cab6abd5 nginx-0.0.2-2004-02-10-19:23:38 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
100 } ngx_connection_log_error_e;
8e39cab6abd5 nginx-0.0.2-2004-02-10-19:23:38 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
101
8e39cab6abd5 nginx-0.0.2-2004-02-10-19:23:38 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
102
344
e366ba5db8f8 nginx-0.0.3-2004-06-01-10:04:46 import
Igor Sysoev <igor@sysoev.ru>
parents: 343
diff changeset
103 typedef enum {
6474
Ruslan Ermilov <ru@nginx.com>
parents: 6436
diff changeset
104 NGX_TCP_NODELAY_UNSET = 0,
Ruslan Ermilov <ru@nginx.com>
parents: 6436
diff changeset
105 NGX_TCP_NODELAY_SET,
Ruslan Ermilov <ru@nginx.com>
parents: 6436
diff changeset
106 NGX_TCP_NODELAY_DISABLED
483
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
107 } ngx_connection_tcp_nodelay_e;
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
108
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
109
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
110 typedef enum {
6474
Ruslan Ermilov <ru@nginx.com>
parents: 6436
diff changeset
111 NGX_TCP_NOPUSH_UNSET = 0,
Ruslan Ermilov <ru@nginx.com>
parents: 6436
diff changeset
112 NGX_TCP_NOPUSH_SET,
Ruslan Ermilov <ru@nginx.com>
parents: 6436
diff changeset
113 NGX_TCP_NOPUSH_DISABLED
344
e366ba5db8f8 nginx-0.0.3-2004-06-01-10:04:46 import
Igor Sysoev <igor@sysoev.ru>
parents: 343
diff changeset
114 } ngx_connection_tcp_nopush_e;
e366ba5db8f8 nginx-0.0.3-2004-06-01-10:04:46 import
Igor Sysoev <igor@sysoev.ru>
parents: 343
diff changeset
115
e366ba5db8f8 nginx-0.0.3-2004-06-01-10:04:46 import
Igor Sysoev <igor@sysoev.ru>
parents: 343
diff changeset
116
829
362d156f0278 high level HTTP buffered flags should be on per-subrequest basis,
Igor Sysoev <igor@sysoev.ru>
parents: 641
diff changeset
117 #define NGX_LOWLEVEL_BUFFERED 0x0f
362d156f0278 high level HTTP buffered flags should be on per-subrequest basis,
Igor Sysoev <igor@sysoev.ru>
parents: 641
diff changeset
118 #define NGX_SSL_BUFFERED 0x01
6246
257b51c37c5a The HTTP/2 implementation (RFC 7240, 7241).
Valentin Bartenev <vbart@nginx.com>
parents: 6220
diff changeset
119 #define NGX_HTTP_V2_BUFFERED 0x02
597
9262f520ce21 nginx-0.3.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
120
9262f520ce21 nginx-0.3.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
121
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
122 struct ngx_connection_s {
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 393
diff changeset
123 void *data;
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 393
diff changeset
124 ngx_event_t *read;
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 393
diff changeset
125 ngx_event_t *write;
103
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 101
diff changeset
126
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 393
diff changeset
127 ngx_socket_t fd;
103
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 101
diff changeset
128
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 393
diff changeset
129 ngx_recv_pt recv;
539
371c1cee100d nginx-0.1.44-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 537
diff changeset
130 ngx_send_pt send;
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
131 ngx_recv_chain_pt recv_chain;
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 393
diff changeset
132 ngx_send_chain_pt send_chain;
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 393
diff changeset
133
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 393
diff changeset
134 ngx_listening_t *listening;
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
135
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 393
diff changeset
136 off_t sent;
8
708f8bb772ec nginx-0.0.1-2002-09-02-18:48:24 import
Igor Sysoev <igor@sysoev.ru>
parents: 7
diff changeset
137
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 393
diff changeset
138 ngx_log_t *log;
57
a499e0d1f16e nginx-0.0.1-2003-01-30-10:28:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 44
diff changeset
139
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 393
diff changeset
140 ngx_pool_t *pool;
103
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 101
diff changeset
141
6436
8f038068f4bc Stream: UDP proxy.
Roman Arutyunyan <arut@nginx.com>
parents: 6246
diff changeset
142 int type;
8f038068f4bc Stream: UDP proxy.
Roman Arutyunyan <arut@nginx.com>
parents: 6246
diff changeset
143
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 393
diff changeset
144 struct sockaddr *sockaddr;
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 393
diff changeset
145 socklen_t socklen;
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 393
diff changeset
146 ngx_str_t addr_text;
103
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 101
diff changeset
147
7590
06b01840bd42 Core: moved PROXY protocol fields out of ngx_connection_t.
Roman Arutyunyan <arut@nginx.com>
parents: 7315
diff changeset
148 ngx_proxy_protocol_t *proxy_protocol;
5605
3a72b1805c52 Added server-side support for PROXY protocol v1 (ticket #355).
Roman Arutyunyan <arut@nginx.com>
parents: 5513
diff changeset
149
6735
e38e9c50a40e Modules compatibility: compatibility with NGX_HTTP_SSL.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6734
diff changeset
150 #if (NGX_SSL || NGX_COMPAT)
547
818fbd4750b9 nginx-0.2.2-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 543
diff changeset
151 ngx_ssl_connection_t *ssl;
392
d1222d46b3f9 nginx-0.0.7-2004-07-15-00:07:58 import
Igor Sysoev <igor@sysoev.ru>
parents: 380
diff changeset
152 #endif
d1222d46b3f9 nginx-0.0.7-2004-07-15-00:07:58 import
Igor Sysoev <igor@sysoev.ru>
parents: 380
diff changeset
153
7286
d27aa9060c95 Stream: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents: 7007
diff changeset
154 ngx_udp_connection_t *udp;
d27aa9060c95 Stream: udp streams.
Roman Arutyunyan <arut@nginx.com>
parents: 7007
diff changeset
155
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 393
diff changeset
156 struct sockaddr *local_sockaddr;
5463
1ab1cf63f885 Core: keep the length of the local sockaddr.
Ruslan Ermilov <ru@nginx.com>
parents: 5456
diff changeset
157 socklen_t local_socklen;
103
6dfda4cf5200 nginx-0.0.1-2003-06-11-19:28:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 101
diff changeset
158
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 393
diff changeset
159 ngx_buf_t *buffer;
8
708f8bb772ec nginx-0.0.1-2002-09-02-18:48:24 import
Igor Sysoev <igor@sysoev.ru>
parents: 7
diff changeset
160
3880
e3cb8e27e413 reuse keepalive connections if there are no free worker connections
Igor Sysoev <igor@sysoev.ru>
parents: 3676
diff changeset
161 ngx_queue_t queue;
e3cb8e27e413 reuse keepalive connections if there are no free worker connections
Igor Sysoev <igor@sysoev.ru>
parents: 3676
diff changeset
162
495
fc9909c369b2 nginx-0.1.22-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 493
diff changeset
163 ngx_atomic_uint_t number;
26
53cb81681040 nginx-0.0.1-2002-12-15-09:25:09 import
Igor Sysoev <igor@sysoev.ru>
parents: 24
diff changeset
164
7820
fdc3d40979b0 Introduced the "keepalive_time" directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7762
diff changeset
165 ngx_msec_t start_time;
2888
512d164a8348 keepalive_requests
Igor Sysoev <igor@sysoev.ru>
parents: 2854
diff changeset
166 ngx_uint_t requests;
512d164a8348 keepalive_requests
Igor Sysoev <igor@sysoev.ru>
parents: 2854
diff changeset
167
829
362d156f0278 high level HTTP buffered flags should be on per-subrequest basis,
Igor Sysoev <igor@sysoev.ru>
parents: 641
diff changeset
168 unsigned buffered:8;
597
9262f520ce21 nginx-0.3.20-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 583
diff changeset
169
2560
a7443674e429 ignore EINVAL from setsockopt() on Solaris
Igor Sysoev <igor@sysoev.ru>
parents: 2512
diff changeset
170 unsigned log_error:3; /* ngx_connection_log_error_e */
256
8e39cab6abd5 nginx-0.0.2-2004-02-10-19:23:38 import
Igor Sysoev <igor@sysoev.ru>
parents: 253
diff changeset
171
396
6f3b20c1ac50 nginx-0.0.7-2004-07-18-23:11:20 import
Igor Sysoev <igor@sysoev.ru>
parents: 393
diff changeset
172 unsigned timedout:1;
583
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
173 unsigned error:1;
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
174 unsigned destroyed:1;
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
175
1135
03f1133f24e8 close keep-alive connections in the shuting down processes
Igor Sysoev <igor@sysoev.ru>
parents: 829
diff changeset
176 unsigned idle:1;
3880
e3cb8e27e413 reuse keepalive connections if there are no free worker connections
Igor Sysoev <igor@sysoev.ru>
parents: 3676
diff changeset
177 unsigned reusable:1;
1135
03f1133f24e8 close keep-alive connections in the shuting down processes
Igor Sysoev <igor@sysoev.ru>
parents: 829
diff changeset
178 unsigned close:1;
6436
8f038068f4bc Stream: UDP proxy.
Roman Arutyunyan <arut@nginx.com>
parents: 6246
diff changeset
179 unsigned shared:1;
1135
03f1133f24e8 close keep-alive connections in the shuting down processes
Igor Sysoev <igor@sysoev.ru>
parents: 829
diff changeset
180
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
181 unsigned sendfile:1;
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
182 unsigned sndlowat:1;
483
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
183 unsigned tcp_nodelay:2; /* ngx_connection_tcp_nodelay_e */
621229427cba nginx-0.1.16-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 479
diff changeset
184 unsigned tcp_nopush:2; /* ngx_connection_tcp_nopush_e */
452
23fb87bddda1 nginx-0.1.1-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 444
diff changeset
185
5513
311803b21504 SPDY: body filter was replaced by c->send_chain() function.
Valentin Bartenev <vbart@nginx.com>
parents: 5498
diff changeset
186 unsigned need_last_buf:1;
311803b21504 SPDY: body filter was replaced by c->send_chain() function.
Valentin Bartenev <vbart@nginx.com>
parents: 5498
diff changeset
187
7985
ec2e6893caaa Simplified sendfile(SF_NODISKIO) usage.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7820
diff changeset
188 #if (NGX_HAVE_SENDFILE_NODISKIO || NGX_COMPAT)
5498
d39a69427056 Allowed up to two EBUSY errors from sendfile().
Maxim Dounin <mdounin@mdounin.ru>
parents: 5463
diff changeset
189 unsigned busy_count:2;
3065
113cd532b328 aio sendfile
Igor Sysoev <igor@sysoev.ru>
parents: 2888
diff changeset
190 #endif
113cd532b328 aio sendfile
Igor Sysoev <igor@sysoev.ru>
parents: 2888
diff changeset
191
6733
adc2414856b1 Modules compatibility: compatibility with NGX_THREADS.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6721
diff changeset
192 #if (NGX_THREADS || NGX_COMPAT)
6023
b550563ef96e Added support for offloading Linux sendfile() in thread pools.
Valentin Bartenev <vbart@nginx.com>
parents: 6016
diff changeset
193 ngx_thread_task_t *sendfile_task;
b550563ef96e Added support for offloading Linux sendfile() in thread pools.
Valentin Bartenev <vbart@nginx.com>
parents: 6016
diff changeset
194 #endif
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
195 };
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
196
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
197
6129
187aa751ad62 Core: the ngx_set_connection_log() macro.
Vladimir Homutov <vl@nginx.com>
parents: 6031
diff changeset
198 #define ngx_set_connection_log(c, l) \
187aa751ad62 Core: the ngx_set_connection_log() macro.
Vladimir Homutov <vl@nginx.com>
parents: 6031
diff changeset
199 \
187aa751ad62 Core: the ngx_set_connection_log() macro.
Vladimir Homutov <vl@nginx.com>
parents: 6031
diff changeset
200 c->log->file = l->file; \
187aa751ad62 Core: the ngx_set_connection_log() macro.
Vladimir Homutov <vl@nginx.com>
parents: 6031
diff changeset
201 c->log->next = l->next; \
187aa751ad62 Core: the ngx_set_connection_log() macro.
Vladimir Homutov <vl@nginx.com>
parents: 6031
diff changeset
202 c->log->writer = l->writer; \
187aa751ad62 Core: the ngx_set_connection_log() macro.
Vladimir Homutov <vl@nginx.com>
parents: 6031
diff changeset
203 c->log->wdata = l->wdata; \
187aa751ad62 Core: the ngx_set_connection_log() macro.
Vladimir Homutov <vl@nginx.com>
parents: 6031
diff changeset
204 if (!(c->log->log_level & NGX_LOG_DEBUG_CONNECTION)) { \
187aa751ad62 Core: the ngx_set_connection_log() macro.
Vladimir Homutov <vl@nginx.com>
parents: 6031
diff changeset
205 c->log->log_level = l->log_level; \
187aa751ad62 Core: the ngx_set_connection_log() macro.
Vladimir Homutov <vl@nginx.com>
parents: 6031
diff changeset
206 }
187aa751ad62 Core: the ngx_set_connection_log() macro.
Vladimir Homutov <vl@nginx.com>
parents: 6031
diff changeset
207
187aa751ad62 Core: the ngx_set_connection_log() macro.
Vladimir Homutov <vl@nginx.com>
parents: 6031
diff changeset
208
6555
090a78da4f88 Belatedly changed the ngx_create_listening() prototype.
Ruslan Ermilov <ru@nginx.com>
parents: 6532
diff changeset
209 ngx_listening_t *ngx_create_listening(ngx_conf_t *cf, struct sockaddr *sockaddr,
2806
a445bd4eb571 ngx_create_listening()
Igor Sysoev <igor@sysoev.ru>
parents: 2802
diff changeset
210 socklen_t socklen);
7315
e7b2b907c0f8 Events: moved sockets cloning to ngx_event_init_conf().
Maxim Dounin <mdounin@mdounin.ru>
parents: 7286
diff changeset
211 ngx_int_t ngx_clone_listening(ngx_cycle_t *cycle, ngx_listening_t *ls);
219
f57597ec5249 nginx-0.0.1-2004-01-06-19:49:34 import
Igor Sysoev <igor@sysoev.ru>
parents: 218
diff changeset
212 ngx_int_t ngx_set_inherited_sockets(ngx_cycle_t *cycle);
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 216
diff changeset
213 ngx_int_t ngx_open_listening_sockets(ngx_cycle_t *cycle);
2802
44b2081c015a use correct name
Igor Sysoev <igor@sysoev.ru>
parents: 2800
diff changeset
214 void ngx_configure_listening_sockets(ngx_cycle_t *cycle);
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 216
diff changeset
215 void ngx_close_listening_sockets(ngx_cycle_t *cycle);
417
0526206251f6 nginx-0.0.10-2004-09-07-19:29:22 import
Igor Sysoev <igor@sysoev.ru>
parents: 399
diff changeset
216 void ngx_close_connection(ngx_connection_t *c);
6220
5e6142609e48 Core: idle connections now closed only once on exiting.
Valentin Bartenev <vbart@nginx.com>
parents: 6153
diff changeset
217 void ngx_close_idle_connections(ngx_cycle_t *cycle);
2854
d788477f5a67 ngx_connection_local_sockaddr()
Igor Sysoev <igor@sysoev.ru>
parents: 2806
diff changeset
218 ngx_int_t ngx_connection_local_sockaddr(ngx_connection_t *c, ngx_str_t *s,
d788477f5a67 ngx_connection_local_sockaddr()
Igor Sysoev <igor@sysoev.ru>
parents: 2806
diff changeset
219 ngx_uint_t port);
7007
ed1101bbf19f Introduced ngx_tcp_nodelay().
Ruslan Ermilov <ru@nginx.com>
parents: 6735
diff changeset
220 ngx_int_t ngx_tcp_nodelay(ngx_connection_t *c);
253
b6793bc5034b nginx-0.0.2-2004-02-09-10:46:43 import
Igor Sysoev <igor@sysoev.ru>
parents: 219
diff changeset
221 ngx_int_t ngx_connection_error(ngx_connection_t *c, ngx_err_t err, char *text);
218
05592fd7a436 nginx-0.0.1-2004-01-05-23:55:48 import
Igor Sysoev <igor@sysoev.ru>
parents: 216
diff changeset
222
543
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
223 ngx_connection_t *ngx_get_connection(ngx_socket_t s, ngx_log_t *log);
511a89da35ad nginx-0.2.0-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
224 void ngx_free_connection(ngx_connection_t *c);
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
225
3880
e3cb8e27e413 reuse keepalive connections if there are no free worker connections
Igor Sysoev <igor@sysoev.ru>
parents: 3676
diff changeset
226 void ngx_reusable_connection(ngx_connection_t *c, ngx_uint_t reusable);
91
637625a2acdb nginx-0.0.1-2003-05-19-20:39:14 import
Igor Sysoev <igor@sysoev.ru>
parents: 87
diff changeset
227
0
4eff17414a43 nginx-0.0.1-2002-08-06-20:39:45 import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
228 #endif /* _NGX_CONNECTION_H_INCLUDED_ */