flush STDOUT
[virtual-ldap] / bin / ldap-koha.pl
index d50ebbc..640f062 100755 (executable)
@@ -8,16 +8,27 @@ use IO::Socket;
 use lib 'lib';
 use LDAP::Koha;
 
-my $port = 2389;
+my $debug = $ENV{DEBUG} || 0;
+$|=1;
+
+BEGIN {
+       $SIG{'__WARN__'} = sub {
+               my $level = $1 if $_[0] =~ m/^(#+)/;
+               return if defined($level) && length($level) > $debug;
+
+               warn join("\n", @_);
+       };
+}
+my $listen = shift @ARGV || 'localhost:2389';
 
 my $sock = IO::Socket::INET->new(
        Listen => 5,
        Proto => 'tcp',
        Reuse => 1,
-       LocalPort => $port,
-) || die;
+       LocalAddr => $listen,
+) || die "can't listen to $listen $!";
 
-warn "# listening on $port";
+warn "# listening on $listen";
 
 my $sel = IO::Select->new($sock);
 my %Handlers;
@@ -26,6 +37,7 @@ while (my @ready = $sel->can_read) {
                if ($fh == $sock) {
                        # let's create a new socket
                        my $psock = $sock->accept;
+                       $psock->sockopt(SO_KEEPALIVE,1);
                        $sel->add($psock);
                        $Handlers{*$psock} = LDAP::Koha->new($psock);
                } else {