51
51
upstream u3 {
52
52
zone z3 1m;
53
53
server trunc.example.net resolve service=http;
54
+ resolver 127.0.0.1:%%PORT_8982_UDP%% valid=1s;
54
55
}
55
56
56
57
# lower the retry timeout after empty reply
75
76
}
76
77
77
78
location /trunc {
78
- proxy_pass http://u2 /t;
79
+ proxy_pass http://u3 /t;
79
80
}
80
81
81
82
location /t { }
@@ -84,12 +85,15 @@ http {
84
85
85
86
EOF
86
87
87
- port(8084);
88
-
89
88
$t -> write_file(' t' , ' ' );
90
89
91
- $t -> run_daemon(\&dns_daemon, $t )-> waitforfile($t -> testdir . ' /' . port(8981));
92
- port(8981, socket => 1)-> close ();
90
+ $t -> run_daemon(\&dns_daemon, port(8981), port(8084), $t )
91
+ -> waitforfile($t -> testdir . ' /' . port(8981));
92
+
93
+ $t -> run_daemon(\&dns_daemon, port(8982), port(8085), $t , tcp => 1)
94
+ -> waitforfile($t -> testdir . ' /' . port(8982));
95
+ port(8982, socket => 1)-> close ();
96
+
93
97
$t -> try_run(' no service in upstream server' )-> plan(38);
94
98
95
99
# ##############################################################################
@@ -221,8 +225,6 @@ like($r, qr/127.0.0.201:$p0/, 'SRV diff 2');
221
225
222
226
# SRV trunc
223
227
224
- update_name({A => ' 127.0.0.1' , SRV => " 1 5 $p0 example.net" }, 3, 2);
225
-
226
228
$r = http_get(' /trunc' );
227
229
is(@n = $r =~ / :$p0 /g , 1, ' tcp request' );
228
230
like($r , qr / 127.0.0.1:$p0 / , ' tcp request 1' );
@@ -410,32 +412,37 @@ sub rd_addr6 {
410
412
}
411
413
412
414
sub dns_daemon {
413
- my ($t ) = @_ ;
415
+ my ($port , $control_port , $t , %extra ) = @_ ;
414
416
my ($data , $recv_data , $h );
415
417
416
418
my $socket = IO::Socket::INET-> new(
417
419
LocalAddr => ' 127.0.0.1' ,
418
- LocalPort => port(8981) ,
420
+ LocalPort => $ port ,
419
421
Proto => ' udp' ,
420
422
)
421
423
or die " Can't create listening socket: $! \n " ;
422
424
423
425
my $control = IO::Socket::INET-> new(
424
426
Proto => ' tcp' ,
425
- LocalHost => ' 127.0.0.1:' . port(8084) ,
427
+ LocalHost => ' 127.0.0.1:' . $control_port ,
426
428
Listen => 5,
427
429
Reuse => 1
428
430
)
429
431
or die " Can't create listening socket: $! \n " ;
430
432
431
- my $tcp = port(8981, socket => 1);
432
- my $sel = IO::Select-> new($socket , $control , $tcp );
433
+ my $sel = IO::Select-> new($socket , $control );
434
+ my $tcp = 0;
435
+
436
+ if ($extra {tcp }) {
437
+ $tcp = port(8982, socket => 1);
438
+ $sel -> add($tcp );
439
+ }
433
440
434
441
local $SIG {PIPE } = ' IGNORE' ;
435
442
436
443
# signal we are ready
437
444
438
- open my $fh , ' >' , $t -> testdir() . ' /' . port(8981) ;
445
+ open my $fh , ' >' , $t -> testdir() . ' /' . $ port ;
439
446
close $fh ;
440
447
my $cnt = 0;
441
448
@@ -451,12 +458,12 @@ sub dns_daemon {
451
458
$data = reply_handler($recv_data , $h , \$cnt );
452
459
$fh -> send ($data );
453
460
454
- } elsif ($fh -> sockport() == port(8084) ) {
461
+ } elsif ($fh -> sockport() == $control_port ) {
455
462
$h = process_name($fh , $cnt );
456
463
$sel -> remove($fh );
457
464
$fh -> close ;
458
465
459
- } elsif ($fh -> sockport() == port(8981) ) {
466
+ } elsif ($fh -> sockport() == $ port ) {
460
467
$fh -> recv ($recv_data , 65536);
461
468
unless (length $recv_data ) {
462
469
$sel -> remove($fh );
0 commit comments