From 8c31f313314435735e96670fde1244ce11d1fa3c Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Thu, 7 Aug 2014 14:07:17 -0400 Subject: [PATCH] LP#1042850 fail gracefully without Socket::Linux Signed-off-by: Bill Erickson --- SIPServer.pm | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/SIPServer.pm b/SIPServer.pm index fa78be9..1aba170 100755 --- a/SIPServer.pm +++ b/SIPServer.pm @@ -113,13 +113,18 @@ sub process_request { 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; -- 2.11.0