annotate mail_resolver.t @ 1836:74cffa9d4c43

Tests: enabled session reuse via TLS session tickets. This fixes tests with TLSv1.3 enabled when using BoringSSL, since for TLSv1.3 it only supports session reuse via TLS session tickets, and not server-side session cache.
author Maxim Dounin <mdounin@mdounin.ru>
date Thu, 23 Mar 2023 19:50:02 +0300
parents 5ac6efbe5552
children cdcd75657e52
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 ###############################################################################