my ($sockaddr, $port, $proto);
my $transport;
- eval { # If it fails ... oh well
- use Socket::Linux qw(TCP_KEEPINTVL TCP_KEEPIDLE TCP_KEEPCNT);
- setsockopt($self->{server}->{client}, SOL_SOCKET, SO_KEEPALIVE, 1);
- setsockopt($self->{server}->{client}, IPPROTO_TCP, TCP_KEEPALIVE, 1);
- setsockopt($self->{server}->{client}, IPPROTO_TCP, TCP_KEEPIDLE, 120);
- setsockopt($self->{server}->{client}, IPPROTO_TCP, TCP_KEEPINTVL, 10);
- };
+ # This is kind of kinky, but allows us to avoid requiring Socket::Linux.
+ # A simple "Socket::Linux"->use won't suffice since we need access to
+ # all of it's bareword constants as well.
+ eval <<' EVAL';
+ use Socket::Linux qw(TCP_KEEPINTVL TCP_KEEPIDLE TCP_KEEPCNT);
+ setsockopt($self->{server}->{client}, SOL_SOCKET, SO_KEEPALIVE, 1);
+ setsockopt($self->{server}->{client}, IPPROTO_TCP, TCP_KEEPIDLE, 120);
+ setsockopt($self->{server}->{client}, IPPROTO_TCP, TCP_KEEPINTVL, 10);
+ EVAL
+
+ syslog('LOG_DEBUG',
+ "Consider installing Socket::Linux for TCP keepalive: $@") if $@;
$self->{account} = undef; # New connection, no need to keep login info
$self->{config} = $config;