annotate src/stream/ngx_stream.h @ 7660:d33e17499088

Version bump.
author Maxim Dounin <mdounin@mdounin.ru>
date Tue, 26 May 2020 22:03:00 +0300
parents 9606d93aa586
children 2ab7b55ae4a0 893b3313f53c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6115
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
1
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
2 /*
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
3 * Copyright (C) Roman Arutyunyan
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
4 * Copyright (C) Nginx, Inc.
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
5 */
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
6
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
7
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
8 #ifndef _NGX_STREAM_H_INCLUDED_
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
9 #define _NGX_STREAM_H_INCLUDED_
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
10
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
11
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
12 #include <ngx_config.h>
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
13 #include <ngx_core.h>
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
14
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
15 #if (NGX_STREAM_SSL)
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
16 #include <ngx_stream_ssl_module.h>
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
17 #endif
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
18
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
19
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
20 typedef struct ngx_stream_session_s ngx_stream_session_t;
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
21
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
22
6607
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
23 #include <ngx_stream_variables.h>
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
24 #include <ngx_stream_script.h>
6115
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
25 #include <ngx_stream_upstream.h>
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
26 #include <ngx_stream_upstream_round_robin.h>
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
27
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
28
6674
38143d1abdec Stream: the $status variable.
Roman Arutyunyan <arut@nginx.com>
parents: 6669
diff changeset
29 #define NGX_STREAM_OK 200
6680
7357abd1fa8c Stream: the "proxy_protocol" parameter of the "listen" directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 6679
diff changeset
30 #define NGX_STREAM_BAD_REQUEST 400
6674
38143d1abdec Stream: the $status variable.
Roman Arutyunyan <arut@nginx.com>
parents: 6669
diff changeset
31 #define NGX_STREAM_FORBIDDEN 403
38143d1abdec Stream: the $status variable.
Roman Arutyunyan <arut@nginx.com>
parents: 6669
diff changeset
32 #define NGX_STREAM_INTERNAL_SERVER_ERROR 500
38143d1abdec Stream: the $status variable.
Roman Arutyunyan <arut@nginx.com>
parents: 6669
diff changeset
33 #define NGX_STREAM_BAD_GATEWAY 502
38143d1abdec Stream: the $status variable.
Roman Arutyunyan <arut@nginx.com>
parents: 6669
diff changeset
34 #define NGX_STREAM_SERVICE_UNAVAILABLE 503
38143d1abdec Stream: the $status variable.
Roman Arutyunyan <arut@nginx.com>
parents: 6669
diff changeset
35
38143d1abdec Stream: the $status variable.
Roman Arutyunyan <arut@nginx.com>
parents: 6669
diff changeset
36
6115
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
37 typedef struct {
6607
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
38 void **main_conf;
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
39 void **srv_conf;
6115
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
40 } ngx_stream_conf_ctx_t;
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
41
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
42
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
43 typedef struct {
7478
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 6975
diff changeset
44 struct sockaddr *sockaddr;
6607
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
45 socklen_t socklen;
7478
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 6975
diff changeset
46 ngx_str_t addr_text;
6115
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
47
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
48 /* server ctx */
6607
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
49 ngx_stream_conf_ctx_t *ctx;
6115
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
50
6607
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
51 unsigned bind:1;
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
52 unsigned wildcard:1;
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
53 unsigned ssl:1;
6719
cebf5fed00bf Modules compatibility: removed unneeded IPV6_V6ONLY checks.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6711
diff changeset
54 #if (NGX_HAVE_INET6)
6607
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
55 unsigned ipv6only:1;
6115
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
56 #endif
6607
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
57 unsigned reuseport:1;
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
58 unsigned so_keepalive:2;
6680
7357abd1fa8c Stream: the "proxy_protocol" parameter of the "listen" directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 6679
diff changeset
59 unsigned proxy_protocol:1;
6115
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
60 #if (NGX_HAVE_KEEPALIVE_TUNABLE)
6607
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
61 int tcp_keepidle;
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
62 int tcp_keepintvl;
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
63 int tcp_keepcnt;
6115
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
64 #endif
6607
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
65 int backlog;
6975
d7ce41bdf050 Stream: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6899
diff changeset
66 int rcvbuf;
d7ce41bdf050 Stream: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6899
diff changeset
67 int sndbuf;
6607
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
68 int type;
6115
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
69 } ngx_stream_listen_t;
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
70
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
71
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
72 typedef struct {
6607
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
73 ngx_stream_conf_ctx_t *ctx;
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
74 ngx_str_t addr_text;
6680
7357abd1fa8c Stream: the "proxy_protocol" parameter of the "listen" directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 6679
diff changeset
75 unsigned ssl:1;
7357abd1fa8c Stream: the "proxy_protocol" parameter of the "listen" directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 6679
diff changeset
76 unsigned proxy_protocol:1;
6115
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
77 } ngx_stream_addr_conf_t;
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
78
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
79 typedef struct {
6607
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
80 in_addr_t addr;
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
81 ngx_stream_addr_conf_t conf;
6115
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
82 } ngx_stream_in_addr_t;
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
83
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
84
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
85 #if (NGX_HAVE_INET6)
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
86
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
87 typedef struct {
6607
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
88 struct in6_addr addr6;
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
89 ngx_stream_addr_conf_t conf;
6115
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
90 } ngx_stream_in6_addr_t;
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
91
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
92 #endif
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
93
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
94
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
95 typedef struct {
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
96 /* ngx_stream_in_addr_t or ngx_stream_in6_addr_t */
6607
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
97 void *addrs;
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
98 ngx_uint_t naddrs;
6115
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
99 } ngx_stream_port_t;
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
100
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
101
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
102 typedef struct {
6607
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
103 int family;
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
104 int type;
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
105 in_port_t port;
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
106 ngx_array_t addrs; /* array of ngx_stream_conf_addr_t */
6115
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
107 } ngx_stream_conf_port_t;
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
108
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
109
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
110 typedef struct {
6607
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
111 ngx_stream_listen_t opt;
6115
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
112 } ngx_stream_conf_addr_t;
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
113
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
114
6693
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
115 typedef enum {
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
116 NGX_STREAM_POST_ACCEPT_PHASE = 0,
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
117 NGX_STREAM_PREACCESS_PHASE,
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
118 NGX_STREAM_ACCESS_PHASE,
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
119 NGX_STREAM_SSL_PHASE,
6694
ea9dfe2f62e7 Stream: preread phase.
Vladimir Homutov <vl@nginx.com>
parents: 6693
diff changeset
120 NGX_STREAM_PREREAD_PHASE,
6693
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
121 NGX_STREAM_CONTENT_PHASE,
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
122 NGX_STREAM_LOG_PHASE
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
123 } ngx_stream_phases;
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
124
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
125
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
126 typedef struct ngx_stream_phase_handler_s ngx_stream_phase_handler_t;
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
127
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
128 typedef ngx_int_t (*ngx_stream_phase_handler_pt)(ngx_stream_session_t *s,
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
129 ngx_stream_phase_handler_t *ph);
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
130 typedef ngx_int_t (*ngx_stream_handler_pt)(ngx_stream_session_t *s);
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
131 typedef void (*ngx_stream_content_handler_pt)(ngx_stream_session_t *s);
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
132
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
133
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
134 struct ngx_stream_phase_handler_s {
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
135 ngx_stream_phase_handler_pt checker;
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
136 ngx_stream_handler_pt handler;
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
137 ngx_uint_t next;
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
138 };
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
139
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
140
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
141 typedef struct {
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
142 ngx_stream_phase_handler_t *handlers;
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
143 } ngx_stream_phase_engine_t;
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
144
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
145
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
146 typedef struct {
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
147 ngx_array_t handlers;
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
148 } ngx_stream_phase_t;
6175
8807a2369b1a Stream: access module.
Vladimir Homutov <vl@nginx.com>
parents: 6174
diff changeset
149
8807a2369b1a Stream: access module.
Vladimir Homutov <vl@nginx.com>
parents: 6174
diff changeset
150
6115
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
151 typedef struct {
6607
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
152 ngx_array_t servers; /* ngx_stream_core_srv_conf_t */
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
153 ngx_array_t listen; /* ngx_stream_listen_t */
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
154
6693
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
155 ngx_stream_phase_engine_t phase_engine;
6607
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
156
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
157 ngx_hash_t variables_hash;
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
158
6899
d2b2ff157da5 Variables: generic prefix variables.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 6736
diff changeset
159 ngx_array_t variables; /* ngx_stream_variable_t */
d2b2ff157da5 Variables: generic prefix variables.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 6736
diff changeset
160 ngx_array_t prefix_variables; /* ngx_stream_variable_t */
6607
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
161 ngx_uint_t ncaptures;
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
162
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
163 ngx_uint_t variables_hash_max_size;
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
164 ngx_uint_t variables_hash_bucket_size;
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
165
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
166 ngx_hash_keys_arrays_t *variables_keys;
6693
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
167
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
168 ngx_stream_phase_t phases[NGX_STREAM_LOG_PHASE + 1];
6115
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
169 } ngx_stream_core_main_conf_t;
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
170
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
171
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
172 typedef struct {
6693
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
173 ngx_stream_content_handler_pt handler;
6607
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
174
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
175 ngx_stream_conf_ctx_t *ctx;
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
176
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
177 u_char *file_name;
6656
a2f57dfa65a9 Fixed wrong type of the "line" field.
Roman Arutyunyan <arut@nginx.com>
parents: 6618
diff changeset
178 ngx_uint_t line;
6607
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
179
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
180 ngx_flag_t tcp_nodelay;
6694
ea9dfe2f62e7 Stream: preread phase.
Vladimir Homutov <vl@nginx.com>
parents: 6693
diff changeset
181 size_t preread_buffer_size;
ea9dfe2f62e7 Stream: preread phase.
Vladimir Homutov <vl@nginx.com>
parents: 6693
diff changeset
182 ngx_msec_t preread_timeout;
6607
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
183
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
184 ngx_log_t *error_log;
6618
070c31a482e6 Stream: resolver.
Vladimir Homutov <vl@nginx.com>
parents: 6607
diff changeset
185
070c31a482e6 Stream: resolver.
Vladimir Homutov <vl@nginx.com>
parents: 6607
diff changeset
186 ngx_msec_t resolver_timeout;
070c31a482e6 Stream: resolver.
Vladimir Homutov <vl@nginx.com>
parents: 6607
diff changeset
187 ngx_resolver_t *resolver;
6657
3d5202c71f94 Ensure "listen" exists in a mail or stream server (ticket #1049).
Roman Arutyunyan <arut@nginx.com>
parents: 6656
diff changeset
188
6680
7357abd1fa8c Stream: the "proxy_protocol" parameter of the "listen" directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 6679
diff changeset
189 ngx_msec_t proxy_protocol_timeout;
7357abd1fa8c Stream: the "proxy_protocol" parameter of the "listen" directive.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 6679
diff changeset
190
6657
3d5202c71f94 Ensure "listen" exists in a mail or stream server (ticket #1049).
Roman Arutyunyan <arut@nginx.com>
parents: 6656
diff changeset
191 ngx_uint_t listen; /* unsigned listen:1; */
6115
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
192 } ngx_stream_core_srv_conf_t;
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
193
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
194
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
195 struct ngx_stream_session_s {
6607
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
196 uint32_t signature; /* "STRM" */
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
197
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
198 ngx_connection_t *connection;
6115
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
199
6607
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
200 off_t received;
6669
164a0824ce20 Stream: the $session_time variable.
Vladimir Homutov <vl@nginx.com>
parents: 6657
diff changeset
201 time_t start_sec;
164a0824ce20 Stream: the $session_time variable.
Vladimir Homutov <vl@nginx.com>
parents: 6657
diff changeset
202 ngx_msec_t start_msec;
6115
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
203
6607
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
204 ngx_log_handler_pt log_handler;
6115
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
205
6607
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
206 void **ctx;
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
207 void **main_conf;
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
208 void **srv_conf;
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
209
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
210 ngx_stream_upstream_t *upstream;
6675
ab9b4fd8c5b7 Stream: the $upstream_addr variable.
Vladimir Homutov <vl@nginx.com>
parents: 6674
diff changeset
211 ngx_array_t *upstream_states;
ab9b4fd8c5b7 Stream: the $upstream_addr variable.
Vladimir Homutov <vl@nginx.com>
parents: 6674
diff changeset
212 /* of ngx_stream_upstream_state_t */
6607
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
213 ngx_stream_variable_value_t *variables;
6115
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
214
6607
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
215 #if (NGX_PCRE)
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
216 ngx_uint_t ncaptures;
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
217 int *captures;
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
218 u_char *captures_data;
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
219 #endif
6674
38143d1abdec Stream: the $status variable.
Roman Arutyunyan <arut@nginx.com>
parents: 6669
diff changeset
220
6693
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
221 ngx_int_t phase_handler;
6674
38143d1abdec Stream: the $status variable.
Roman Arutyunyan <arut@nginx.com>
parents: 6669
diff changeset
222 ngx_uint_t status;
6679
40e8ce405859 Stream: postpone session initialization under accept mutex.
Dmitry Volyntsev <xeioex@nginx.com>
parents: 6678
diff changeset
223
6710
3ab8736958cb Modules compatibility: health check fields.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6694
diff changeset
224 unsigned ssl:1;
3ab8736958cb Modules compatibility: health check fields.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6694
diff changeset
225
6711
90a03b1dc4db Modules compatibility: status fields.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6710
diff changeset
226 unsigned stat_processing:1;
90a03b1dc4db Modules compatibility: status fields.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6710
diff changeset
227
6710
3ab8736958cb Modules compatibility: health check fields.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6694
diff changeset
228 unsigned health_check:1;
7595
9606d93aa586 Limit conn: $limit_conn_status variable.
Roman Arutyunyan <arut@nginx.com>
parents: 7478
diff changeset
229
9606d93aa586 Limit conn: $limit_conn_status variable.
Roman Arutyunyan <arut@nginx.com>
parents: 7478
diff changeset
230 unsigned limit_conn_status:2;
6115
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
231 };
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
232
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
233
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
234 typedef struct {
6607
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
235 ngx_int_t (*preconfiguration)(ngx_conf_t *cf);
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
236 ngx_int_t (*postconfiguration)(ngx_conf_t *cf);
6174
68c106e6fa0a Stream: added postconfiguration method to stream modules.
Vladimir Homutov <vl@nginx.com>
parents: 6172
diff changeset
237
6607
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
238 void *(*create_main_conf)(ngx_conf_t *cf);
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
239 char *(*init_main_conf)(ngx_conf_t *cf, void *conf);
6115
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
240
6607
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
241 void *(*create_srv_conf)(ngx_conf_t *cf);
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
242 char *(*merge_srv_conf)(ngx_conf_t *cf, void *prev,
c70b7f4537e1 Stream: variables and script.
Vladimir Homutov <vl@nginx.com>
parents: 6606
diff changeset
243 void *conf);
6115
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
244 } ngx_stream_module_t;
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
245
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
246
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
247 #define NGX_STREAM_MODULE 0x4d525453 /* "STRM" */
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
248
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
249 #define NGX_STREAM_MAIN_CONF 0x02000000
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
250 #define NGX_STREAM_SRV_CONF 0x04000000
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
251 #define NGX_STREAM_UPS_CONF 0x08000000
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
252
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
253
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
254 #define NGX_STREAM_MAIN_CONF_OFFSET offsetof(ngx_stream_conf_ctx_t, main_conf)
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
255 #define NGX_STREAM_SRV_CONF_OFFSET offsetof(ngx_stream_conf_ctx_t, srv_conf)
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
256
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
257
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
258 #define ngx_stream_get_module_ctx(s, module) (s)->ctx[module.ctx_index]
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
259 #define ngx_stream_set_ctx(s, c, module) s->ctx[module.ctx_index] = c;
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
260 #define ngx_stream_delete_ctx(s, module) s->ctx[module.ctx_index] = NULL;
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
261
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
262
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
263 #define ngx_stream_get_module_main_conf(s, module) \
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
264 (s)->main_conf[module.ctx_index]
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
265 #define ngx_stream_get_module_srv_conf(s, module) \
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
266 (s)->srv_conf[module.ctx_index]
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
267
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
268 #define ngx_stream_conf_get_module_main_conf(cf, module) \
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
269 ((ngx_stream_conf_ctx_t *) cf->ctx)->main_conf[module.ctx_index]
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
270 #define ngx_stream_conf_get_module_srv_conf(cf, module) \
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
271 ((ngx_stream_conf_ctx_t *) cf->ctx)->srv_conf[module.ctx_index]
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
272
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
273 #define ngx_stream_cycle_get_module_main_conf(cycle, module) \
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
274 (cycle->conf_ctx[ngx_stream_module.index] ? \
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
275 ((ngx_stream_conf_ctx_t *) cycle->conf_ctx[ngx_stream_module.index]) \
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
276 ->main_conf[module.ctx_index]: \
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
277 NULL)
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
278
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
279
6692
56fc55e32f23 Stream: filters.
Roman Arutyunyan <arut@nginx.com>
parents: 6684
diff changeset
280 #define NGX_STREAM_WRITE_BUFFERED 0x10
56fc55e32f23 Stream: filters.
Roman Arutyunyan <arut@nginx.com>
parents: 6684
diff changeset
281
56fc55e32f23 Stream: filters.
Roman Arutyunyan <arut@nginx.com>
parents: 6684
diff changeset
282
6693
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
283 void ngx_stream_core_run_phases(ngx_stream_session_t *s);
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
284 ngx_int_t ngx_stream_core_generic_phase(ngx_stream_session_t *s,
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
285 ngx_stream_phase_handler_t *ph);
6694
ea9dfe2f62e7 Stream: preread phase.
Vladimir Homutov <vl@nginx.com>
parents: 6693
diff changeset
286 ngx_int_t ngx_stream_core_preread_phase(ngx_stream_session_t *s,
ea9dfe2f62e7 Stream: preread phase.
Vladimir Homutov <vl@nginx.com>
parents: 6693
diff changeset
287 ngx_stream_phase_handler_t *ph);
6693
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
288 ngx_int_t ngx_stream_core_content_phase(ngx_stream_session_t *s,
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
289 ngx_stream_phase_handler_t *ph);
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
290
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
291
6115
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
292 void ngx_stream_init_connection(ngx_connection_t *c);
6693
3908156a51fa Stream: phases.
Roman Arutyunyan <arut@nginx.com>
parents: 6692
diff changeset
293 void ngx_stream_session_handler(ngx_event_t *rev);
6674
38143d1abdec Stream: the $status variable.
Roman Arutyunyan <arut@nginx.com>
parents: 6669
diff changeset
294 void ngx_stream_finalize_session(ngx_stream_session_t *s, ngx_uint_t rc);
6115
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
295
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
296
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
297 extern ngx_module_t ngx_stream_module;
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
298 extern ngx_uint_t ngx_stream_max_module;
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
299 extern ngx_module_t ngx_stream_core_module;
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
300
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
301
6692
56fc55e32f23 Stream: filters.
Roman Arutyunyan <arut@nginx.com>
parents: 6684
diff changeset
302 typedef ngx_int_t (*ngx_stream_filter_pt)(ngx_stream_session_t *s,
56fc55e32f23 Stream: filters.
Roman Arutyunyan <arut@nginx.com>
parents: 6684
diff changeset
303 ngx_chain_t *chain, ngx_uint_t from_upstream);
56fc55e32f23 Stream: filters.
Roman Arutyunyan <arut@nginx.com>
parents: 6684
diff changeset
304
56fc55e32f23 Stream: filters.
Roman Arutyunyan <arut@nginx.com>
parents: 6684
diff changeset
305
56fc55e32f23 Stream: filters.
Roman Arutyunyan <arut@nginx.com>
parents: 6684
diff changeset
306 extern ngx_stream_filter_pt ngx_stream_top_filter;
56fc55e32f23 Stream: filters.
Roman Arutyunyan <arut@nginx.com>
parents: 6684
diff changeset
307
56fc55e32f23 Stream: filters.
Roman Arutyunyan <arut@nginx.com>
parents: 6684
diff changeset
308
6115
61d7ae76647d Stream: port from NGINX+.
Ruslan Ermilov <ru@nginx.com>
parents:
diff changeset
309 #endif /* _NGX_STREAM_H_INCLUDED_ */