diff options
Diffstat (limited to 'service')
| -rwxr-xr-x | service/entrypoint.sh | 2 | ||||
| -rw-r--r-- | service/src/main.c | 10 |
2 files changed, 11 insertions, 1 deletions
diff --git a/service/entrypoint.sh b/service/entrypoint.sh index 8b6f3e0..61b85e6 100755 --- a/service/entrypoint.sh +++ b/service/entrypoint.sh @@ -12,5 +12,5 @@ while [ 1 ]; do done & CMD="ncat --keep-open --listen -p 9000 --max-conns 4000 \ ---no-shutdown --wait 10s --idle-timeout 180s --exec /service/build/stldoctor" +--no-shutdown --wait 10s --exec /service/build/stldoctor" su -s /bin/sh -c "$CMD" service diff --git a/service/src/main.c b/service/src/main.c index dd8bca9..c571df9 100644 --- a/service/src/main.c +++ b/service/src/main.c @@ -5,6 +5,7 @@ #include <fcntl.h> #include <time.h> #include <errno.h> +#include <signal.h> #include <sys/stat.h> #include <sys/file.h> @@ -454,6 +455,12 @@ cleanexit() free(resultdir); } +void +timeout() +{ + die("time's up!\n"); +} + int main() { @@ -461,6 +468,9 @@ main() int exit, i, cmdlen; char *cp, *arg; + signal(SIGALRM, timeout); + alarm(3); + if (!(envstr = getenv("RESULTDIR"))) die("RESULTDIR not defined\n"); |
