annotate src/mail/ngx_mail_core_module.c @ 9236:d9a52ebb9b00

Mail: max_commands directive. The directive specifies the maximum number of commands allowed during authentication, after which the connection is closed. The default limit is 1000, which is not expected to affect any well-behaving clients, since authentication usually requires at most several commands, though will effectively stop malicious clients from flooding the server with with commands.
author Maxim Dounin <mdounin@mdounin.ru>
date Sat, 30 Mar 2024 05:05:53 +0300
parents 2af1287d2da7
children
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
9236
d9a52ebb9b00 Mail: max_commands directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8117
diff changeset
95 { ngx_string("max_commands"),
d9a52ebb9b00 Mail: max_commands directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8117
diff changeset
96 NGX_MAIL_MAIN_CONF|NGX_MAIL_SRV_CONF|NGX_CONF_TAKE1,
d9a52ebb9b00 Mail: max_commands directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8117
diff changeset
97 ngx_conf_set_num_slot,
d9a52ebb9b00 Mail: max_commands directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8117
diff changeset
98 NGX_MAIL_SRV_CONF_OFFSET,
d9a52ebb9b00 Mail: max_commands directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8117
diff changeset
99 offsetof(ngx_mail_core_srv_conf_t, max_commands),
d9a52ebb9b00 Mail: max_commands directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8117
diff changeset
100 NULL },
d9a52ebb9b00 Mail: max_commands directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8117
diff changeset
101
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
102 ngx_null_command
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
103 };
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
104
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
105
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
106 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
107 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
108
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
109 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
110 NULL, /* init main configuration */
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
111
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
112 ngx_mail_core_create_srv_conf, /* create server configuration */
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
113 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
114 };
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
115
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
116
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
117 ngx_module_t ngx_mail_core_module = {
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
118 NGX_MODULE_V1,
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
119 &ngx_mail_core_module_ctx, /* module context */
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
120 ngx_mail_core_commands, /* module directives */
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
121 NGX_MAIL_MODULE, /* module type */
541
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
122 NULL, /* init master */
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
123 NULL, /* init module */
541
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
124 NULL, /* init process */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
125 NULL, /* init thread */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
126 NULL, /* exit thread */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
127 NULL, /* exit process */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
128 NULL, /* exit master */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
129 NGX_MODULE_V1_PADDING
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
130 };
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
131
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
132
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
133 static void *
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
134 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
135 {
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
136 ngx_mail_core_main_conf_t *cmcf;
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
137
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
138 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
139 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
140 return NULL;
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
141 }
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
142
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
143 if (ngx_array_init(&cmcf->servers, cf->pool, 4,
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
144 sizeof(ngx_mail_core_srv_conf_t *))
641
5e8fb59c18c1 nginx-0.3.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 619
diff changeset
145 != NGX_OK)
5e8fb59c18c1 nginx-0.3.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 619
diff changeset
146 {
2912
c7d57b539248 return NULL instead of NGX_CONF_ERROR on a create conf failure
Igor Sysoev <igor@sysoev.ru>
parents: 2855
diff changeset
147 return NULL;
641
5e8fb59c18c1 nginx-0.3.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 619
diff changeset
148 }
5e8fb59c18c1 nginx-0.3.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 619
diff changeset
149
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
150 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
151 != NGX_OK)
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
152 {
2912
c7d57b539248 return NULL instead of NGX_CONF_ERROR on a create conf failure
Igor Sysoev <igor@sysoev.ru>
parents: 2855
diff changeset
153 return NULL;
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
154 }
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
155
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
156 return cmcf;
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
157 }
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
158
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
159
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
160 static void *
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
161 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
162 {
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
163 ngx_mail_core_srv_conf_t *cscf;
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
164
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
165 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
166 if (cscf == NULL) {
527
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
167 return NULL;
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
168 }
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 /*
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
171 * 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
172 *
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
173 * cscf->protocol = NULL;
6130
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
174 * 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
175 */
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
176
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
177 cscf->timeout = NGX_CONF_UNSET_MSEC;
1892
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
178 cscf->resolver_timeout = NGX_CONF_UNSET_MSEC;
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
179
7844
ec1071830799 Mail: max_errors directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7794
diff changeset
180 cscf->max_errors = NGX_CONF_UNSET_UINT;
9236
d9a52ebb9b00 Mail: max_commands directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8117
diff changeset
181 cscf->max_commands = NGX_CONF_UNSET_UINT;
7844
ec1071830799 Mail: max_errors directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7794
diff changeset
182
1896
4c060e30476b do not resolve SMTP clients by default
Igor Sysoev <igor@sysoev.ru>
parents: 1892
diff changeset
183 cscf->resolver = NGX_CONF_UNSET_PTR;
4c060e30476b do not resolve SMTP clients by default
Igor Sysoev <igor@sysoev.ru>
parents: 1892
diff changeset
184
1892
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
185 cscf->file_name = cf->conf_file->file.name.data;
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
186 cscf->line = cf->conf_file->line;
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
187
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
188 return cscf;
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
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
191
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
192 static char *
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
193 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
194 {
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
195 ngx_mail_core_srv_conf_t *prev = parent;
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
196 ngx_mail_core_srv_conf_t *conf = child;
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
197
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
198 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
199 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
200 30000);
1481
b58ce1cf66da smtp_client_buffer and smtp_greeting_delay
Igor Sysoev <igor@sysoev.ru>
parents: 1323
diff changeset
201
7844
ec1071830799 Mail: max_errors directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7794
diff changeset
202 ngx_conf_merge_uint_value(conf->max_errors, prev->max_errors, 5);
9236
d9a52ebb9b00 Mail: max_commands directive.
Maxim Dounin <mdounin@mdounin.ru>
parents: 8117
diff changeset
203 ngx_conf_merge_uint_value(conf->max_commands, prev->max_commands, 1000);
800
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
204
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
205 ngx_conf_merge_str_value(conf->server_name, prev->server_name, "");
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
206
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
207 if (conf->server_name.len == 0) {
2011
b56d4b1ebac7 $hostname variable
Igor Sysoev <igor@sysoev.ru>
parents: 1918
diff changeset
208 conf->server_name = cf->cycle->hostname;
800
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
209 }
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
210
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
211 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
212 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
213 "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
214 conf->file_name, conf->line);
583
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
215 return NGX_CONF_ERROR;
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
216 }
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
217
6130
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
218 if (conf->error_log == NULL) {
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
219 if (prev->error_log) {
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
220 conf->error_log = prev->error_log;
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
221 } else {
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
222 conf->error_log = &cf->cycle->new_log;
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
223 }
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
224 }
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
225
1896
4c060e30476b do not resolve SMTP clients by default
Igor Sysoev <igor@sysoev.ru>
parents: 1892
diff changeset
226 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
227
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
228 return NGX_CONF_OK;
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
229 }
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
230
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
231
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
232 static char *
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
233 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
234 {
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
235 char *rv;
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
236 void *mconf;
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
237 ngx_uint_t m;
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
238 ngx_conf_t pcf;
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
239 ngx_mail_module_t *module;
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
240 ngx_mail_conf_ctx_t *ctx, *mail_ctx;
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
241 ngx_mail_core_srv_conf_t *cscf, **cscfp;
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
242 ngx_mail_core_main_conf_t *cmcf;
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
243
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
244 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
245 if (ctx == NULL) {
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
246 return NGX_CONF_ERROR;
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
247 }
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
248
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
249 mail_ctx = cf->ctx;
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
250 ctx->main_conf = mail_ctx->main_conf;
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
251
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
252 /* the server{}'s srv_conf */
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
253
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
254 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
255 if (ctx->srv_conf == NULL) {
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
256 return NGX_CONF_ERROR;
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
257 }
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
258
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6230
diff changeset
259 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
260 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
261 continue;
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
262 }
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
263
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6230
diff changeset
264 module = cf->cycle->modules[m]->ctx;
521
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 if (module->create_srv_conf) {
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
267 mconf = module->create_srv_conf(cf);
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
268 if (mconf == NULL) {
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
269 return NGX_CONF_ERROR;
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
270 }
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
271
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6230
diff changeset
272 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
273 }
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
274 }
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
275
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
276 /* the server configuration context */
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
277
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
278 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
279 cscf->ctx = ctx;
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
280
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
281 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
282
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
283 cscfp = ngx_array_push(&cmcf->servers);
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
284 if (cscfp == NULL) {
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
285 return NGX_CONF_ERROR;
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
286 }
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 *cscfp = cscf;
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
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
291 /* parse inside server{} */
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
292
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
293 pcf = *cf;
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
294 cf->ctx = ctx;
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
295 cf->cmd_type = NGX_MAIL_SRV_CONF;
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
296
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
297 rv = ngx_conf_parse(cf, NULL);
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
298
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
299 *cf = pcf;
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
300
6657
3d5202c71f94 Ensure "listen" exists in a mail or stream server (ticket #1049).
Roman Arutyunyan <arut@nginx.com>
parents: 6560
diff changeset
301 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
302 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
303 "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
304 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
305 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
306 }
3d5202c71f94 Ensure "listen" exists in a mail or stream server (ticket #1049).
Roman Arutyunyan <arut@nginx.com>
parents: 6560
diff changeset
307
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
308 return rv;
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
309 }
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
310
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
311
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
312 static char *
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
313 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
314 {
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
315 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
316
6976
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
317 ngx_str_t *value, size;
804
472cd9768ac2 now the "listen" directives use ngx_parse_url()
Igor Sysoev <igor@sysoev.ru>
parents: 800
diff changeset
318 ngx_url_t u;
7478
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
319 ngx_uint_t i, n, m;
8104
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
320 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
321 ngx_mail_module_t *module;
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
322 ngx_mail_core_main_conf_t *cmcf;
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
323
6657
3d5202c71f94 Ensure "listen" exists in a mail or stream server (ticket #1049).
Roman Arutyunyan <arut@nginx.com>
parents: 6560
diff changeset
324 cscf->listen = 1;
3d5202c71f94 Ensure "listen" exists in a mail or stream server (ticket #1049).
Roman Arutyunyan <arut@nginx.com>
parents: 6560
diff changeset
325
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
326 value = cf->args->elts;
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
327
804
472cd9768ac2 now the "listen" directives use ngx_parse_url()
Igor Sysoev <igor@sysoev.ru>
parents: 800
diff changeset
328 ngx_memzero(&u, sizeof(ngx_url_t));
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
329
804
472cd9768ac2 now the "listen" directives use ngx_parse_url()
Igor Sysoev <igor@sysoev.ru>
parents: 800
diff changeset
330 u.url = value[1];
472cd9768ac2 now the "listen" directives use ngx_parse_url()
Igor Sysoev <igor@sysoev.ru>
parents: 800
diff changeset
331 u.listen = 1;
619
7a16e281c01f nginx-0.3.31-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 587
diff changeset
332
1559
fe11e2a3946d use pool instead of ngx_conf_t
Igor Sysoev <igor@sysoev.ru>
parents: 1487
diff changeset
333 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
334 if (u.err) {
472cd9768ac2 now the "listen" directives use ngx_parse_url()
Igor Sysoev <igor@sysoev.ru>
parents: 800
diff changeset
335 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
336 "%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
337 u.err, &u.url);
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
338 }
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
339
804
472cd9768ac2 now the "listen" directives use ngx_parse_url()
Igor Sysoev <igor@sysoev.ru>
parents: 800
diff changeset
340 return NGX_CONF_ERROR;
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
341 }
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
342
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
343 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
344
8104
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
345 ls = ngx_array_push(&cmcf->listen);
2798
268d8d3faa34 axe imap module artifacts
Igor Sysoev <igor@sysoev.ru>
parents: 2512
diff changeset
346 if (ls == NULL) {
641
5e8fb59c18c1 nginx-0.3.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 619
diff changeset
347 return NGX_CONF_ERROR;
5e8fb59c18c1 nginx-0.3.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 619
diff changeset
348 }
563
9c2f3ed7a247 nginx-0.3.3-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 543
diff changeset
349
2798
268d8d3faa34 axe imap module artifacts
Igor Sysoev <igor@sysoev.ru>
parents: 2512
diff changeset
350 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
351
6173
1729d8d3eb3a Mail: listen backlog=.
Ruslan Ermilov <ru@nginx.com>
parents: 6171
diff changeset
352 ls->backlog = NGX_LISTEN_BACKLOG;
6976
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
353 ls->rcvbuf = -1;
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
354 ls->sndbuf = -1;
2798
268d8d3faa34 axe imap module artifacts
Igor Sysoev <igor@sysoev.ru>
parents: 2512
diff changeset
355 ls->ctx = cf->ctx;
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
356
6719
cebf5fed00bf Modules compatibility: removed unneeded IPV6_V6ONLY checks.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6657
diff changeset
357 #if (NGX_HAVE_INET6)
4771
bdcdbdf35b52 Core: ipv6only is now on by default.
Ruslan Ermilov <ru@nginx.com>
parents: 4522
diff changeset
358 ls->ipv6only = 1;
bdcdbdf35b52 Core: ipv6only is now on by default.
Ruslan Ermilov <ru@nginx.com>
parents: 4522
diff changeset
359 #endif
bdcdbdf35b52 Core: ipv6only is now on by default.
Ruslan Ermilov <ru@nginx.com>
parents: 4522
diff changeset
360
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
361 if (cscf->protocol == NULL) {
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6230
diff changeset
362 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
363 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
364 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
365 }
4822
cf3e9e6a7624 Whitespace fix.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4819
diff changeset
366
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6230
diff changeset
367 module = cf->cycle->modules[m]->ctx;
4822
cf3e9e6a7624 Whitespace fix.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4819
diff changeset
368
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
369 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
370 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
371 }
4822
cf3e9e6a7624 Whitespace fix.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4819
diff changeset
372
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
373 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
374 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
375 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
376 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
377 }
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
378 }
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
379 }
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
380 }
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
381
2224
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
382 for (i = 2; i < cf->args->nelts; i++) {
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
383
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
384 if (ngx_strcmp(value[i].data, "bind") == 0) {
2798
268d8d3faa34 axe imap module artifacts
Igor Sysoev <igor@sysoev.ru>
parents: 2512
diff changeset
385 ls->bind = 1;
2224
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
386 continue;
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
387 }
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
388
6173
1729d8d3eb3a Mail: listen backlog=.
Ruslan Ermilov <ru@nginx.com>
parents: 6171
diff changeset
389 if (ngx_strncmp(value[i].data, "backlog=", 8) == 0) {
1729d8d3eb3a Mail: listen backlog=.
Ruslan Ermilov <ru@nginx.com>
parents: 6171
diff changeset
390 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
391 ls->bind = 1;
1729d8d3eb3a Mail: listen backlog=.
Ruslan Ermilov <ru@nginx.com>
parents: 6171
diff changeset
392
1729d8d3eb3a Mail: listen backlog=.
Ruslan Ermilov <ru@nginx.com>
parents: 6171
diff changeset
393 if (ls->backlog == NGX_ERROR || ls->backlog == 0) {
1729d8d3eb3a Mail: listen backlog=.
Ruslan Ermilov <ru@nginx.com>
parents: 6171
diff changeset
394 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
1729d8d3eb3a Mail: listen backlog=.
Ruslan Ermilov <ru@nginx.com>
parents: 6171
diff changeset
395 "invalid backlog \"%V\"", &value[i]);
1729d8d3eb3a Mail: listen backlog=.
Ruslan Ermilov <ru@nginx.com>
parents: 6171
diff changeset
396 return NGX_CONF_ERROR;
1729d8d3eb3a Mail: listen backlog=.
Ruslan Ermilov <ru@nginx.com>
parents: 6171
diff changeset
397 }
1729d8d3eb3a Mail: listen backlog=.
Ruslan Ermilov <ru@nginx.com>
parents: 6171
diff changeset
398
1729d8d3eb3a Mail: listen backlog=.
Ruslan Ermilov <ru@nginx.com>
parents: 6171
diff changeset
399 continue;
1729d8d3eb3a Mail: listen backlog=.
Ruslan Ermilov <ru@nginx.com>
parents: 6171
diff changeset
400 }
1729d8d3eb3a Mail: listen backlog=.
Ruslan Ermilov <ru@nginx.com>
parents: 6171
diff changeset
401
6976
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
402 if (ngx_strncmp(value[i].data, "rcvbuf=", 7) == 0) {
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
403 size.len = value[i].len - 7;
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
404 size.data = value[i].data + 7;
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 ls->rcvbuf = ngx_parse_size(&size);
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
407 ls->bind = 1;
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 (ls->rcvbuf == NGX_ERROR) {
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
410 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
411 "invalid rcvbuf \"%V\"", &value[i]);
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
412 return NGX_CONF_ERROR;
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
413 }
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
414
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
415 continue;
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
416 }
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
417
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
418 if (ngx_strncmp(value[i].data, "sndbuf=", 7) == 0) {
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
419 size.len = value[i].len - 7;
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
420 size.data = value[i].data + 7;
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 ls->sndbuf = ngx_parse_size(&size);
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
423 ls->bind = 1;
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
424
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
425 if (ls->sndbuf == NGX_ERROR) {
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
426 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
427 "invalid sndbuf \"%V\"", &value[i]);
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
428 return NGX_CONF_ERROR;
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
429 }
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
430
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
431 continue;
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
432 }
6c13008ad503 Mail: configurable socket buffer sizes.
Vladimir Homutov <vl@nginx.com>
parents: 6719
diff changeset
433
2855
a96a8c916b0c mail proxy listen IPv6 support
Igor Sysoev <igor@sysoev.ru>
parents: 2798
diff changeset
434 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
435 #if (NGX_HAVE_INET6 && defined IPV6_V6ONLY)
7478
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
436 if (ngx_strcmp(&value[i].data[10], "n") == 0) {
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
437 ls->ipv6only = 1;
2855
a96a8c916b0c mail proxy listen IPv6 support
Igor Sysoev <igor@sysoev.ru>
parents: 2798
diff changeset
438
7478
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
439 } else if (ngx_strcmp(&value[i].data[10], "ff") == 0) {
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
440 ls->ipv6only = 0;
2855
a96a8c916b0c mail proxy listen IPv6 support
Igor Sysoev <igor@sysoev.ru>
parents: 2798
diff changeset
441
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,
7478
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
444 "invalid ipv6only flags \"%s\"",
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
445 &value[i].data[9]);
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
446 return NGX_CONF_ERROR;
2855
a96a8c916b0c mail proxy listen IPv6 support
Igor Sysoev <igor@sysoev.ru>
parents: 2798
diff changeset
447 }
a96a8c916b0c mail proxy listen IPv6 support
Igor Sysoev <igor@sysoev.ru>
parents: 2798
diff changeset
448
7478
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
449 ls->bind = 1;
2855
a96a8c916b0c mail proxy listen IPv6 support
Igor Sysoev <igor@sysoev.ru>
parents: 2798
diff changeset
450 continue;
a96a8c916b0c mail proxy listen IPv6 support
Igor Sysoev <igor@sysoev.ru>
parents: 2798
diff changeset
451 #else
a96a8c916b0c mail proxy listen IPv6 support
Igor Sysoev <igor@sysoev.ru>
parents: 2798
diff changeset
452 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
a96a8c916b0c mail proxy listen IPv6 support
Igor Sysoev <igor@sysoev.ru>
parents: 2798
diff changeset
453 "bind ipv6only is not supported "
a96a8c916b0c mail proxy listen IPv6 support
Igor Sysoev <igor@sysoev.ru>
parents: 2798
diff changeset
454 "on this platform");
a96a8c916b0c mail proxy listen IPv6 support
Igor Sysoev <igor@sysoev.ru>
parents: 2798
diff changeset
455 return NGX_CONF_ERROR;
a96a8c916b0c mail proxy listen IPv6 support
Igor Sysoev <igor@sysoev.ru>
parents: 2798
diff changeset
456 #endif
a96a8c916b0c mail proxy listen IPv6 support
Igor Sysoev <igor@sysoev.ru>
parents: 2798
diff changeset
457 }
a96a8c916b0c mail proxy listen IPv6 support
Igor Sysoev <igor@sysoev.ru>
parents: 2798
diff changeset
458
2224
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
459 if (ngx_strcmp(value[i].data, "ssl") == 0) {
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
460 #if (NGX_MAIL_SSL)
7269
7f955d3b9a0d SSL: detect "listen ... ssl" without certificates (ticket #178).
Maxim Dounin <mdounin@mdounin.ru>
parents: 6976
diff changeset
461 ngx_mail_ssl_conf_t *sslcf;
7f955d3b9a0d SSL: detect "listen ... ssl" without certificates (ticket #178).
Maxim Dounin <mdounin@mdounin.ru>
parents: 6976
diff changeset
462
7f955d3b9a0d SSL: detect "listen ... ssl" without certificates (ticket #178).
Maxim Dounin <mdounin@mdounin.ru>
parents: 6976
diff changeset
463 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
464
7f955d3b9a0d SSL: detect "listen ... ssl" without certificates (ticket #178).
Maxim Dounin <mdounin@mdounin.ru>
parents: 6976
diff changeset
465 sslcf->listen = 1;
7f955d3b9a0d SSL: detect "listen ... ssl" without certificates (ticket #178).
Maxim Dounin <mdounin@mdounin.ru>
parents: 6976
diff changeset
466 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
467 sslcf->line = cf->conf_file->line;
7f955d3b9a0d SSL: detect "listen ... ssl" without certificates (ticket #178).
Maxim Dounin <mdounin@mdounin.ru>
parents: 6976
diff changeset
468
2798
268d8d3faa34 axe imap module artifacts
Igor Sysoev <igor@sysoev.ru>
parents: 2512
diff changeset
469 ls->ssl = 1;
7269
7f955d3b9a0d SSL: detect "listen ... ssl" without certificates (ticket #178).
Maxim Dounin <mdounin@mdounin.ru>
parents: 6976
diff changeset
470
2224
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
471 continue;
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
472 #else
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
473 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
474 "the \"ssl\" parameter requires "
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
475 "ngx_mail_ssl_module");
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
476 return NGX_CONF_ERROR;
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
477 #endif
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
478 }
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
479
4323
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
480 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
481
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
482 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
483 ls->so_keepalive = 1;
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 } 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
486 ls->so_keepalive = 2;
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 } else {
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
489
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
490 #if (NGX_HAVE_KEEPALIVE_TUNABLE)
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
491 u_char *p, *end;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
492 ngx_str_t s;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
493
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
494 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
495 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
496
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
497 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
498 if (p == NULL) {
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
499 p = end;
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 if (p > s.data) {
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
503 s.len = p - s.data;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
504
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
505 ls->tcp_keepidle = ngx_parse_time(&s, 1);
4474
41f640a693de Time parsing cleanup.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
506 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
507 goto invalid_so_keepalive;
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 }
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
510
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
511 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
512
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
513 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
514 if (p == NULL) {
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
515 p = end;
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 if (p > s.data) {
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
519 s.len = p - s.data;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
520
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
521 ls->tcp_keepintvl = ngx_parse_time(&s, 1);
4474
41f640a693de Time parsing cleanup.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
522 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
523 goto invalid_so_keepalive;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
524 }
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
525 }
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 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
528
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
529 if (s.data < end) {
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
530 s.len = end - s.data;
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 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
533 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
534 goto invalid_so_keepalive;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
535 }
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
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
538 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
539 && ls->tcp_keepcnt == 0)
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
540 {
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
541 goto invalid_so_keepalive;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
542 }
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 ls->so_keepalive = 1;
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 #else
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
547
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
548 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
549 "the \"so_keepalive\" parameter accepts "
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
550 "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
551 return NGX_CONF_ERROR;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
552
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
553 #endif
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
554 }
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
555
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
556 ls->bind = 1;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
557
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
558 continue;
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 #if (NGX_HAVE_KEEPALIVE_TUNABLE)
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
561 invalid_so_keepalive:
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
562
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
563 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
564 "invalid so_keepalive value: \"%s\"",
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
565 &value[i].data[13]);
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
566 return NGX_CONF_ERROR;
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
567 #endif
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
568 }
c4513d4dd024 Added the "so_keepalive=" parameter to the "listen" directive.
Valentin Bartenev <vbart@nginx.com>
parents: 4225
diff changeset
569
7794
12ea1de7d87c Mail: parsing of the PROXY protocol from clients.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7478
diff changeset
570 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
571 ls->proxy_protocol = 1;
12ea1de7d87c Mail: parsing of the PROXY protocol from clients.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7478
diff changeset
572 continue;
12ea1de7d87c Mail: parsing of the PROXY protocol from clients.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7478
diff changeset
573 }
12ea1de7d87c Mail: parsing of the PROXY protocol from clients.
Maxim Dounin <mdounin@mdounin.ru>
parents: 7478
diff changeset
574
2224
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
575 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
576 "the invalid \"%V\" parameter", &value[i]);
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
577 return NGX_CONF_ERROR;
641
5e8fb59c18c1 nginx-0.3.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 619
diff changeset
578 }
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
579
8104
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
580 for (n = 0; n < u.naddrs; n++) {
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 for (i = 0; i < n; i++) {
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
583 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
584 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
585 == NGX_OK)
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 goto next;
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
588 }
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
589 }
7478
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
590
8104
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
591 if (n != 0) {
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
592 nls = ngx_array_push(&cmcf->listen);
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
593 if (nls == NULL) {
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
594 return NGX_CONF_ERROR;
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
595 }
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
596
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
597 *nls = *ls;
7478
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
598
8104
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
599 } else {
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
600 nls = ls;
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
601 }
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
602
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
603 nls->sockaddr = u.addrs[n].sockaddr;
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
604 nls->socklen = u.addrs[n].socklen;
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
605 nls->addr_text = u.addrs[n].name;
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
606 nls->wildcard = ngx_inet_wildcard(nls->sockaddr);
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
607
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
608 als = cmcf->listen.elts;
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
609
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
610 for (i = 0; i < cmcf->listen.nelts - 1; i++) {
7478
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
611
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
612 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
613 nls->sockaddr, nls->socklen, 1)
7478
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
614 != NGX_OK)
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
615 {
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
616 continue;
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
617 }
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 ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
620 "duplicate \"%V\" address and port pair",
8104
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
621 &nls->addr_text);
7478
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
622 return NGX_CONF_ERROR;
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
623 }
8104
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
624
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
625 next:
4cc2bfeff46c Filtering duplicate addresses in listen (ticket #2400).
Maxim Dounin <mdounin@mdounin.ru>
parents: 7844
diff changeset
626 continue;
7478
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
627 }
4f9b72a229c1 Multiple addresses in "listen".
Roman Arutyunyan <arut@nginx.com>
parents: 7269
diff changeset
628
2224
109849282793 *) listen ssl
Igor Sysoev <igor@sysoev.ru>
parents: 2203
diff changeset
629 return NGX_CONF_OK;
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
630 }
527
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
631
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
632
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
633 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
634 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
635 {
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
636 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
637
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
638 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
639 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
640 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
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 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
643
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6230
diff changeset
644 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
645 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
646 continue;
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
647 }
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
648
6379
cf5e822cf470 Dynamic modules: changed ngx_modules to cycle->modules.
Maxim Dounin <mdounin@mdounin.ru>
parents: 6230
diff changeset
649 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
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 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
652 && 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
653 {
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
654 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
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 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
657 }
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
658 }
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
659
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
660 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
661 "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
662 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
663 }
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
664
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
665
1892
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
666 static char *
6130
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
667 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
668 {
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
669 ngx_mail_core_srv_conf_t *cscf = conf;
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
670
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
671 return ngx_log_set_log(cf, &cscf->error_log);
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
672 }
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
673
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
674
fc99323a3d79 Mail: error_log support.
Vladimir Homutov <vl@nginx.com>
parents: 5979
diff changeset
675 static char *
1892
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
676 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
677 {
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
678 ngx_mail_core_srv_conf_t *cscf = conf;
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
679
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
680 ngx_str_t *value;
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
681
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
682 value = cf->args->elts;
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
683
1918
a47516c7065b check duplicate resolver
Igor Sysoev <igor@sysoev.ru>
parents: 1913
diff changeset
684 if (cscf->resolver != NGX_CONF_UNSET_PTR) {
a47516c7065b check duplicate resolver
Igor Sysoev <igor@sysoev.ru>
parents: 1913
diff changeset
685 return "is duplicate";
a47516c7065b check duplicate resolver
Igor Sysoev <igor@sysoev.ru>
parents: 1913
diff changeset
686 }
a47516c7065b check duplicate resolver
Igor Sysoev <igor@sysoev.ru>
parents: 1913
diff changeset
687
1896
4c060e30476b do not resolve SMTP clients by default
Igor Sysoev <igor@sysoev.ru>
parents: 1892
diff changeset
688 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
689 cscf->resolver = NULL;
4c060e30476b do not resolve SMTP clients by default
Igor Sysoev <igor@sysoev.ru>
parents: 1892
diff changeset
690 return NGX_CONF_OK;
4c060e30476b do not resolve SMTP clients by default
Igor Sysoev <igor@sysoev.ru>
parents: 1892
diff changeset
691 }
4c060e30476b do not resolve SMTP clients by default
Igor Sysoev <igor@sysoev.ru>
parents: 1892
diff changeset
692
4225
016352c19049 Support of several servers in the "resolver" directive.
Igor Sysoev <igor@sysoev.ru>
parents: 2912
diff changeset
693 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
694 if (cscf->resolver == NULL) {
1892
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
695 return NGX_CONF_ERROR;
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
696 }
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
697
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
698 return NGX_CONF_OK;
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
699 }
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
700
057d362ee50e resolver in smtp proxy module
Igor Sysoev <igor@sysoev.ru>
parents: 1559
diff changeset
701
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
702 char *
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
703 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
704 {
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
705 char *p = conf;
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
706
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
707 ngx_str_t *c, *value;
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
708 ngx_uint_t i;
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
709 ngx_array_t *a;
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 a = (ngx_array_t *) (p + cmd->offset);
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
712
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
713 value = cf->args->elts;
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 for (i = 1; i < cf->args->nelts; i++) {
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
716 c = ngx_array_push(a);
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
717 if (c == NULL) {
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
718 return NGX_CONF_ERROR;
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
719 }
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
720
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
721 *c = value[i];
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
722 }
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
723
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
724 return NGX_CONF_OK;
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
725 }