Mercurial > hg > nginx-tests
annotate mail_resolver.t @ 1701:408fe0dd3fed
Tests: fixed mail_imap_ssl.t too long shutdown.
Prior to literals support in IMAP test backend (e7f0b4ca0a1a), early backend
response was treated as invalid, with subsequent proxy connection close.
Now that the connection continues successfully, this requires connection
close before nginx shutdown. Otherwise, it would wait for proxy_timeout.
author | Sergey Kandaurov <pluknet@nginx.com> |
---|---|
date | Thu, 17 Jun 2021 19:52:36 +0300 |
parents | 5ac6efbe5552 |
children | cdcd75657e52 |
rev | line source |
---|---|
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
1 #!/usr/bin/perl |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
2 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
3 # (C) Sergey Kandaurov |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
4 # (C) Nginx, Inc. |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
5 |
355
14eba1ad0880
Tests: reduce race in mail resolver test.
Sergey Kandaurov <pluknet@nginx.com>
parents:
352
diff
changeset
|
6 # Tests for mail resolver. |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
7 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
8 ############################################################################### |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
9 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
10 use warnings; |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
11 use strict; |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
12 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
13 use Test::More; |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
14 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
15 BEGIN { use FindBin; chdir($FindBin::Bin); } |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
16 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
17 use lib 'lib'; |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
18 use Test::Nginx; |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
19 use Test::Nginx::SMTP; |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
20 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
21 ############################################################################### |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
22 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
23 select STDERR; $| = 1; |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
24 select STDOUT; $| = 1; |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
25 |
1496
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
26 eval { require IO::Socket::SSL; }; |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
27 plan(skip_all => 'IO::Socket::SSL not installed') if $@; |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
28 eval { IO::Socket::SSL::SSL_VERIFY_NONE(); }; |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
29 plan(skip_all => 'IO::Socket::SSL too old') if $@; |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
30 |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
31 local $SIG{PIPE} = 'IGNORE'; |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
32 |
1496
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
33 my $t = Test::Nginx->new()->has(qw/mail mail_ssl smtp http rewrite/) |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
34 ->has_daemon('openssl')->plan(11) |
976
a8b8dd6e8ae1
Tests: changed startup order in mail tests for consistency.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
970
diff
changeset
|
35 ->write_file_expand('nginx.conf', <<'EOF'); |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
36 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
37 %%TEST_GLOBALS%% |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
38 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
39 daemon off; |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
40 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
41 events { |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
42 } |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
43 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
44 mail { |
970
c227348453db
Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
952
diff
changeset
|
45 auth_http http://127.0.0.1:8080/mail/auth; |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
46 smtp_auth none; |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
47 server_name locahost; |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
48 |
1679
74986ebee2fd
Tests: added proxy_timeout in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1496
diff
changeset
|
49 proxy_timeout 15s; |
74986ebee2fd
Tests: added proxy_timeout in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
1496
diff
changeset
|
50 |
362
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
51 # prevent useless resend |
906
0654d7315b52
Tests: adjusted resolver timeout in mail resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
839
diff
changeset
|
52 resolver_timeout 2s; |
362
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
53 |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
54 server { |
970
c227348453db
Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
952
diff
changeset
|
55 listen 127.0.0.1:8025; |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
56 protocol smtp; |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1215
diff
changeset
|
57 resolver 127.0.0.1:%%PORT_8981_UDP%% |
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1215
diff
changeset
|
58 127.0.0.1:%%PORT_8982_UDP%% |
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1215
diff
changeset
|
59 127.0.0.1:%%PORT_8983_UDP%%; |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
60 } |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
61 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
62 server { |
970
c227348453db
Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
952
diff
changeset
|
63 listen 127.0.0.1:8027; |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
64 protocol smtp; |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1215
diff
changeset
|
65 resolver 127.0.0.1:%%PORT_8982_UDP%%; |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
66 } |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
67 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
68 server { |
970
c227348453db
Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
952
diff
changeset
|
69 listen 127.0.0.1:8028; |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
70 protocol smtp; |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1215
diff
changeset
|
71 resolver 127.0.0.1:%%PORT_8983_UDP%%; |
1126
65fc7a0ca418
Tests: adjusted mail resolver timeout below client read timeout.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1020
diff
changeset
|
72 resolver_timeout 1s; |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
73 } |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
74 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
75 server { |
970
c227348453db
Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
952
diff
changeset
|
76 listen 127.0.0.1:8029; |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
77 protocol smtp; |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1215
diff
changeset
|
78 resolver 127.0.0.1:%%PORT_8984_UDP%%; |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
79 } |
362
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
80 |
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
81 server { |
970
c227348453db
Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
952
diff
changeset
|
82 listen 127.0.0.1:8030; |
362
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
83 protocol smtp; |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1215
diff
changeset
|
84 resolver 127.0.0.1:%%PORT_8985_UDP%%; |
362
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
85 } |
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
86 |
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
87 server { |
970
c227348453db
Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
952
diff
changeset
|
88 listen 127.0.0.1:8031; |
362
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
89 protocol smtp; |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1215
diff
changeset
|
90 resolver 127.0.0.1:%%PORT_8986_UDP%%; |
1215
26884729e06b
Tests: cope with resolver resend in mail resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1126
diff
changeset
|
91 resolver_timeout 1s; |
362
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
92 } |
809
ded6b7648d6e
Tests: added mail resolver test for CNAME and PTR records combined.
Sergey Kandaurov <pluknet@nginx.com>
parents:
806
diff
changeset
|
93 |
ded6b7648d6e
Tests: added mail resolver test for CNAME and PTR records combined.
Sergey Kandaurov <pluknet@nginx.com>
parents:
806
diff
changeset
|
94 server { |
970
c227348453db
Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
952
diff
changeset
|
95 listen 127.0.0.1:8032; |
809
ded6b7648d6e
Tests: added mail resolver test for CNAME and PTR records combined.
Sergey Kandaurov <pluknet@nginx.com>
parents:
806
diff
changeset
|
96 protocol smtp; |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1215
diff
changeset
|
97 resolver 127.0.0.1:%%PORT_8987_UDP%%; |
809
ded6b7648d6e
Tests: added mail resolver test for CNAME and PTR records combined.
Sergey Kandaurov <pluknet@nginx.com>
parents:
806
diff
changeset
|
98 } |
ded6b7648d6e
Tests: added mail resolver test for CNAME and PTR records combined.
Sergey Kandaurov <pluknet@nginx.com>
parents:
806
diff
changeset
|
99 |
1496
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
100 server { |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
101 ssl_certificate_key localhost.key; |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
102 ssl_certificate localhost.crt; |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
103 |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
104 listen 127.0.0.1:8033 ssl; |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
105 protocol smtp; |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
106 resolver 127.0.0.1:%%PORT_8983_UDP%%; |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
107 } |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
108 } |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
109 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
110 http { |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
111 %%TEST_GLOBALS_HTTP%% |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
112 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
113 server { |
970
c227348453db
Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
952
diff
changeset
|
114 listen 127.0.0.1:8080; |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
115 server_name localhost; |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
116 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
117 location = /mail/auth { |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
118 set $reply $http_client_host; |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
119 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
120 if ($http_client_host !~ UNAVAIL) { |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
121 set $reply OK; |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
122 } |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
123 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
124 add_header Auth-Status $reply; |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
125 add_header Auth-Server 127.0.0.1; |
970
c227348453db
Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
952
diff
changeset
|
126 add_header Auth-Port %%PORT_8026%%; |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
127 return 204; |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
128 } |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
129 } |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
130 } |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
131 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
132 EOF |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
133 |
1496
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
134 $t->write_file('openssl.conf', <<EOF); |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
135 [ req ] |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
136 default_bits = 2048 |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
137 encrypt_key = no |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
138 distinguished_name = req_distinguished_name |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
139 [ req_distinguished_name ] |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
140 EOF |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
141 |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
142 my $d = $t->testdir(); |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
143 |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
144 foreach my $name ('localhost') { |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
145 system('openssl req -x509 -new ' |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
146 . "-config $d/openssl.conf -subj /CN=$name/ " |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
147 . "-out $d/$name.crt -keyout $d/$name.key " |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
148 . ">>$d/openssl.out 2>&1") == 0 |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
149 or die "Can't create certificate for $name: $!\n"; |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
150 } |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
151 |
976
a8b8dd6e8ae1
Tests: changed startup order in mail tests for consistency.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
970
diff
changeset
|
152 $t->run_daemon(\&Test::Nginx::SMTP::smtp_test_daemon); |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1215
diff
changeset
|
153 $t->run_daemon(\&dns_daemon, port($_), $t) foreach (8981 .. 8987); |
976
a8b8dd6e8ae1
Tests: changed startup order in mail tests for consistency.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
970
diff
changeset
|
154 |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
155 $t->run(); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
156 |
976
a8b8dd6e8ae1
Tests: changed startup order in mail tests for consistency.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
970
diff
changeset
|
157 $t->waitforsocket('127.0.0.1:' . port(8026)); |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1215
diff
changeset
|
158 $t->waitforfile($t->testdir . '/' . port($_)) foreach (8981 .. 8987); |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
159 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
160 ############################################################################### |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
161 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
162 # PTR |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
163 |
970
c227348453db
Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
952
diff
changeset
|
164 my $s = Test::Nginx::SMTP->new(); |
1494
1356e7374c57
Tests: added mail resolver tests for PTR with rn->waiting.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1237
diff
changeset
|
165 my $s2 = Test::Nginx::SMTP->new(); |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
166 $s->read(); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
167 $s->send('EHLO example.com'); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
168 $s->read(); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
169 $s->send('MAIL FROM:<test@example.com> SIZE=100'); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
170 $s->read(); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
171 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
172 $s->send('RCPT TO:<test@example.com>'); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
173 $s->ok('PTR'); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
174 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
175 $s->send('QUIT'); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
176 $s->read(); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
177 |
1494
1356e7374c57
Tests: added mail resolver tests for PTR with rn->waiting.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1237
diff
changeset
|
178 $s2->read(); |
1356e7374c57
Tests: added mail resolver tests for PTR with rn->waiting.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1237
diff
changeset
|
179 $s2->send('EHLO example.com'); |
1356e7374c57
Tests: added mail resolver tests for PTR with rn->waiting.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1237
diff
changeset
|
180 $s2->ok('PTR waiting'); |
1356e7374c57
Tests: added mail resolver tests for PTR with rn->waiting.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1237
diff
changeset
|
181 |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1215
diff
changeset
|
182 # Cached PTR prevents from querying bad ns on port 8983 |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
183 |
970
c227348453db
Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
952
diff
changeset
|
184 $s = Test::Nginx::SMTP->new(); |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
185 $s->read(); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
186 $s->send('EHLO example.com'); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
187 $s->read(); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
188 $s->send('MAIL FROM:<test@example.com> SIZE=100'); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
189 $s->read(); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
190 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
191 $s->send('RCPT TO:<test@example.com>'); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
192 $s->ok('PTR cached'); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
193 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
194 $s->send('QUIT'); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
195 $s->read(); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
196 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
197 # SERVFAIL |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
198 |
970
c227348453db
Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
952
diff
changeset
|
199 $s = Test::Nginx::SMTP->new(PeerAddr => '127.0.0.1:' . port(8027)); |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
200 $s->read(); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
201 $s->send('EHLO example.com'); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
202 $s->read(); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
203 $s->send('MAIL FROM:<test@example.com> SIZE=100'); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
204 $s->read(); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
205 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
206 $s->send('RCPT TO:<test@example.com>'); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
207 $s->check(qr/TEMPUNAVAIL/, 'PTR SERVFAIL'); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
208 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
209 $s->send('QUIT'); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
210 $s->read(); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
211 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
212 # PTR with zero length RDATA |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
213 |
970
c227348453db
Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
952
diff
changeset
|
214 $s = Test::Nginx::SMTP->new(PeerAddr => '127.0.0.1:' . port(8028)); |
1494
1356e7374c57
Tests: added mail resolver tests for PTR with rn->waiting.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1237
diff
changeset
|
215 $s2 = Test::Nginx::SMTP->new(PeerAddr => '127.0.0.1:' . port(8028)); |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
216 $s->read(); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
217 $s->send('EHLO example.com'); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
218 $s->read(); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
219 $s->send('MAIL FROM:<test@example.com> SIZE=100'); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
220 $s->read(); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
221 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
222 $s->send('RCPT TO:<test@example.com>'); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
223 $s->check(qr/TEMPUNAVAIL/, 'PTR empty'); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
224 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
225 $s->send('QUIT'); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
226 $s->read(); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
227 |
1494
1356e7374c57
Tests: added mail resolver tests for PTR with rn->waiting.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1237
diff
changeset
|
228 # resolver timeout is set |
1356e7374c57
Tests: added mail resolver tests for PTR with rn->waiting.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1237
diff
changeset
|
229 |
1356e7374c57
Tests: added mail resolver tests for PTR with rn->waiting.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1237
diff
changeset
|
230 $s2->read(); |
1356e7374c57
Tests: added mail resolver tests for PTR with rn->waiting.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1237
diff
changeset
|
231 $s2->send('EHLO example.com'); |
1356e7374c57
Tests: added mail resolver tests for PTR with rn->waiting.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1237
diff
changeset
|
232 $s2->ok('PTR empty waiting'); |
1356e7374c57
Tests: added mail resolver tests for PTR with rn->waiting.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1237
diff
changeset
|
233 |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
234 # CNAME |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
235 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
236 TODO: { |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
237 local $TODO = 'support for CNAME RR'; |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
238 |
970
c227348453db
Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
952
diff
changeset
|
239 $s = Test::Nginx::SMTP->new(PeerAddr => '127.0.0.1:' . port(8029)); |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
240 $s->read(); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
241 $s->send('EHLO example.com'); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
242 $s->read(); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
243 $s->send('MAIL FROM:<test@example.com> SIZE=100'); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
244 $s->read(); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
245 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
246 $s->send('RCPT TO:<test@example.com>'); |
809
ded6b7648d6e
Tests: added mail resolver test for CNAME and PTR records combined.
Sergey Kandaurov <pluknet@nginx.com>
parents:
806
diff
changeset
|
247 $s->ok('CNAME'); |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
248 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
249 $s->send('QUIT'); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
250 $s->read(); |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
251 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
252 } |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
253 |
362
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
254 # uncompressed answer |
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
255 |
970
c227348453db
Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
952
diff
changeset
|
256 $s = Test::Nginx::SMTP->new(PeerAddr => '127.0.0.1:' . port(8030)); |
362
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
257 $s->read(); |
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
258 $s->send('EHLO example.com'); |
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
259 $s->read(); |
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
260 $s->send('MAIL FROM:<test@example.com> SIZE=100'); |
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
261 $s->read(); |
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
262 |
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
263 $s->send('RCPT TO:<test@example.com>'); |
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
264 $s->ok('uncompressed PTR'); |
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
265 |
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
266 $s->send('QUIT'); |
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
267 $s->read(); |
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
268 |
970
c227348453db
Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
952
diff
changeset
|
269 $s = Test::Nginx::SMTP->new(PeerAddr => '127.0.0.1:' . port(8031)); |
362
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
270 $s->read(); |
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
271 $s->send('EHLO example.com'); |
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
272 $s->read(); |
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
273 $s->send('MAIL FROM:<test@example.com> SIZE=100'); |
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
274 $s->read(); |
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
275 |
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
276 $s->send('RCPT TO:<test@example.com>'); |
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
277 $s->check(qr/TEMPUNAVAIL/, 'PTR type'); |
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
278 |
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
279 $s->send('QUIT'); |
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
280 $s->read(); |
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
281 |
809
ded6b7648d6e
Tests: added mail resolver test for CNAME and PTR records combined.
Sergey Kandaurov <pluknet@nginx.com>
parents:
806
diff
changeset
|
282 # CNAME and PTR in one answer section |
ded6b7648d6e
Tests: added mail resolver test for CNAME and PTR records combined.
Sergey Kandaurov <pluknet@nginx.com>
parents:
806
diff
changeset
|
283 |
970
c227348453db
Tests: simplified parallel modifications in mail tests.
Maxim Dounin <mdounin@mdounin.ru>
parents:
952
diff
changeset
|
284 $s = Test::Nginx::SMTP->new(PeerAddr => '127.0.0.1:' . port(8032)); |
809
ded6b7648d6e
Tests: added mail resolver test for CNAME and PTR records combined.
Sergey Kandaurov <pluknet@nginx.com>
parents:
806
diff
changeset
|
285 $s->read(); |
ded6b7648d6e
Tests: added mail resolver test for CNAME and PTR records combined.
Sergey Kandaurov <pluknet@nginx.com>
parents:
806
diff
changeset
|
286 $s->send('EHLO example.com'); |
ded6b7648d6e
Tests: added mail resolver test for CNAME and PTR records combined.
Sergey Kandaurov <pluknet@nginx.com>
parents:
806
diff
changeset
|
287 $s->read(); |
ded6b7648d6e
Tests: added mail resolver test for CNAME and PTR records combined.
Sergey Kandaurov <pluknet@nginx.com>
parents:
806
diff
changeset
|
288 $s->send('MAIL FROM:<test@example.com> SIZE=100'); |
ded6b7648d6e
Tests: added mail resolver test for CNAME and PTR records combined.
Sergey Kandaurov <pluknet@nginx.com>
parents:
806
diff
changeset
|
289 $s->read(); |
ded6b7648d6e
Tests: added mail resolver test for CNAME and PTR records combined.
Sergey Kandaurov <pluknet@nginx.com>
parents:
806
diff
changeset
|
290 |
ded6b7648d6e
Tests: added mail resolver test for CNAME and PTR records combined.
Sergey Kandaurov <pluknet@nginx.com>
parents:
806
diff
changeset
|
291 $s->send('RCPT TO:<test@example.com>'); |
ded6b7648d6e
Tests: added mail resolver test for CNAME and PTR records combined.
Sergey Kandaurov <pluknet@nginx.com>
parents:
806
diff
changeset
|
292 $s->ok('CNAME with PTR'); |
ded6b7648d6e
Tests: added mail resolver test for CNAME and PTR records combined.
Sergey Kandaurov <pluknet@nginx.com>
parents:
806
diff
changeset
|
293 |
ded6b7648d6e
Tests: added mail resolver test for CNAME and PTR records combined.
Sergey Kandaurov <pluknet@nginx.com>
parents:
806
diff
changeset
|
294 $s->send('QUIT'); |
ded6b7648d6e
Tests: added mail resolver test for CNAME and PTR records combined.
Sergey Kandaurov <pluknet@nginx.com>
parents:
806
diff
changeset
|
295 $s->read(); |
ded6b7648d6e
Tests: added mail resolver test for CNAME and PTR records combined.
Sergey Kandaurov <pluknet@nginx.com>
parents:
806
diff
changeset
|
296 |
1496
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
297 # before 1.17.3, read event while in resolving resulted in duplicate resolving |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
298 |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
299 my %ssl = ( |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
300 SSL => 1, |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
301 SSL_verify_mode => IO::Socket::SSL::SSL_VERIFY_NONE(), |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
302 SSL_error_trap => sub { die $_[1] }, |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
303 ); |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
304 |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
305 $s = Test::Nginx::SMTP->new(PeerAddr => '127.0.0.1:' . port(8033), %ssl); |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
306 $s->send('EHLO example.com'); |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
307 $s->read(); |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
308 $s->send('MAIL FROM:<test@example.com> SIZE=100'); |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
309 $s->read(); |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
310 $s->read(); |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
311 |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
312 $s->send('RCPT TO:<test@example.com>'); |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
313 $s->check(qr/TEMPUNAVAIL/, 'PTR SSL empty'); |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
314 |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
315 $s->send('QUIT'); |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
316 $s->read(); |
e1eb3432487b
Tests: added mail resolver tests with ssl.
Sergey Kandaurov <pluknet@nginx.com>
parents:
1494
diff
changeset
|
317 |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
318 ############################################################################### |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
319 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
320 sub reply_handler { |
357
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
321 my ($recv_data, $port) = @_; |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
322 |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
323 my (@name, @rdata); |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
324 |
357
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
325 use constant NOERROR => 0; |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
326 use constant SERVFAIL => 2; |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
327 use constant NXDOMAIN => 3; |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
328 |
357
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
329 use constant A => 1; |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
330 use constant CNAME => 5; |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
331 use constant PTR => 12; |
937
b1fa8e0cc27b
Tests: whitespaces fix.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
906
diff
changeset
|
332 use constant DNAME => 39; |
357
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
333 |
937
b1fa8e0cc27b
Tests: whitespaces fix.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
906
diff
changeset
|
334 use constant IN => 1; |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
335 |
357
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
336 # default values |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
337 |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
338 my ($hdr, $rcode, $ttl) = (0x8180, NOERROR, 3600); |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
339 |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
340 # decode name |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
341 |
357
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
342 my ($len, $offset) = (undef, 12); |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
343 while (1) { |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
344 $len = unpack("\@$offset C", $recv_data); |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
345 last if $len == 0; |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
346 $offset++; |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
347 push @name, unpack("\@$offset A$len", $recv_data); |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
348 $offset += $len; |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
349 } |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
350 |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
351 $offset -= 1; |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
352 my ($id, $type, $class) = unpack("n x$offset n2", $recv_data); |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
353 |
357
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
354 my $name = join('.', @name); |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
355 if ($name eq 'a.example.net' && $type == A) { |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
356 push @rdata, rd_addr($ttl, '127.0.0.1'); |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
357 |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
358 } elsif ($name eq '1.0.0.127.in-addr.arpa' && $type == PTR) { |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1215
diff
changeset
|
359 if ($port == port(8981)) { |
357
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
360 push @rdata, rd_name(PTR, $ttl, 'a.example.net'); |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
361 |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1215
diff
changeset
|
362 } elsif ($port == port(8982)) { |
357
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
363 $rcode = SERVFAIL; |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
364 |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1215
diff
changeset
|
365 } elsif ($port == port(8983)) { |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
366 # zero length RDATA |
357
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
367 |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
368 push @rdata, pack("n3N n", 0xc00c, PTR, IN, $ttl, 0); |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
369 |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1215
diff
changeset
|
370 } elsif ($port == port(8984)) { |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
371 # PTR answered with CNAME |
357
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
372 |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
373 push @rdata, rd_name(CNAME, $ttl, |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
374 '1.1.0.0.127.in-addr.arpa'); |
362
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
375 |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1215
diff
changeset
|
376 } elsif ($port == port(8985)) { |
362
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
377 # uncompressed answer |
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
378 |
775
a6764c2a9f12
Tests: fixed DNS label coding in resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
540
diff
changeset
|
379 push @rdata, pack("(C/a*)6x n2N n(C/a*)3x", |
362
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
380 ('1', '0', '0', '127', 'in-addr', 'arpa'), |
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
381 PTR, IN, $ttl, 15, ('a', 'example', 'net')); |
8ca9c75c97d2
Tests: more resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
361
diff
changeset
|
382 |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1215
diff
changeset
|
383 } elsif ($port == port(8986)) { |
806
ffdd33c64193
Tests: use DNAME type in PTR type checking test in mail_resolver.t.
Sergey Kandaurov <pluknet@nginx.com>
parents:
775
diff
changeset
|
384 push @rdata, rd_name(DNAME, $ttl, 'a.example.net'); |
ffdd33c64193
Tests: use DNAME type in PTR type checking test in mail_resolver.t.
Sergey Kandaurov <pluknet@nginx.com>
parents:
775
diff
changeset
|
385 |
1237
e4974af3fb12
Tests: adjusted udp ports to match allocated ports range.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
1215
diff
changeset
|
386 } elsif ($port == port(8987)) { |
809
ded6b7648d6e
Tests: added mail resolver test for CNAME and PTR records combined.
Sergey Kandaurov <pluknet@nginx.com>
parents:
806
diff
changeset
|
387 # PTR answered with CNAME+PTR |
ded6b7648d6e
Tests: added mail resolver test for CNAME and PTR records combined.
Sergey Kandaurov <pluknet@nginx.com>
parents:
806
diff
changeset
|
388 |
ded6b7648d6e
Tests: added mail resolver test for CNAME and PTR records combined.
Sergey Kandaurov <pluknet@nginx.com>
parents:
806
diff
changeset
|
389 push @rdata, rd_name(CNAME, $ttl, |
ded6b7648d6e
Tests: added mail resolver test for CNAME and PTR records combined.
Sergey Kandaurov <pluknet@nginx.com>
parents:
806
diff
changeset
|
390 '1.1.0.0.127.in-addr.arpa'); |
ded6b7648d6e
Tests: added mail resolver test for CNAME and PTR records combined.
Sergey Kandaurov <pluknet@nginx.com>
parents:
806
diff
changeset
|
391 push @rdata, pack("n3N n(C/a*)3 x", 0xc034, |
ded6b7648d6e
Tests: added mail resolver test for CNAME and PTR records combined.
Sergey Kandaurov <pluknet@nginx.com>
parents:
806
diff
changeset
|
392 PTR, IN, $ttl, 15, ('a', 'example', 'net')); |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
393 } |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
394 |
357
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
395 } elsif ($name eq '1.1.0.0.127.in-addr.arpa' && $type == PTR) { |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
396 push @rdata, rd_name(PTR, $ttl, 'a.example.net'); |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
397 } |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
398 |
357
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
399 $len = @name; |
775
a6764c2a9f12
Tests: fixed DNS label coding in resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
540
diff
changeset
|
400 pack("n6 (C/a*)$len x n2", $id, $hdr | $rcode, 1, scalar @rdata, |
357
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
401 0, 0, @name, $type, $class) . join('', @rdata); |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
402 } |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
403 |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
404 sub rd_name { |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
405 my ($type, $ttl, $name) = @_; |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
406 my ($rdlen, @rdname); |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
407 |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
408 @rdname = split /\./, $name; |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
409 $rdlen = length(join '', @rdname) + @rdname + 1; |
775
a6764c2a9f12
Tests: fixed DNS label coding in resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
540
diff
changeset
|
410 pack("n3N n(C/a*)* x", 0xc00c, $type, IN, $ttl, $rdlen, @rdname); |
357
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
411 } |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
412 |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
413 sub rd_addr { |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
414 my ($ttl, $addr) = @_; |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
415 |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
416 my $code = 'split(/\./, $addr)'; |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
417 |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
418 # use a special pack string to not zero pad |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
419 |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
420 return pack 'n3N', 0xc00c, A, IN, $ttl if $addr eq ''; |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
421 |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
422 pack 'n3N nC4', 0xc00c, A, IN, $ttl, eval "scalar $code", eval($code); |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
423 } |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
424 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
425 sub dns_daemon { |
357
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
426 my ($port, $t) = @_; |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
427 |
357
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
428 my ($data, $recv_data); |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
429 my $socket = IO::Socket::INET->new( |
937
b1fa8e0cc27b
Tests: whitespaces fix.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
906
diff
changeset
|
430 LocalAddr => '127.0.0.1', |
b1fa8e0cc27b
Tests: whitespaces fix.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
906
diff
changeset
|
431 LocalPort => $port, |
b1fa8e0cc27b
Tests: whitespaces fix.
Andrey Zelenkov <zelenkov@nginx.com>
parents:
906
diff
changeset
|
432 Proto => 'udp', |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
433 ) |
357
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
434 or die "Can't create listening socket: $!\n"; |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
435 |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
436 # signal we are ready |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
437 |
357
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
438 open my $fh, '>', $t->testdir() . '/' . $port; |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
439 close $fh; |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
440 |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
441 while (1) { |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
442 $socket->recv($recv_data, 65536); |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
443 $data = reply_handler($recv_data, $port); |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
444 $socket->send($data); |
e0c00e695cb5
Tests: removed Net::DNS dependency.
Sergey Kandaurov <pluknet@nginx.com>
parents:
355
diff
changeset
|
445 } |
352
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
446 } |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
447 |
145c37f27c5a
Tests: added resolver tests.
Sergey Kandaurov <pluknet@nginx.com>
parents:
diff
changeset
|
448 ############################################################################### |