diff --git a/doc/backend_state.html b/doc/backend_state.html
index d67324bf84..1998346a10 100644
--- a/doc/backend_state.html
+++ b/doc/backend_state.html
@@ -152,7 +152,7 @@ file_delete_state
READY
from INIT:
scheduler: got reply and server_state = OVER
- timeout_check: all results are OVER
+ timeout_check: all results are OVER or report_deadline has passed
assimilator: all results are OVER or result is not canonical
from DONE:
scheduler: got reply and server_state = OVER
diff --git a/sched/timeout_check.C b/sched/timeout_check.C
index d2fdc20316..ac99163315 100644
--- a/sched/timeout_check.C
+++ b/sched/timeout_check.C
@@ -171,6 +171,8 @@ void handle_wu(WORKUNIT& wu) {
switch (result.server_state) {
case RESULT_SERVER_STATE_IN_PROGRESS:
if (result.report_deadline < now) {
+ // clean up any incomplete uploads
+ result.file_delete_state = FILE_DELETE_READY;
result.server_state = RESULT_SERVER_STATE_OVER;
result.outcome = RESULT_OUTCOME_NO_REPLY;
db_result_update(result);
diff --git a/todo b/todo
index e4861f9af5..f36bcfcae3 100755
--- a/todo
+++ b/todo
@@ -41,6 +41,8 @@ THINGS TO TEST (preferably with test scripts)
MEDIUM-PRIORITY (should do before public release)
-----------------------
+decide what to do with invalid result files in upload directory
+
make get_local_ip_addr() work in all cases
Implement FIFO mechanism in scheduler for results that can't be sent