Skip to content

Commit 8b7fd31

Browse files
authored
Judgedaemon gather extensions based on domserver config (#2130)
* Base file extensions in judgedaemon on language config in domserver We still had the .C extension here which has been removed from the domserver for quite a while. The old values are kept if some languages are not available in the API of the domserver. * Don't update config for every internal fetched
1 parent 5e32eed commit 8b7fd31

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

judge/judgedaemon.main.php

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,7 @@ function fetch_executable_internal(
327327
$execid,
328328
$hash
329329
]);
330+
global $langexts;
330331
$execdeploypath = $execdir . '/.deployed';
331332
$execbuilddir = $execdir . '/build';
332333
$execbuildpath = $execbuilddir . '/build';
@@ -379,12 +380,6 @@ function fetch_executable_internal(
379380
$do_compile = false;
380381
} else {
381382
// detect lang and write build file
382-
$langexts = [
383-
'c' => ['c'],
384-
'cpp' => ['cpp', 'C', 'cc'],
385-
'java' => ['java'],
386-
'py' => ['py'],
387-
];
388383
$buildscript = "#!/bin/sh\n\n";
389384
$execlang = false;
390385
$source = "";
@@ -642,6 +637,21 @@ function fetch_executable_internal(
642637
// Populate the DOMjudge configuration initially
643638
djconfig_refresh();
644639

640+
// Prepopulate default language extensions, afterwards update based on domserver config
641+
$langexts = [
642+
'c' => ['c'],
643+
'cpp' => ['cpp', 'C', 'cc'],
644+
'java' => ['java'],
645+
'py' => ['py'],
646+
];
647+
$domserver_languages = dj_json_decode(request('languages', 'GET'));
648+
foreach ($domserver_languages as $language) {
649+
$id = $language['id'];
650+
if (key_exists($id, $langexts)) {
651+
$langexts[$id] = $language['extensions'];
652+
}
653+
}
654+
645655
// Constantly check API for unjudged submissions
646656
$endpointIDs = array_keys($endpoints);
647657
$currentEndpoint = 0;

0 commit comments

Comments
 (0)