annotate src/mail/ngx_mail_core_module.c @ 9189:fcec773dd249

QUIC: avoid partial expansion of PATH_CHALLENGE/PATH_RESPONSE. By default packets with these frames are expanded to 1200 bytes. Previously, if anti-amplification limit did not allow this expansion, it was limited to whatever size was allowed. However RFC 9000 clearly states no partial expansion should happen in both cases. Section 8.2.1. Initiating Path Validation: An endpoint MUST expand datagrams that contain a PATH_CHALLENGE frame to at least the smallest allowed maximum datagram size of 1200 bytes, unless the anti-amplification limit for the path does not permit sending a datagram of this size. Section 8.2.2. Path Validation Responses: An endpoint MUST expand datagrams that contain a PATH_RESPONSE frame to at least the smallest allowed maximum datagram size of 1200 bytes. ... However, an endpoint MUST NOT expand the datagram containing the PATH_RESPONSE if the resulting data exceeds the anti-amplification limit.
author Roman Arutyunyan <arut@nginx.com>
date Wed, 29 Nov 2023 18:13:25 +0400
parents 2af1287d2da7
children d9a52ebb9b00
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
1
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
2 /*
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
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.
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
5 */
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
6
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
7
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
8 #include <ngx_config.h>
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
9 #include <ngx_core.h>
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
10 #include <ngx_event.h>
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
11 #include <ngx_mail.h>
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
12
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
13
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
14 static void *ngx_mail_core_create_main_conf(ngx_conf_t *cf);
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
15 static void *ngx_mail_core_create_srv_conf(ngx_conf_t *cf);
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
16 static char *ngx_mail_core_merge_srv_conf(ngx_conf_t *cf, void *parent,
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
17 void *child);
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
18 static char *ngx_mail_core_server(ngx_conf_t *cf, ngx_command_t *cmd,
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
19 void *conf);
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
20 static char *ngx_mail_core_listen(ngx_conf_t *cf, ngx_command_t *cmd,
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
21 void *conf);
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
22 static char *ngx_mail_core_protocol(ngx_conf_t *cf, ngx_command_t *cmd,
527
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
23 void *conf);
6130
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
24 static char *ngx_mail_core_error_log(ngx_conf_t *cf, ngx_command_t *cmd,
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
25 void *conf);
1892
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
26 static char *ngx_mail_core_resolver(ngx_conf_t *cf, ngx_command_t *cmd,
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
27 void *conf);
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
28
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
29
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
30 static ngx_command_t ngx_mail_core_commands[] = {
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
31
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
32 { ngx_string("server"),
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
33 NGX_MAIL_MAIN_CONF|NGX_CONF_BLOCK|NGX_CONF_NOARGS,
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
34 ngx_mail_core_server,
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
35 0,
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
36 0,
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
37 NULL },
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
38
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
39 { ngx_string("listen"),
5809
bb26f7ceaaf1 Mail: fixed number of arguments allowed in the listen directive.
Valentin Bartenev <vbart@nginx.com>
parents: 5263
diff changeset
40 NGX_MAIL_SRV_CONF|NGX_CONF_1MORE,
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
41 ngx_mail_core_listen,
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
42 NGX_MAIL_SRV_CONF_OFFSET,
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
43 0,
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
44 NULL },
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
45
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
46 { ngx_string("protocol"),
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
47 NGX_MAIL_SRV_CONF|NGX_CONF_TAKE1,
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
48 ngx_mail_core_protocol,
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
49 NGX_MAIL_SRV_CONF_OFFSET,
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
50 0,
1481
b58ce1cf66da smtp_client_buffer and smtp_greeting_delay
Igor Sysoev <igor@sysoev.ru>
parents: 1323
diff changeset
51 NULL },
b58ce1cf66da smtp_client_buffer and smtp_greeting_delay
Igor Sysoev <igor@sysoev.ru>
parents: 1323
diff changeset
52
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
53 { ngx_string("timeout"),
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
54 NGX_MAIL_MAIN_CONF|NGX_MAIL_SRV_CONF|NGX_CONF_TAKE1,
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
55 ngx_conf_set_msec_slot,
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
56 NGX_MAIL_SRV_CONF_OFFSET,
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
57 offsetof(ngx_mail_core_srv_conf_t, timeout),
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
58 NULL },
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
59
800
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
60 { ngx_string("server_name"),
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
61 NGX_MAIL_MAIN_CONF|NGX_MAIL_SRV_CONF|NGX_CONF_TAKE1,
800
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
62 ngx_conf_set_str_slot,
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
63 NGX_MAIL_SRV_CONF_OFFSET,
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
64 offsetof(ngx_mail_core_srv_conf_t, server_name),
800
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
65 NULL },
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
66
6130
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
67 { ngx_string("error_log"),
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
68 NGX_MAIL_MAIN_CONF|NGX_MAIL_SRV_CONF|NGX_CONF_1MORE,
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
69 ngx_mail_core_error_log,
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
70 NGX_MAIL_SRV_CONF_OFFSET,
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
71 0,
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
72 NULL },
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
73
1892
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
74 { ngx_string("resolver"),
4225
016352c19049 Support of several servers in the "resolver" directive.
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
75 NGX_MAIL_MAIN_CONF|NGX_MAIL_SRV_CONF|NGX_CONF_1MORE,
1892
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
76 ngx_mail_core_resolver,
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
77 NGX_MAIL_SRV_CONF_OFFSET,
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
78 0,
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
79 NULL },
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
80
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
81 { ngx_string("resolver_timeout"),
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
82 NGX_MAIL_MAIN_CONF|NGX_MAIL_SRV_CONF|NGX_CONF_TAKE1,
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
83 ngx_conf_set_msec_slot,
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
84 NGX_MAIL_SRV_CONF_OFFSET,
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
85 offsetof(ngx_mail_core_srv_conf_t, resolver_timeout),
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
86 NULL },
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
87
7844
ec1071830799 Mail: max_errors directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7794
diff changeset
88 { ngx_string("max_errors"),
ec1071830799 Mail: max_errors directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7794
diff changeset
89 NGX_MAIL_MAIN_CONF|NGX_MAIL_SRV_CONF|NGX_CONF_TAKE1,
ec1071830799 Mail: max_errors directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7794
diff changeset
90 ngx_conf_set_num_slot,
ec1071830799 Mail: max_errors directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7794
diff changeset
91 NGX_MAIL_SRV_CONF_OFFSET,
ec1071830799 Mail: max_errors directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7794
diff changeset
92 offsetof(ngx_mail_core_srv_conf_t, max_errors),
ec1071830799 Mail: max_errors directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7794
diff changeset
93 NULL },
ec1071830799 Mail: max_errors directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7794
diff changeset
94
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
95 ngx_null_command
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
96 };
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
97
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
98
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
99 static ngx_mail_module_t ngx_mail_core_module_ctx = {
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
100 NULL, /* protocol */
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
101
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
102 ngx_mail_core_create_main_conf, /* create main configuration */
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
103 NULL, /* init main configuration */
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
104
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
105 ngx_mail_core_create_srv_conf, /* create server configuration */
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
106 ngx_mail_core_merge_srv_conf /* merge server configuration */
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
107 };
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
108
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
109
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
110 ngx_module_t ngx_mail_core_module = {
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
111 NGX_MODULE_V1,
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
112 &ngx_mail_core_module_ctx, /* module context */
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
113 ngx_mail_core_commands, /* module directives */
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
114 NGX_MAIL_MODULE, /* module type */
541
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
115 NULL, /* init master */
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
116 NULL, /* init module */
541
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
117 NULL, /* init process */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
118 NULL, /* init thread */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
119 NULL, /* exit thread */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
120 NULL, /* exit process */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
121 NULL, /* exit master */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
122 NGX_MODULE_V1_PADDING
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
123 };
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
124
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
125
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
126 static void *
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
127 ngx_mail_core_create_main_conf(ngx_conf_t *cf)
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
128 {
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
129 ngx_mail_core_main_conf_t *cmcf;
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
130
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
131 cmcf = ngx_pcalloc(cf->pool, sizeof(ngx_mail_core_main_conf_t));
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
132 if (cmcf == NULL) {
2912
c7d57b539248 return NULL instead of NGX_CONF_ERROR on a create conf failure
Igor Sysoev <igor@sysoev.ru>
parents: 2855
diff changeset
133 return NULL;
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
134 }
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
135
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
136 if (ngx_array_init(&cmcf->servers, cf->pool, 4,
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
137 sizeof(ngx_mail_core_srv_conf_t *))
641
5e8fb59c18c1 nginx-0.3.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 619
diff changeset
138 != NGX_OK)
5e8fb59c18c1 nginx-0.3.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 619
diff changeset
139 {
2912
c7d57b539248 return NULL instead of NGX_CONF_ERROR on a create conf failure
Igor Sysoev <igor@sysoev.ru>
parents: 2855
diff changeset
140 return NULL;
641
5e8fb59c18c1 nginx-0.3.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 619
diff changeset
141 }
5e8fb59c18c1 nginx-0.3.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 619
diff changeset
142
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
143 if (ngx_array_init(&cmcf->listen, cf->pool, 4, sizeof(ngx_mail_listen_t))
641
5e8fb59c18c1 nginx-0.3.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 619
diff changeset
144 != NGX_OK)
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
145 {
2912
c7d57b539248 return NULL instead of NGX_CONF_ERROR on a create conf failure
Igor Sysoev <igor@sysoev.ru>
parents: 2855
diff changeset
146 return NULL;
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
147 }
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
148
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
149 return cmcf;
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
150 }
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
151
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
152
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
153 static void *
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
154 ngx_mail_core_create_srv_conf(ngx_conf_t *cf)
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
155 {
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
156 ngx_mail_core_srv_conf_t *cscf;
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
157
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
158 cscf = ngx_pcalloc(cf->pool, sizeof(ngx_mail_core_srv_conf_t));
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
159 if (cscf == NULL) {
527
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
160 return NULL;
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
161 }
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
162
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
163 /*
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
164 * set by ngx_pcalloc():
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
165 *
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
166 * cscf->protocol = NULL;
6130
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
167 * cscf->error_log = NULL;
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
168 */
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
169
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
170 cscf->timeout = NGX_CONF_UNSET_MSEC;
1892
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
171 cscf->resolver_timeout = NGX_CONF_UNSET_MSEC;
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
172
7844
ec1071830799 Mail: max_errors directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7794
diff changeset
173 cscf->max_errors = NGX_CONF_UNSET_UINT;
ec1071830799 Mail: max_errors directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7794
diff changeset
174
1896
4c060e30476b do not resolve SMTP clients by default
Igor Sysoev <igor@sysoev.ru>
parents: 1892
diff changeset
175 cscf->resolver = NGX_CONF_UNSET_PTR;
4c060e30476b do not resolve SMTP clients by default
Igor Sysoev <igor@sysoev.ru>
parents: 1892
diff changeset
176
1892
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
177 cscf->file_name = cf->conf_file->file.name.data;
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
178 cscf->line = cf->conf_file->line;
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
179
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
180 return cscf;
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
181 }
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
182
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
183
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
184 static char *
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
185 ngx_mail_core_merge_srv_conf(ngx_conf_t *cf, void *parent, void *child)
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
186 {
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
187 ngx_mail_core_srv_conf_t *prev = parent;
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
188 ngx_mail_core_srv_conf_t *conf = child;
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
189
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
190 ngx_conf_merge_msec_value(conf->timeout, prev->timeout, 60000);
1892
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
191 ngx_conf_merge_msec_value(conf->resolver_timeout, prev->resolver_timeout,
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
192 30000);
1481
b58ce1cf66da smtp_client_buffer and smtp_greeting_delay
Igor Sysoev <igor@sysoev.ru>
parents: 1323
diff changeset
193
7844
ec1071830799 Mail: max_errors directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7794
diff changeset
194 ngx_conf_merge_uint_value(conf->max_errors, prev->max_errors, 5);
800
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
195
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
196 ngx_conf_merge_str_value(conf->server_name, prev->server_name, "");
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
197
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
198 if (conf->server_name.len == 0) {
2011
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1918
diff changeset
199 conf->server_name = cf->cycle->hostname;
800
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
200 }
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
201
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
202 if (conf->protocol == NULL) {
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
203 ngx_log_error(NGX_LOG_EMERG, cf->log, 0,
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
204 "unknown mail protocol for server in %s:%ui",
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
205 conf->file_name, conf->line);
583
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
206 return NGX_CONF_ERROR;
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
207 }
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
208
6130
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
209 if (conf->error_log == NULL) {
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
210 if (prev->error_log) {
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
211 conf->error_log = prev->error_log;
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
212 } else {
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
213 conf->error_log = &cf->cycle->new_log;
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
214 }
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
215 }
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
216
1896
4c060e30476b do not resolve SMTP clients by default
Igor Sysoev <igor@sysoev.ru>
parents: 1892
diff changeset
217 ngx_conf_merge_ptr_value(conf->resolver, prev->resolver, NULL);
1892
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
218
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
219 return NGX_CONF_OK;
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
220 }
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
221
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
222
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
223 static char *
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
224 ngx_mail_core_server(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
225 {
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
226 char *rv;
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
227 void *mconf;
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
228 ngx_uint_t m;
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
229 ngx_conf_t pcf;
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
230 ngx_mail_module_t *module;
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
231 ngx_mail_conf_ctx_t *ctx, *mail_ctx;
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
232 ngx_mail_core_srv_conf_t *cscf, **cscfp;
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
233 ngx_mail_core_main_conf_t *cmcf;
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
234
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
235 ctx = ngx_pcalloc(cf->pool, sizeof(ngx_mail_conf_ctx_t));
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
236 if (ctx == NULL) {
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
237 return NGX_CONF_ERROR;
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
238 }
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
239
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
240 mail_ctx = cf->ctx;
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
241 ctx->main_conf = mail_ctx->main_conf;
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
242
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
243 /* the server{}'s srv_conf */
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
244
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
245 ctx->srv_conf = ngx_pcalloc(cf->pool, sizeof(void *) * ngx_mail_max_module);
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
246 if (ctx->srv_conf == NULL) {
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
247 return NGX_CONF_ERROR;
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
248 }
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
249
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6230
diff changeset
250 for (m = 0; cf->cycle->modules[m]; m++) {
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6230
diff changeset
251 if (cf->cycle->modules[m]->type != NGX_MAIL_MODULE) {
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
252 continue;
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
253 }
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
254
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6230
diff changeset
255 module = cf->cycle->modules[m]->ctx;
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
256
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
257 if (module->create_srv_conf) {
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
258 mconf = module->create_srv_conf(cf);
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
259 if (mconf == NULL) {
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
260 return NGX_CONF_ERROR;
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
261 }
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
262
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6230
diff changeset
263 ctx->srv_conf[cf->cycle->modules[m]->ctx_index] = mconf;
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
264 }
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
265 }
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
266
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
267 /* the server configuration context */
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
268
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
269 cscf = ctx->srv_conf[ngx_mail_core_module.ctx_index];
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
270 cscf->ctx = ctx;
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
271
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
272 cmcf = ctx->main_conf[ngx_mail_core_module.ctx_index];
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
273
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
274 cscfp = ngx_array_push(&cmcf->servers);
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
275 if (cscfp == NULL) {
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
276 return NGX_CONF_ERROR;
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
277 }
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
278
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
279 *cscfp = cscf;
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
280
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
281
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
282 /* parse inside server{} */
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
283
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
284 pcf = *cf;
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
285 cf->ctx = ctx;
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
286 cf->cmd_type = NGX_MAIL_SRV_CONF;
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
287
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
288 rv = ngx_conf_parse(cf, NULL);
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
289
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
290 *cf = pcf;
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
291
6657
3d5202c71f94 Ensure "listen" exists in a mail or stream server (ticket #1049).
Roman Arutyunyan <arut@nginx.com>
parents: 6560
diff changeset
292 if (rv == NGX_CONF_OK && !cscf->listen) {
3d5202c71f94 Ensure "listen" exists in a mail or stream server (ticket #1049).
Roman Arutyunyan <arut@nginx.com>
parents: 6560
diff changeset
293 ngx_log_error(NGX_LOG_EMERG, cf->log, 0,
3d5202c71f94 Ensure "listen" exists in a mail or stream server (ticket #1049).
Roman Arutyunyan <arut@nginx.com>
parents: 6560
diff changeset
294 "no \"listen\" is defined for server in %s:%ui",
3d5202c71f94 Ensure "listen" exists in a mail or stream server (ticket #1049).
Roman Arutyunyan <arut@nginx.com>
parents: 6560
diff changeset
295 cscf->file_name, cscf->line);
3d5202c71f94 Ensure "listen" exists in a mail or stream server (ticket #1049).
Roman Arutyunyan <arut@nginx.com>
parents: 6560
diff changeset
296 return NGX_CONF_ERROR;
3d5202c71f94 Ensure "listen" exists in a mail or stream server (ticket #1049).
Roman Arutyunyan <arut@nginx.com>
parents: 6560
diff changeset
297 }
3d5202c71f94 Ensure "listen" exists in a mail or stream server (ticket #1049).
Roman Arutyunyan <arut@nginx.com>
parents: 6560
diff changeset
298
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
299 return rv;
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
300 }
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
301
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
302
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
303 static char *
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
304 ngx_mail_core_listen(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
305 {
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
306 ngx_mail_core_srv_conf_t *cscf = conf;
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
307
6976
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
308 ngx_str_t *value, size;
804
472cd9768ac2 now the "listen" directives use ngx_parse_url()
Igor Sysoev <igor@sysoev.ru>
parents: 800
diff changeset
309 ngx_url_t u;
7478
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
310 ngx_uint_t i, n, m;
8104
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
311 ngx_mail_listen_t *ls, *als, *nls;
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
312 ngx_mail_module_t *module;
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
313 ngx_mail_core_main_conf_t *cmcf;
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
314
6657
3d5202c71f94 Ensure "listen" exists in a mail or stream server (ticket #1049).
Roman Arutyunyan <arut@nginx.com>
parents: 6560
diff changeset
315 cscf->listen = 1;
3d5202c71f94 Ensure "listen" exists in a mail or stream server (ticket #1049).
Roman Arutyunyan <arut@nginx.com>
parents: 6560
diff changeset
316
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
317 value = cf->args->elts;
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
318
804
472cd9768ac2 now the "listen" directives use ngx_parse_url()
Igor Sysoev <igor@sysoev.ru>
parents: 800
diff changeset
319 ngx_memzero(&u, sizeof(ngx_url_t));
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
320
804
472cd9768ac2 now the "listen" directives use ngx_parse_url()
Igor Sysoev <igor@sysoev.ru>
parents: 800
diff changeset
321 u.url = value[1];
472cd9768ac2 now the "listen" directives use ngx_parse_url()
Igor Sysoev <igor@sysoev.ru>
parents: 800
diff changeset
322 u.listen = 1;
619
7a16e281c01f nginx-0.3.31-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 587
diff changeset
323
1559
fe11e2a3946d use pool instead of ngx_conf_t
Igor Sysoev <igor@sysoev.ru>
parents: 1487
diff changeset
324 if (ngx_parse_url(cf->pool, &u) != NGX_OK) {
804
472cd9768ac2 now the "listen" directives use ngx_parse_url()
Igor Sysoev <igor@sysoev.ru>
parents: 800
diff changeset
325 if (u.err) {
472cd9768ac2 now the "listen" directives use ngx_parse_url()
Igor Sysoev <igor@sysoev.ru>
parents: 800
diff changeset
326 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
472cd9768ac2 now the "listen" directives use ngx_parse_url()
Igor Sysoev <igor@sysoev.ru>
parents: 800
diff changeset
327 "%s in \"%V\" of the \"listen\" directive",
472cd9768ac2 now the "listen" directives use ngx_parse_url()
Igor Sysoev <igor@sysoev.ru>
parents: 800
diff changeset
328 u.err, &u.url);
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
329 }
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
330
804
472cd9768ac2 now the "listen" directives use ngx_parse_url()
Igor Sysoev <igor@sysoev.ru>
parents: 800
diff changeset
331 return NGX_CONF_ERROR;
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
332 }
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
333
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
334 cmcf = ngx_mail_conf_get_module_main_conf(cf, ngx_mail_core_module);
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
335
8104
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
336 ls = ngx_array_push(&cmcf->listen);
2798
268d8d3faa34 axe imap module artifacts
Igor Sysoev <igor@sysoev.ru>
parents: 2512
diff changeset
337 if (ls == NULL) {
641
5e8fb59c18c1 nginx-0.3.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 619
diff changeset
338 return NGX_CONF_ERROR;
5e8fb59c18c1 nginx-0.3.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 619
diff changeset
339 }
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 543
diff changeset
340
2798
268d8d3faa34 axe imap module artifacts
Igor Sysoev <igor@sysoev.ru>
parents: 2512
diff changeset
341 ngx_memzero(ls, sizeof(ngx_mail_listen_t));
641
5e8fb59c18c1 nginx-0.3.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 619
diff changeset
342
6173
1729d8d3eb3a Mail: listen backlog=.
Ruslan Ermilov <ru@nginx.com>
parents: 6171
diff changeset
343 ls->backlog = NGX_LISTEN_BACKLOG;
6976
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
344 ls->rcvbuf = -1;
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
345 ls->sndbuf = -1;
2798
268d8d3faa34 axe imap module artifacts
Igor Sysoev <igor@sysoev.ru>
parents: 2512
diff changeset
346 ls->ctx = cf->ctx;
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
347
6719
cebf5fed00bf Modules compatibility: removed unneeded IPV6_V6ONLY checks.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6657
diff changeset
348 #if (NGX_HAVE_INET6)
4771
bdcdbdf35b52 Core: ipv6only is now on by default.
Ruslan Ermilov <ru@nginx.com>
parents: 4522
diff changeset
349 ls->ipv6only = 1;
bdcdbdf35b52 Core: ipv6only is now on by default.
Ruslan Ermilov <ru@nginx.com>
parents: 4522
diff changeset
350 #endif
bdcdbdf35b52 Core: ipv6only is now on by default.
Ruslan Ermilov <ru@nginx.com>
parents: 4522
diff changeset
351
4813
5c47ecaef07a mail_core: don't let the well-known port in the "listen" directive to
Ruslan Ermilov <ru@nginx.com>
parents: 4771
diff changeset
352 if (cscf->protocol == NULL) {
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6230
diff changeset
353 for (m = 0; cf->cycle->modules[m]; m++) {
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6230
diff changeset
354 if (cf->cycle->modules[m]->type != NGX_MAIL_MODULE) {
4813
5c47ecaef07a mail_core: don't let the well-known port in the "listen" directive to
Ruslan Ermilov <ru@nginx.com>
parents: 4771
diff changeset
355 continue;
5c47ecaef07a mail_core: don't let the well-known port in the "listen" directive to
Ruslan Ermilov <ru@nginx.com>
parents: 4771
diff changeset
356 }
4822
cf3e9e6a7624 Whitespace fix.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4819
diff changeset
357
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6230
diff changeset
358 module = cf->cycle->modules[m]->ctx;
4822
cf3e9e6a7624 Whitespace fix.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4819
diff changeset
359
4813
5c47ecaef07a mail_core: don't let the well-known port in the "listen" directive to
Ruslan Ermilov <ru@nginx.com>
parents: 4771
diff changeset
360 if (module->protocol == NULL) {
5c47ecaef07a mail_core: don't let the well-known port in the "listen" directive to
Ruslan Ermilov <ru@nginx.com>
parents: 4771
diff changeset
361 continue;
5c47ecaef07a mail_core: don't let the well-known port in the "listen" directive to
Ruslan Ermilov <ru@nginx.com>
parents: 4771
diff changeset
362 }
4822
cf3e9e6a7624 Whitespace fix.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4819
diff changeset
363
4813
5c47ecaef07a mail_core: don't let the well-known port in the "listen" directive to
Ruslan Ermilov <ru@nginx.com>
parents: 4771
diff changeset
364 for (i = 0; module->protocol->port[i]; i++) {
5c47ecaef07a mail_core: don't let the well-known port in the "listen" directive to
Ruslan Ermilov <ru@nginx.com>
parents: 4771
diff changeset
365 if (module->protocol->port[i] == u.port) {
5c47ecaef07a mail_core: don't let the well-known port in the "listen" directive to
Ruslan Ermilov <ru@nginx.com>
parents: 4771
diff changeset
366 cscf->protocol = module->protocol;
5c47ecaef07a mail_core: don't let the well-known port in the "listen" directive to
Ruslan Ermilov <ru@nginx.com>
parents: 4771
diff changeset
367 break;
5c47ecaef07a mail_core: don't let the well-known port in the "listen" directive to
Ruslan Ermilov <ru@nginx.com>
parents: 4771
diff changeset
368 }
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
369 }
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
370 }
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
371 }
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
372
2224
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
373 for (i = 2; i < cf->args->nelts; i++) {
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
374
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
375 if (ngx_strcmp(value[i].data, "bind") == 0) {
2798
268d8d3faa34 axe imap module artifacts
Igor Sysoev <igor@sysoev.ru>
parents: 2512
diff changeset
376 ls->bind = 1;
2224
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
377 continue;
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
378 }
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
379
6173
1729d8d3eb3a Mail: listen backlog=.
Ruslan Ermilov <ru@nginx.com>
parents: 6171
diff changeset
380 if (ngx_strncmp(value[i].data, "backlog=", 8) == 0) {
1729d8d3eb3a Mail: listen backlog=.
Ruslan Ermilov <ru@nginx.com>
parents: 6171
diff changeset
381 ls->backlog = ngx_atoi(value[i].data + 8, value[i].len - 8);
1729d8d3eb3a Mail: listen backlog=.
Ruslan Ermilov <ru@nginx.com>
parents: 6171
diff changeset
382 ls->bind = 1;
1729d8d3eb3a Mail: listen backlog=.
Ruslan Ermilov <ru@nginx.com>
parents: 6171
diff changeset
383
1729d8d3eb3a Mail: listen backlog=.
Ruslan Ermilov <ru@nginx.com>
parents: 6171
diff changeset
384 if (ls->backlog == NGX_ERROR || ls->backlog == 0) {
1729d8d3eb3a Mail: listen backlog=.
Ruslan Ermilov <ru@nginx.com>
parents: 6171
diff changeset
385 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
1729d8d3eb3a Mail: listen backlog=.
Ruslan Ermilov <ru@nginx.com>
parents: 6171
diff changeset
386 "invalid backlog \"%V\"", &value[i]);
1729d8d3eb3a Mail: listen backlog=.
Ruslan Ermilov <ru@nginx.com>
parents: 6171
diff changeset
387 return NGX_CONF_ERROR;
1729d8d3eb3a Mail: listen backlog=.
Ruslan Ermilov <ru@nginx.com>
parents: 6171
diff changeset
388 }
1729d8d3eb3a Mail: listen backlog=.
Ruslan Ermilov <ru@nginx.com>
parents: 6171
diff changeset
389
1729d8d3eb3a Mail: listen backlog=.
Ruslan Ermilov <ru@nginx.com>
parents: 6171
diff changeset
390 continue;
1729d8d3eb3a Mail: listen backlog=.
Ruslan Ermilov <ru@nginx.com>
parents: 6171
diff changeset
391 }
1729d8d3eb3a Mail: listen backlog=.
Ruslan Ermilov <ru@nginx.com>
parents: 6171
diff changeset
392
6976
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
393 if (ngx_strncmp(value[i].data, "rcvbuf=", 7) == 0) {
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
394 size.len = value[i].len - 7;
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
395 size.data = value[i].data + 7;
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
396
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
397 ls->rcvbuf = ngx_parse_size(&size);
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
398 ls->bind = 1;
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
399
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
400 if (ls->rcvbuf == NGX_ERROR) {
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
401 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
402 "invalid rcvbuf \"%V\"", &value[i]);
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
403 return NGX_CONF_ERROR;
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
404 }
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
405
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
406 continue;
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
407 }
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
408
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
409 if (ngx_strncmp(value[i].data, "sndbuf=", 7) == 0) {
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
410 size.len = value[i].len - 7;
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
411 size.data = value[i].data + 7;
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
412
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
413 ls->sndbuf = ngx_parse_size(&size);
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
414 ls->bind = 1;
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
415
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
416 if (ls->sndbuf == NGX_ERROR) {
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
417 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
418 "invalid sndbuf \"%V\"", &value[i]);
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
419 return NGX_CONF_ERROR;
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
420 }
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
421
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
422 continue;
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
423 }
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
424
2855
a96a8c916b0c mail proxy listen IPv6 support
Igor Sysoev <igor@sysoev.ru>
parents: 2798
diff changeset
425 if (ngx_strncmp(value[i].data, "ipv6only=o", 10) == 0) {
a96a8c916b0c mail proxy listen IPv6 support
Igor Sysoev <igor@sysoev.ru>
parents: 2798
diff changeset
426 #if (NGX_HAVE_INET6 && defined IPV6_V6ONLY)
7478
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
427 if (ngx_strcmp(&value[i].data[10], "n") == 0) {
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
428 ls->ipv6only = 1;
2855
a96a8c916b0c mail proxy listen IPv6 support
Igor Sysoev <igor@sysoev.ru>
parents: 2798
diff changeset
429
7478
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
430 } else if (ngx_strcmp(&value[i].data[10], "ff") == 0) {
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
431 ls->ipv6only = 0;
2855
a96a8c916b0c mail proxy listen IPv6 support
Igor Sysoev <igor@sysoev.ru>
parents: 2798
diff changeset
432
a96a8c916b0c mail proxy listen IPv6 support
Igor Sysoev <igor@sysoev.ru>
parents: 2798
diff changeset
433 } else {
a96a8c916b0c mail proxy listen IPv6 support
Igor Sysoev <igor@sysoev.ru>
parents: 2798
diff changeset
434 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
7478
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
435 "invalid ipv6only flags \"%s\"",
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
436 &value[i].data[9]);
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
437 return NGX_CONF_ERROR;
2855
a96a8c916b0c mail proxy listen IPv6 support
Igor Sysoev <igor@sysoev.ru>
parents: 2798
diff changeset
438 }
a96a8c916b0c mail proxy listen IPv6 support
Igor Sysoev <igor@sysoev.ru>
parents: 2798
diff changeset
439
7478
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
440 ls->bind = 1;
2855
a96a8c916b0c mail proxy listen IPv6 support
Igor Sysoev <igor@sysoev.ru>
parents: 2798
diff changeset
441 continue;
a96a8c916b0c mail proxy listen IPv6 support
Igor Sysoev <igor@sysoev.ru>
parents: 2798
diff changeset
442 #else
a96a8c916b0c mail proxy listen IPv6 support
Igor Sysoev <igor@sysoev.ru>
parents: 2798
diff changeset
443 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
a96a8c916b0c mail proxy listen IPv6 support
Igor Sysoev <igor@sysoev.ru>
parents: 2798
diff changeset
444 "bind ipv6only is not supported "
a96a8c916b0c mail proxy listen IPv6 support
Igor Sysoev <igor@sysoev.ru>
parents: 2798
diff changeset
445 "on this platform");
a96a8c916b0c mail proxy listen IPv6 support
Igor Sysoev <igor@sysoev.ru>
parents: 2798
diff changeset
446 return NGX_CONF_ERROR;
a96a8c916b0c mail proxy listen IPv6 support
Igor Sysoev <igor@sysoev.ru>
parents: 2798
diff changeset
447 #endif
a96a8c916b0c mail proxy listen IPv6 support
Igor Sysoev <igor@sysoev.ru>
parents: 2798
diff changeset
448 }
a96a8c916b0c mail proxy listen IPv6 support
Igor Sysoev <igor@sysoev.ru>
parents: 2798
diff changeset
449
2224
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
450 if (ngx_strcmp(value[i].data, "ssl") == 0) {
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
451 #if (NGX_MAIL_SSL)
7269
7f955d3b9a0d SSL: detect "listen ... ssl" without certificates (ticket #178).
Maxim Dounin <mdounin@mdounin.ru>
parents: 6976
diff changeset
452 ngx_mail_ssl_conf_t *sslcf;
7f955d3b9a0d SSL: detect "listen ... ssl" without certificates (ticket #178).
Maxim Dounin <mdounin@mdounin.ru>
parents: 6976
diff changeset
453
7f955d3b9a0d SSL: detect "listen ... ssl" without certificates (ticket #178).
Maxim Dounin <mdounin@mdounin.ru>
parents: 6976
diff changeset
454 sslcf = ngx_mail_conf_get_module_srv_conf(cf, ngx_mail_ssl_module);
7f955d3b9a0d SSL: detect "listen ... ssl" without certificates (ticket #178).
Maxim Dounin <mdounin@mdounin.ru>
parents: 6976
diff changeset
455
7f955d3b9a0d SSL: detect "listen ... ssl" without certificates (ticket #178).
Maxim Dounin <mdounin@mdounin.ru>
parents: 6976
diff changeset
456 sslcf->listen = 1;
7f955d3b9a0d SSL: detect "listen ... ssl" without certificates (ticket #178).
Maxim Dounin <mdounin@mdounin.ru>
parents: 6976
diff changeset
457 sslcf->file = cf->conf_file->file.name.data;
7f955d3b9a0d SSL: detect "listen ... ssl" without certificates (ticket #178).
Maxim Dounin <mdounin@mdounin.ru>
parents: 6976
diff changeset
458 sslcf->line = cf->conf_file->line;
7f955d3b9a0d SSL: detect "listen ... ssl" without certificates (ticket #178).
Maxim Dounin <mdounin@mdounin.ru>
parents: 6976
diff changeset
459
2798
268d8d3faa34 axe imap module artifacts
Igor Sysoev <igor@sysoev.ru>
parents: 2512
diff changeset
460 ls->ssl = 1;
7269
7f955d3b9a0d SSL: detect "listen ... ssl" without certificates (ticket #178).
Maxim Dounin <mdounin@mdounin.ru>
parents: 6976
diff changeset
461
2224
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
462 continue;
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
463 #else
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
464 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
465 "the \"ssl\" parameter requires "
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
466 "ngx_mail_ssl_module");
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
467 return NGX_CONF_ERROR;
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
468 #endif
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
469 }
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
470
4323
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
471 if (ngx_strncmp(value[i].data, "so_keepalive=", 13) == 0) {
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
472
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
473 if (ngx_strcmp(&value[i].data[13], "on") == 0) {
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
474 ls->so_keepalive = 1;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
475
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
476 } else if (ngx_strcmp(&value[i].data[13], "off") == 0) {
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
477 ls->so_keepalive = 2;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
478
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
479 } else {
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
480
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
481 #if (NGX_HAVE_KEEPALIVE_TUNABLE)
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
482 u_char *p, *end;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
483 ngx_str_t s;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
484
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
485 end = value[i].data + value[i].len;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
486 s.data = value[i].data + 13;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
487
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
488 p = ngx_strlchr(s.data, end, ':');
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
489 if (p == NULL) {
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
490 p = end;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
491 }
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
492
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
493 if (p > s.data) {
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
494 s.len = p - s.data;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
495
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
496 ls->tcp_keepidle = ngx_parse_time(&s, 1);
4474
41f640a693de Time parsing cleanup.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
497 if (ls->tcp_keepidle == (time_t) NGX_ERROR) {
4323
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
498 goto invalid_so_keepalive;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
499 }
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
500 }
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
501
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
502 s.data = (p < end) ? (p + 1) : end;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
503
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
504 p = ngx_strlchr(s.data, end, ':');
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
505 if (p == NULL) {
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
506 p = end;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
507 }
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
508
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
509 if (p > s.data) {
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
510 s.len = p - s.data;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
511
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
512 ls->tcp_keepintvl = ngx_parse_time(&s, 1);
4474
41f640a693de Time parsing cleanup.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
513 if (ls->tcp_keepintvl == (time_t) NGX_ERROR) {
4323
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
514 goto invalid_so_keepalive;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
515 }
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
516 }
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
517
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
518 s.data = (p < end) ? (p + 1) : end;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
519
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
520 if (s.data < end) {
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
521 s.len = end - s.data;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
522
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
523 ls->tcp_keepcnt = ngx_atoi(s.data, s.len);
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
524 if (ls->tcp_keepcnt == NGX_ERROR) {
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
525 goto invalid_so_keepalive;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
526 }
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
527 }
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
528
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
529 if (ls->tcp_keepidle == 0 && ls->tcp_keepintvl == 0
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
530 && ls->tcp_keepcnt == 0)
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
531 {
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
532 goto invalid_so_keepalive;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
533 }
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
534
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
535 ls->so_keepalive = 1;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
536
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
537 #else
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
538
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
539 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
540 "the \"so_keepalive\" parameter accepts "
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
541 "only \"on\" or \"off\" on this platform");
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
542 return NGX_CONF_ERROR;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
543
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
544 #endif
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
545 }
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
546
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
547 ls->bind = 1;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
548
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
549 continue;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
550
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
551 #if (NGX_HAVE_KEEPALIVE_TUNABLE)
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
552 invalid_so_keepalive:
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
553
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
554 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
555 "invalid so_keepalive value: \"%s\"",
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
556 &value[i].data[13]);
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
557 return NGX_CONF_ERROR;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
558 #endif
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
559 }
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
560
7794
12ea1de7d87c Mail: parsing of the PROXY protocol from clients.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7478
diff changeset
561 if (ngx_strcmp(value[i].data, "proxy_protocol") == 0) {
12ea1de7d87c Mail: parsing of the PROXY protocol from clients.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7478
diff changeset
562 ls->proxy_protocol = 1;
12ea1de7d87c Mail: parsing of the PROXY protocol from clients.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7478
diff changeset
563 continue;
12ea1de7d87c Mail: parsing of the PROXY protocol from clients.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7478
diff changeset
564 }
12ea1de7d87c Mail: parsing of the PROXY protocol from clients.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7478
diff changeset
565
2224
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
566 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
567 "the invalid \"%V\" parameter", &value[i]);
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
568 return NGX_CONF_ERROR;
641
5e8fb59c18c1 nginx-0.3.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 619
diff changeset
569 }
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
570
8104
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
571 for (n = 0; n < u.naddrs; n++) {
7478
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
572
8104
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
573 for (i = 0; i < n; i++) {
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
574 if (ngx_cmp_sockaddr(u.addrs[n].sockaddr, u.addrs[n].socklen,
8117
2af1287d2da7 Fixed port ranges support in the listen directive.
Valentin Bartenev <vbart@wbsrv.ru>
parents: 8104
diff changeset
575 u.addrs[i].sockaddr, u.addrs[i].socklen, 1)
8104
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
576 == NGX_OK)
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
577 {
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
578 goto next;
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
579 }
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
580 }
7478
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
581
8104
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
582 if (n != 0) {
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
583 nls = ngx_array_push(&cmcf->listen);
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
584 if (nls == NULL) {
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
585 return NGX_CONF_ERROR;
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
586 }
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
587
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
588 *nls = *ls;
7478
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
589
8104
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
590 } else {
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
591 nls = ls;
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
592 }
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
593
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
594 nls->sockaddr = u.addrs[n].sockaddr;
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
595 nls->socklen = u.addrs[n].socklen;
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
596 nls->addr_text = u.addrs[n].name;
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
597 nls->wildcard = ngx_inet_wildcard(nls->sockaddr);
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
598
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
599 als = cmcf->listen.elts;
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
600
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
601 for (i = 0; i < cmcf->listen.nelts - 1; i++) {
7478
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
602
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
603 if (ngx_cmp_sockaddr(als[i].sockaddr, als[i].socklen,
8104
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
604 nls->sockaddr, nls->socklen, 1)
7478
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
605 != NGX_OK)
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
606 {
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
607 continue;
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
608 }
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
609
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
610 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
611 "duplicate \"%V\" address and port pair",
8104
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
612 &nls->addr_text);
7478
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
613 return NGX_CONF_ERROR;
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
614 }
8104
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
615
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
616 next:
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
617 continue;
7478
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
618 }
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
619
2224
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
620 return NGX_CONF_OK;
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
621 }
527
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
622
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
623
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
624 static char *
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
625 ngx_mail_core_protocol(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
626 {
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
627 ngx_mail_core_srv_conf_t *cscf = conf;
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
628
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
629 ngx_str_t *value;
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
630 ngx_uint_t m;
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
631 ngx_mail_module_t *module;
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
632
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
633 value = cf->args->elts;
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
634
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6230
diff changeset
635 for (m = 0; cf->cycle->modules[m]; m++) {
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6230
diff changeset
636 if (cf->cycle->modules[m]->type != NGX_MAIL_MODULE) {
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
637 continue;
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
638 }
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
639
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6230
diff changeset
640 module = cf->cycle->modules[m]->ctx;
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
641
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
642 if (module->protocol
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
643 && ngx_strcmp(module->protocol->name.data, value[1].data) == 0)
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
644 {
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
645 cscf->protocol = module->protocol;
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
646
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
647 return NGX_CONF_OK;
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
648 }
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
649 }
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
650
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
651 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
652 "unknown protocol \"%V\"", &value[1]);
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
653 return NGX_CONF_ERROR;
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
654 }
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
655
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
656
1892
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
657 static char *
6130
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
658 ngx_mail_core_error_log(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
659 {
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
660 ngx_mail_core_srv_conf_t *cscf = conf;
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
661
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
662 return ngx_log_set_log(cf, &cscf->error_log);
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
663 }
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
664
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
665
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
666 static char *
1892
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
667 ngx_mail_core_resolver(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
668 {
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
669 ngx_mail_core_srv_conf_t *cscf = conf;
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
670
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
671 ngx_str_t *value;
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
672
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
673 value = cf->args->elts;
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
674
1918
a47516c7065b check duplicate resolver
Igor Sysoev <igor@sysoev.ru>
parents: 1913
diff changeset
675 if (cscf->resolver != NGX_CONF_UNSET_PTR) {
a47516c7065b check duplicate resolver
Igor Sysoev <igor@sysoev.ru>
parents: 1913
diff changeset
676 return "is duplicate";
a47516c7065b check duplicate resolver
Igor Sysoev <igor@sysoev.ru>
parents: 1913
diff changeset
677 }
a47516c7065b check duplicate resolver
Igor Sysoev <igor@sysoev.ru>
parents: 1913
diff changeset
678
1896
4c060e30476b do not resolve SMTP clients by default
Igor Sysoev <igor@sysoev.ru>
parents: 1892
diff changeset
679 if (ngx_strcmp(value[1].data, "off") == 0) {
4c060e30476b do not resolve SMTP clients by default
Igor Sysoev <igor@sysoev.ru>
parents: 1892
diff changeset
680 cscf->resolver = NULL;
4c060e30476b do not resolve SMTP clients by default
Igor Sysoev <igor@sysoev.ru>
parents: 1892
diff changeset
681 return NGX_CONF_OK;
4c060e30476b do not resolve SMTP clients by default
Igor Sysoev <igor@sysoev.ru>
parents: 1892
diff changeset
682 }
4c060e30476b do not resolve SMTP clients by default
Igor Sysoev <igor@sysoev.ru>
parents: 1892
diff changeset
683
4225
016352c19049 Support of several servers in the "resolver" directive.
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
684 cscf->resolver = ngx_resolver_create(cf, &value[1], cf->args->nelts - 1);
016352c19049 Support of several servers in the "resolver" directive.
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
685 if (cscf->resolver == NULL) {
1892
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
686 return NGX_CONF_ERROR;
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
687 }
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
688
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
689 return NGX_CONF_OK;
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
690 }
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
691
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
692
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
693 char *
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
694 ngx_mail_capabilities(ngx_conf_t *cf, ngx_command_t *cmd, void *conf)
527
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
695 {
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
696 char *p = conf;
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
697
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
698 ngx_str_t *c, *value;
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
699 ngx_uint_t i;
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
700 ngx_array_t *a;
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
701
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
702 a = (ngx_array_t *) (p + cmd->offset);
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
703
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
704 value = cf->args->elts;
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
705
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
706 for (i = 1; i < cf->args->nelts; i++) {
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
707 c = ngx_array_push(a);
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
708 if (c == NULL) {
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
709 return NGX_CONF_ERROR;
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
710 }
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
711
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
712 *c = value[i];
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
713 }
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
714
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
715 return NGX_CONF_OK;
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
716 }