diff --git a/packages/hydrooj/package.json b/packages/hydrooj/package.json index e050b7d87..80ec15802 100644 --- a/packages/hydrooj/package.json +++ b/packages/hydrooj/package.json @@ -1,6 +1,6 @@ { "name": "hydrooj", - "version": "2.35.1", + "version": "2.35.2", "bin": "bin/hydrooj.js", "main": "src/loader", "module": "src/loader", diff --git a/packages/hydrooj/src/handler/record.ts b/packages/hydrooj/src/handler/record.ts index c62d4387b..4ebc73544 100644 --- a/packages/hydrooj/src/handler/record.ts +++ b/packages/hydrooj/src/handler/record.ts @@ -234,7 +234,7 @@ class RecordMainConnectionHandler extends ConnectionHandler { if (!this.all && !this.pretest && rdoc.input) return; if (!this.all && rdoc.domainId !== this.domainId) return; if (!this.all && rdoc.contest && rdoc.contest.tid.toString() !== this.tid) return; - if (!this.all && rdoc.pid !== this.pid) return; + if (!this.all && this.pid && rdoc.pid !== this.pid) return; if (this.uid && rdoc.uid !== this.uid) return; // eslint-disable-next-line prefer-const diff --git a/packages/vjudge/package.json b/packages/vjudge/package.json index 265ad6be5..ec6d1044d 100644 --- a/packages/vjudge/package.json +++ b/packages/vjudge/package.json @@ -1,6 +1,6 @@ { "name": "@hydrooj/vjudge", - "version": "1.3.0", + "version": "1.3.1", "description": "Submit problems to remote oj", "main": "package.json", "repository": "https://github.com/hydro-dev/Hydro.git", diff --git a/packages/vjudge/src/model.ts b/packages/vjudge/src/model.ts index e33460b7b..29365390e 100644 --- a/packages/vjudge/src/model.ts +++ b/packages/vjudge/src/model.ts @@ -30,10 +30,14 @@ class Service { const next = (payload) => Judge.next({ ...payload, rid: task.rid }); const end = (payload) => Judge.end({ ...payload, rid: task.rid }); await next({ status: STATUS.STATUS_FETCHED }); - const rid = await this.api.submitProblem(task.target, task.lang, task.code, task, next, end); - if (!rid) return; - await next({ status: STATUS.STATUS_JUDGING }); - await this.api.waitForSubmission(rid, next, end); + try { + const rid = await this.api.submitProblem(task.target, task.lang, task.code, task, next, end); + if (!rid) return; + await next({ status: STATUS.STATUS_JUDGING }); + await this.api.waitForSubmission(rid, next, end); + } catch (e) { + end({ status: STATUS.STATUS_SYSTEM_ERROR, message: e.message }); + } } async sync(domainId: string, resync = false) {