1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| $port = $port ? $port : 80;
my $packed_host = undef;
if ($host
!~ m[^(?:(?:(?:25[0-5]|2[0-4][0-9]|[0-1]?[0-9]{1,2})[.]?){4})$])
{ my ($name, $aliases, $addrtype, $length, @addrs)
= gethostbyname($host)
or return;
$packed_host = $addrs[0];
}
else { $packed_host = inet_aton($host) }
socket($_socket{refaddr $self},
PF_INET, SOCK_STREAM, getprotobyname(q[tcp]))
or return;
if (not($^O eq q[MSWin32]
? ioctl($_socket{refaddr $self}, 0x8004667e, pack(q[I], 1))
: fcntl($_socket{refaddr $self}, F_SETFL, O_NONBLOCK)
)
)
{ $_tier{refaddr $self}->_torrent->_event(
q[tracker_failure],
{Tracker => $self,
Reason => sprintf(
q[There was a problem making an outgoing socket non-blocking: [%d] %s],
$^E, $^E
)
}
);
return;
} |
Partager