annotate src/mail/ngx_mail_imap_module.c @ 6774:bcb107bb89cd

Mail: support SASL EXTERNAL (RFC 4422). This is needed to allow TLS client certificate auth to work. With ssl_verify_client configured, the auth daemon can choose to allow the connection to proceed based on the certificate data. This has been tested with Thunderbird for IMAP only. I've not yet found a client that will do client certificate auth for POP3 or SMTP, and the method is not really documented anywhere that I can find. That said, its simple enough that the way I've done is probably right.
author Rob N ★ <robn@fastmail.com>
date Sat, 08 Oct 2016 18:05:00 +1100
parents ec01b1d1fff1
children dc955d274130
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: 2309
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>
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
12 #include <ngx_mail_imap_module.h>
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
13
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
14
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
15 static void *ngx_mail_imap_create_srv_conf(ngx_conf_t *cf);
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
16 static char *ngx_mail_imap_merge_srv_conf(ngx_conf_t *cf, void *parent,
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
17 void *child);
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
18
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
19
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
20 static ngx_str_t ngx_mail_imap_default_capabilities[] = {
527
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
21 ngx_string("IMAP4"),
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
22 ngx_string("IMAP4rev1"),
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
23 ngx_string("UIDPLUS"),
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
24 ngx_null_string
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
25 };
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
26
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
27
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
28 static ngx_conf_bitmask_t ngx_mail_imap_auth_methods[] = {
1323
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
29 { ngx_string("plain"), NGX_MAIL_AUTH_PLAIN_ENABLED },
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
30 { ngx_string("login"), NGX_MAIL_AUTH_LOGIN_ENABLED },
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
31 { ngx_string("cram-md5"), NGX_MAIL_AUTH_CRAM_MD5_ENABLED },
6774
bcb107bb89cd Mail: support SASL EXTERNAL (RFC 4422).
Rob N ★ <robn@fastmail.com>
parents: 5989
diff changeset
32 { ngx_string("external"), NGX_MAIL_AUTH_EXTERNAL_ENABLED },
1323
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
33 { ngx_null_string, 0 }
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
34 };
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
35
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
36
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
37 static ngx_str_t ngx_mail_imap_auth_methods_names[] = {
1323
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
38 ngx_string("AUTH=PLAIN"),
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
39 ngx_string("AUTH=LOGIN"),
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
40 ngx_null_string, /* APOP */
2309
8156bc03982a smtp_auth none
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
41 ngx_string("AUTH=CRAM-MD5"),
6774
bcb107bb89cd Mail: support SASL EXTERNAL (RFC 4422).
Rob N ★ <robn@fastmail.com>
parents: 5989
diff changeset
42 ngx_string("AUTH=EXTERNAL"),
2309
8156bc03982a smtp_auth none
Igor Sysoev <igor@sysoev.ru>
parents: 2049
diff changeset
43 ngx_null_string /* NONE */
1323
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
44 };
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
45
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
46
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
47 static ngx_mail_protocol_t ngx_mail_imap_protocol = {
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_string("imap"),
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
49 { 143, 993, 0, 0 },
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
50 NGX_MAIL_IMAP_PROTOCOL,
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
51
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
52 ngx_mail_imap_init_session,
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
53 ngx_mail_imap_init_protocol,
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
54 ngx_mail_imap_parse_command,
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
55 ngx_mail_imap_auth_state,
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
56
5989
ec01b1d1fff1 Mail: client SSL certificates support.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
57 ngx_string("* BAD internal server error" CRLF),
ec01b1d1fff1 Mail: client SSL certificates support.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
58 ngx_string("* BYE SSL certificate error" CRLF),
ec01b1d1fff1 Mail: client SSL certificates support.
Maxim Dounin <mdounin@mdounin.ru>
parents: 4412
diff changeset
59 ngx_string("* BYE No required SSL certificate" CRLF)
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
60 };
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
61
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
62
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
63 static ngx_command_t ngx_mail_imap_commands[] = {
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
64
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
65 { ngx_string("imap_client_buffer"),
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
66 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
67 ngx_conf_set_size_slot,
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
68 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
69 offsetof(ngx_mail_imap_srv_conf_t, client_buffer_size),
527
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
70 NULL },
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
71
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
72 { ngx_string("imap_capabilities"),
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
73 NGX_MAIL_MAIN_CONF|NGX_MAIL_SRV_CONF|NGX_CONF_1MORE,
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
74 ngx_mail_capabilities,
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
75 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
76 offsetof(ngx_mail_imap_srv_conf_t, capabilities),
800
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
77 NULL },
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
78
1323
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
79 { ngx_string("imap_auth"),
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
80 NGX_MAIL_MAIN_CONF|NGX_MAIL_SRV_CONF|NGX_CONF_1MORE,
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
81 ngx_conf_set_bitmask_slot,
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
82 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
83 offsetof(ngx_mail_imap_srv_conf_t, auth_methods),
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
84 &ngx_mail_imap_auth_methods },
800
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
85
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
86 ngx_null_command
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
87 };
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
88
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
89
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
90 static ngx_mail_module_t ngx_mail_imap_module_ctx = {
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
91 &ngx_mail_imap_protocol, /* protocol */
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
92
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
93 NULL, /* create main configuration */
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
94 NULL, /* init main configuration */
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
95
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
96 ngx_mail_imap_create_srv_conf, /* create server configuration */
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
97 ngx_mail_imap_merge_srv_conf /* merge server configuration */
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
98 };
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
99
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
100
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
101 ngx_module_t ngx_mail_imap_module = {
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
102 NGX_MODULE_V1,
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
103 &ngx_mail_imap_module_ctx, /* module context */
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
104 ngx_mail_imap_commands, /* module directives */
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
105 NGX_MAIL_MODULE, /* module type */
541
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
106 NULL, /* init master */
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
107 NULL, /* init module */
541
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
108 NULL, /* init process */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
109 NULL, /* init thread */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
110 NULL, /* exit thread */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
111 NULL, /* exit process */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
112 NULL, /* exit master */
b09ee85d0ac8 nginx-0.1.45-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 539
diff changeset
113 NGX_MODULE_V1_PADDING
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
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
117 static void *
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
118 ngx_mail_imap_create_srv_conf(ngx_conf_t *cf)
577
4d9ea73a627a nginx-0.3.10-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 563
diff changeset
119 {
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
120 ngx_mail_imap_srv_conf_t *iscf;
641
5e8fb59c18c1 nginx-0.3.42-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 619
diff changeset
121
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
122 iscf = ngx_pcalloc(cf->pool, sizeof(ngx_mail_imap_srv_conf_t));
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
123 if (iscf == NULL) {
527
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
124 return NULL;
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
125 }
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
126
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
127 iscf->client_buffer_size = NGX_CONF_UNSET_SIZE;
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
128
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
129 if (ngx_array_init(&iscf->capabilities, cf->pool, 4, sizeof(ngx_str_t))
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
130 != NGX_OK)
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
131 {
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
132 return NULL;
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
133 }
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
134
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
135 return iscf;
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
136 }
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
137
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
138
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
139 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
140 ngx_mail_imap_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
141 {
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
142 ngx_mail_imap_srv_conf_t *prev = parent;
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
143 ngx_mail_imap_srv_conf_t *conf = child;
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
144
1322
27f2299e0d80 SMTP STARTTLS
Igor Sysoev <igor@sysoev.ru>
parents: 1174
diff changeset
145 u_char *p, *auth;
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
146 size_t size;
527
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
147 ngx_str_t *c, *d;
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
148 ngx_uint_t i, m;
527
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
149
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
150 ngx_conf_merge_size_value(conf->client_buffer_size,
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
151 prev->client_buffer_size,
1481
b58ce1cf66da smtp_client_buffer and smtp_greeting_delay
Igor Sysoev <igor@sysoev.ru>
parents: 1323
diff changeset
152 (size_t) ngx_pagesize);
b58ce1cf66da smtp_client_buffer and smtp_greeting_delay
Igor Sysoev <igor@sysoev.ru>
parents: 1323
diff changeset
153
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
154 ngx_conf_merge_bitmask_value(conf->auth_methods,
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
155 prev->auth_methods,
1481
b58ce1cf66da smtp_client_buffer and smtp_greeting_delay
Igor Sysoev <igor@sysoev.ru>
parents: 1323
diff changeset
156 (NGX_CONF_BITMASK_SET
b58ce1cf66da smtp_client_buffer and smtp_greeting_delay
Igor Sysoev <igor@sysoev.ru>
parents: 1323
diff changeset
157 |NGX_MAIL_AUTH_PLAIN_ENABLED));
1323
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
158
800
Igor Sysoev <igor@sysoev.ru>
parents: 663
diff changeset
159
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
160 if (conf->capabilities.nelts == 0) {
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
161 conf->capabilities = prev->capabilities;
527
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
162 }
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
163
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
164 if (conf->capabilities.nelts == 0) {
527
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
165
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
166 for (d = ngx_mail_imap_default_capabilities; d->len; d++) {
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
167 c = ngx_array_push(&conf->capabilities);
527
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
168 if (c == NULL) {
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
169 return NGX_CONF_ERROR;
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
170 }
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
171
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
172 *c = *d;
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
173 }
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
174 }
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
175
1136
68f30ab68bb7 Many changes:
Igor Sysoev <igor@sysoev.ru>
parents: 906
diff changeset
176 size = sizeof("* CAPABILITY" CRLF) - 1;
527
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
177
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
178 c = conf->capabilities.elts;
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
179 for (i = 0; i < conf->capabilities.nelts; i++) {
527
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
180 size += 1 + c[i].len;
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
181 }
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
182
1323
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
183 for (m = NGX_MAIL_AUTH_PLAIN_ENABLED, i = 0;
6774
bcb107bb89cd Mail: support SASL EXTERNAL (RFC 4422).
Rob N ★ <robn@fastmail.com>
parents: 5989
diff changeset
184 m <= NGX_MAIL_AUTH_EXTERNAL_ENABLED;
1323
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
185 m <<= 1, i++)
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
186 {
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
187 if (m & conf->auth_methods) {
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
188 size += 1 + ngx_mail_imap_auth_methods_names[i].len;
1323
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
189 }
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
190 }
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
191
2049
2a92804f4109 *) back out r2040
Igor Sysoev <igor@sysoev.ru>
parents: 1487
diff changeset
192 p = ngx_pnalloc(cf->pool, size);
583
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
193 if (p == NULL) {
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
194 return NGX_CONF_ERROR;
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
195 }
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
196
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
197 conf->capability.len = size;
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
198 conf->capability.data = p;
583
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
199
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
200 p = ngx_cpymem(p, "* CAPABILITY", sizeof("* CAPABILITY") - 1);
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
201
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
202 for (i = 0; i < conf->capabilities.nelts; i++) {
583
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
203 *p++ = ' ';
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
204 p = ngx_cpymem(p, c[i].data, c[i].len);
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
205 }
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
206
1323
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
207 auth = p;
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
208
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
209 for (m = NGX_MAIL_AUTH_PLAIN_ENABLED, i = 0;
6774
bcb107bb89cd Mail: support SASL EXTERNAL (RFC 4422).
Rob N ★ <robn@fastmail.com>
parents: 5989
diff changeset
210 m <= NGX_MAIL_AUTH_EXTERNAL_ENABLED;
1323
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
211 m <<= 1, i++)
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
212 {
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
213 if (m & conf->auth_methods) {
1323
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
214 *p++ = ' ';
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
215 p = ngx_cpymem(p, ngx_mail_imap_auth_methods_names[i].data,
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
216 ngx_mail_imap_auth_methods_names[i].len);
1323
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
217 }
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
218 }
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
219
583
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
220 *p++ = CR; *p = LF;
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
221
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
222
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
223 size += sizeof(" STARTTLS") - 1;
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
224
2049
2a92804f4109 *) back out r2040
Igor Sysoev <igor@sysoev.ru>
parents: 1487
diff changeset
225 p = ngx_pnalloc(cf->pool, size);
583
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
226 if (p == NULL) {
527
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
227 return NGX_CONF_ERROR;
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
228 }
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
229
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
230 conf->starttls_capability.len = size;
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
231 conf->starttls_capability.data = p;
527
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
232
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
233 p = ngx_cpymem(p, conf->capability.data,
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
234 conf->capability.len - (sizeof(CRLF) - 1));
583
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
235 p = ngx_cpymem(p, " STARTTLS", sizeof(" STARTTLS") - 1);
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
236 *p++ = CR; *p = LF;
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
237
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
238
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
239 size = (auth - conf->capability.data) + sizeof(CRLF) - 1
1323
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
240 + sizeof(" STARTTLS LOGINDISABLED") - 1;
583
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
241
2049
2a92804f4109 *) back out r2040
Igor Sysoev <igor@sysoev.ru>
parents: 1487
diff changeset
242 p = ngx_pnalloc(cf->pool, size);
583
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
243 if (p == NULL) {
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
244 return NGX_CONF_ERROR;
527
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
245 }
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
246
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
247 conf->starttls_only_capability.len = size;
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
248 conf->starttls_only_capability.data = p;
527
7fa11e5c6e96 nginx-0.1.38-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 523
diff changeset
249
1487
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
250 p = ngx_cpymem(p, conf->capability.data,
f69493e8faab ngx_mail_pop3_module, ngx_mail_imap_module, and ngx_mail_smtp_module
Igor Sysoev <igor@sysoev.ru>
parents: 1481
diff changeset
251 auth - conf->capability.data);
1323
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
252 p = ngx_cpymem(p, " STARTTLS LOGINDISABLED",
c4b2c893989d IMAP AUTHENTICATE
Igor Sysoev <igor@sysoev.ru>
parents: 1322
diff changeset
253 sizeof(" STARTTLS LOGINDISABLED") - 1);
583
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
254 *p++ = CR; *p = LF;
4e296b7d25bf nginx-0.3.13-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents: 577
diff changeset
255
521
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
256 return NGX_CONF_OK;
6f00349b98e5 nginx-0.1.35-RELEASE import
Igor Sysoev <igor@sysoev.ru>
parents:
diff changeset
257 }