version 1.17, 2006/03/09 21:38:26
|
version 1.22, 2006/12/19 17:44:16
|
Line 31
|
Line 31
|
# |
# |
|
|
use Expect; |
use Expect; |
use IPC::Open3; |
|
use IO::Select; |
use IO::Select; |
use IO::Socket; |
use IO::Socket; |
use IO::File; |
use IO::File; |
Line 52 my $pidfile; #
|
Line 51 my $pidfile; #
|
my $port; # path to UNIX socket file |
my $port; # path to UNIX socket file |
my %perlvar; # configuration file info |
my %perlvar; # configuration file info |
my $lastlog; # last string that was logged |
my $lastlog; # last string that was logged |
|
|
use vars qw($PREFORK $MAX_CLIENTS_PER_CHILD %children $children $status |
use vars qw($PREFORK $MAX_CLIENTS_PER_CHILD %children $children $status |
$pidfile $port %perlvar $lastlog); |
$pidfile $port %perlvar $lastlog); |
|
|
Line 253 sub make_new_child {
|
Line 253 sub make_new_child {
|
for (my $i=0; $i < $MAX_CLIENTS_PER_CHILD; $i++) { |
for (my $i=0; $i < $MAX_CLIENTS_PER_CHILD; $i++) { |
&status('Accepting connections'); |
&status('Accepting connections'); |
my $client = $server->accept() or last; |
my $client = $server->accept() or last; |
print $command "kill(all);reset();\n"; |
print $command "kill(all);\n"; |
&getmaximaoutput($command); |
&getmaximaoutput($command); |
|
&sync($command); |
while (my $cmd=<$client>) { |
while (my $cmd=<$client>) { |
&status('Processing command'); |
&status('Processing command'); |
print $command &unescape($cmd); |
print $command &unescape($cmd); |
Line 265 sub make_new_child {
|
Line 266 sub make_new_child {
|
$client->close(); |
$client->close(); |
$command->hard_close(); |
$command->hard_close(); |
exit; |
exit; |
} |
} |
|
&sync($command); |
&status('Waiting for commands'); |
&status('Waiting for commands'); |
} |
} |
} |
} |
Line 281 sub make_new_child {
|
Line 283 sub make_new_child {
|
} |
} |
} |
} |
|
|
|
{ |
|
my $counter; |
|
sub sync { |
|
my ($command)=@_; |
|
$counter++; |
|
my $expect=$counter.time; |
|
print $command "$expect;\n"; |
|
while (1) { |
|
my $output=&getmaximaoutput($command); |
|
if (($output=~/\Q$expect\E/) || ($output=~/^Error\:/)) { |
|
return; |
|
} |
|
} |
|
} |
|
} |
|
|
sub getmaximaoutput { |
sub getmaximaoutput { |
my ($command)=@_; |
my ($command)=@_; |
my (undef,$error,undef,$output)=$command->expect(20, -re => '\(\%i\d+\)'); |
my (undef,$error,undef,$output)=$command->expect(20, -re => '\(\%i\d+\)'); |