X-Git-Url: http://git.ieval.ro/?p=gruntmaster-daemon.git;a=blobdiff_plain;f=lib%2FGruntmaster%2FDaemon.pm;h=a9a6d9971a52a863d765996c6ceadfdc5f0ccb25;hp=3f4e15a5f2f4acf629a0c660ee7d4228ed5d0abc;hb=d6a1ae0d77398b2a7ed967e10e8420ac7d9980e5;hpb=064332cd403d5b205c43be0dee53c55ab399e395 diff --git a/lib/Gruntmaster/Daemon.pm b/lib/Gruntmaster/Daemon.pm index 3f4e15a..a9a6d99 100644 --- a/lib/Gruntmaster/Daemon.pm +++ b/lib/Gruntmaster/Daemon.pm @@ -4,7 +4,7 @@ use 5.014000; use strict; use warnings; -our $VERSION = '5999.000_001'; +our $VERSION = '5999.000_002'; use Gruntmaster::Daemon::Constants qw/ERR/; use Gruntmaster::Daemon::Format qw/prepare_files/; @@ -23,6 +23,7 @@ use constant PAGE_SIZE => 10; ################################################## my $ua = LWP::UserAgent->new; +my @purge_hosts = exists $ENV{PURGE_HOSTS} ? split ' ', $ENV{PURGE_HOSTS} : (); sub safe_can_nodie { my ($type, $sub, $name) = @_; @@ -41,9 +42,10 @@ sub safe_can { } sub purge { - return unless $ENV{PURGE_HOST}; - my $req = HTTP::Request->new(PURGE => "http://$ENV{PURGE_HOST}$_[0]"); - $ua->request($req) + for my $host (@purge_hosts) { + my $req = HTTP::Request->new(PURGE => "http://$host$_[0]"); + $ua->request($req) + } } sub process{ @@ -56,9 +58,20 @@ sub process{ try { $meta = job_inmeta $job; if (job_problem $job) { - my $pbmeta = problem_meta job_problem $job; + local $_ = job_problem $job; + my $pbmeta = problem_meta; my %files = exists $meta->{files} ? %{$meta->{files}} : (); - $meta = {%$meta, %$pbmeta}; + $meta = { + %$meta, + problem => $_, + (defined problem_generator() ? (generator => problem_generator) : ()), + (defined problem_runner() ? (runner => problem_runner) : ()), + (defined problem_judge() ? (judge => problem_judge) : ()), + (defined problem_testcnt() ? (testcnt => problem_testcnt) : ()), + (defined problem_timeout() ? (timeout => problem_timeout) : ()), + (defined problem_olimit() ? (olimit => problem_olimit) : ()), + %$pbmeta + }; $meta->{files} = {%files, %{$pbmeta->{files}}} if exists $pbmeta->{files}; }