Jeg sidder og har store traumer med Net::Server på Perl 5.8.0 på SuSE 8.1
Jeg har fundet og fixet to problemer:
Bug 1: (i Net::Server::Deamonize)
my $result = POSIX::setuid( $uid );
if( ! defined($result)
|| $result != $uid ){ # assuming this is true for all systems
die "Couldn't POSIX::setuid to \"$uid\" [$!]\n";
}
På mit system returnerer setuid() "0 but true" så det var relativt let
at fixe.
Bug 2: Det er umuligt at køre et eksternt program (via system()) fordi
handleren for SIGCHLD dræber serveren i Net::Server::PreForkSimple og
Net::Server::PreFork står der:
$SIG{INT} = $SIG{TERM} = $SIG{QUIT}
= $SIG{CHLD} = sub {
$self->child_finish_hook;
exit;
};
Ved at slette "= $SIG{CHLD}" virker ting som de skal igen.
Problem nummer 3 viser sig ikke på min udviklingsmaskine (SuSE 8.0 med
perl 5.6.1), men kun på live boxen (SuSE 8.1 med perl 5.8.0), det består
i at en request til serveren (via en unix socket) bare hænger, man kan
godt skrive til socketen fra klienten, men kontrollen overgår aldrig til
min process_request.
Bruger andre her Net::Server?
--
Regards Flemming Frandsen -
http://dion.swamp.dk
PartyTicket.Net co founder & Yet Another Perl Hacker