comparison lib/Test/Nginx.pm @ 973:7d7aef8b9f3a

Tests: revert 313e3f1905d4 and set reuse properly. It is too late to use setsockopt(SO_REUSEADDR) after a socket is created as bind() happens during socket construction, and fails if there is a conflicting TIME-WAIT socket and SO_REUSEADDR is not set.
author Maxim Dounin <mdounin@mdounin.ru>
date Sun, 10 Jul 2016 18:57:12 +0300
parents 313e3f1905d4
children 6abe7be6d2c1
comparison
equal deleted inserted replaced
972:313e3f1905d4 973:7d7aef8b9f3a
328 328
329 $s_tcp = IO::Socket::INET->new( 329 $s_tcp = IO::Socket::INET->new(
330 Proto => 'tcp', 330 Proto => 'tcp',
331 LocalAddr => '127.0.0.1:' . $port, 331 LocalAddr => '127.0.0.1:' . $port,
332 Listen => 1, 332 Listen => 1,
333 Reuse => ($^O ne 'MSWin32')
333 ) and last; 334 ) and last;
334 } 335 }
335 336
336 die "Port limit exceeded" unless defined $s_tcp and defined $s_udp; 337 die "Port limit exceeded" unless defined $s_tcp and defined $s_udp;
337
338 $s_tcp->sockopt(SO_REUSEADDR, 1) if $^O ne 'MSWin32';
339 338
340 $ports{$num} = { 339 $ports{$num} = {
341 port => $port, 340 port => $port,
342 socket => $opts{udp} ? $s_tcp : $s_udp 341 socket => $opts{udp} ? $s_tcp : $s_udp
343 }; 342 };