X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=ud-fingerserv;h=17c64a7d7fde94f81282cf3c3e2f77f3ece1c563;hb=8aa87d09503dd5bd960926a4cec75736cfba951c;hp=133781a454322f24431937b376aeafe3c71a6a21;hpb=d039813ea237f2ef74b99f5bf188d64c615ec7a2;p=mirror%2Fuserdir-ldap.git diff --git a/ud-fingerserv b/ud-fingerserv index 133781a..17c64a7 100755 --- a/ud-fingerserv +++ b/ud-fingerserv @@ -1,12 +1,11 @@ #!/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. 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); @@ -28,10 +27,11 @@ my %attrs = ( '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; @@ -66,7 +66,7 @@ if (!$use_inetd) { 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 { @@ -78,7 +78,7 @@ if (!$use_inetd) { 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; } @@ -175,6 +175,7 @@ sub readdata { 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"; @@ -182,7 +183,9 @@ sub readdata { 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; }