#!/usr/bin/perl
-# $Id: ud-fingerserv,v 1.12 1999/10/20 06:01:58 jgg Exp $
+# $Id: ud-fingerserv,v 1.14 2000/02/21 06:08:32 tausq Exp $
# (c) 1999 Randolph Chung. Licensed under the GPL. <tausq@debian.org>
use lib '/var/www/userdir-ldap/';
#use lib '/home/randolph/projects/userdir-ldap/web';
use strict vars;
-#use Apache::Registry;
use IO::Handle;
use IO::Socket;
use POSIX qw(:sys_wait_h);
'email' => 'Email',
'keyfingerprint' => 'Fingerprint',
'key' => 'Key block',
- 'ircnick' => 'IRC nickname'
+ 'ircnick' => 'IRC nickname',
+ 'labeledurl' => 'URL'
);
-my @summarykeys = ('cn', 'mn', 'sn', 'email', 'ircnick', 'keyfingerprint', 'key');
+my @summarykeys = ('cn', 'mn', 'sn', 'email', 'labeledurl', 'ircnick', 'keyfingerprint', 'key');
$SIG{__DIE__} = \&DieHandler;
$SIG{INT} = \&DieHandler;
my $hostinfo = gethostbyaddr($client->peeraddr, AF_INET);
&log(sprintf("[Connect from %s]", $hostinfo || $client->peerhost));
my $query = &readdata($client);
- &ProcessQuery($client, $query);
+ &ProcessQuery($client, $query) if (defined($query));
$client->close;
exit;
} continue {
my ($port, $addr) = unpack_sockaddr_in(getpeername(STDIN));
&log(sprintf("[Connect from %s (%s)]", gethostbyaddr($addr, AF_INET), inet_ntoa($addr)));
my $query = &readdata(\*STDIN);
- &ProcessQuery(\*STDOUT, $query);
+ &ProcessQuery(\*STDOUT, $query) if (defined($query));
exit;
}
my $in = undef;
my $out = undef;
my $bytesread = 0;
+ my $ret;
my $flags= fcntl($fh, F_GETFL, 0)
or die "Can't get flags for socket: $!\n";
or die "Can't make socket nonblocking: $!\n";
while (($bytesread < 1024) && ($out !~ /\n/)) {
- $bytesread += sysread($fh, $in, 1024);
+ $ret = sysread($fh, $in, 1024);
+ return undef if (!defined($ret) || ($ret == 0));
+ $bytesread += $ret;
$out .= $in;
}