diff --git a/src/builder/b-task.c b/src/builder/b-task.c
index 6479e20..72c35eb 100644
--- a/src/builder/b-task.c
+++ b/src/builder/b-task.c
@@ -583,7 +583,7 @@ saib_ws_json_rx_builder(struct sai_plat_server *spm, const void *in, size_t len)
if (xns->task && !strcmp(xns->task->uuid, task->uuid)) {
lwsl_err("%s: server offered task that's already running\n", __func__);
- return 0;
+ // return 0;
}
} lws_end_foreach_dll_safe(d, d1);
@@ -733,8 +733,8 @@ saib_ws_json_rx_builder(struct sai_plat_server *spm, const void *in, size_t len)
lwsac_free(&ns->task->ac_task_container);
ns->task = task; /* we are owning this nspawn for the duration */
- if (!task->build_step) {
- ns->current_step = 0;
+ ns->current_step = task->build_step;
+ if (!ns->current_step) {
ns->spins = 0;
ns->user_cancel = 0;
ns->us_cpu_user = 0;
diff --git a/src/server/s-task.c b/src/server/s-task.c
index f50986f..5236540 100644
--- a/src/server/s-task.c
+++ b/src/server/s-task.c
@@ -1106,6 +1106,7 @@ sais_continue_task(struct vhd *vhd, const char *task_uuid)
if (!p) { /* no more steps */
sais_set_task_state(vhd, NULL, NULL, task->uuid, SAIES_SUCCESS, 0, 0);
+ sais_task_stop_on_builders(vhd, task->uuid);
sais_event_db_close(vhd, &pdb);
lwsac_free(&task->ac_task_container);
free(task);
diff --git a/src/web/w-ws-browser.c b/src/web/w-ws-browser.c
index 25c3c9a..0abb878 100644
--- a/src/web/w-ws-browser.c
+++ b/src/web/w-ws-browser.c
@@ -490,8 +490,7 @@ saiw_ws_json_rx_browser(struct vhd *vhd, struct pss *pss, uint8_t *buf,
saiw_alloc_sched(pss, WSS_PREPARE_OVERVIEW);
saiw_alloc_sched(pss, WSS_PREPARE_BUILDER_SUMMARY);
- ret = 0;
- goto bail;
+ break;
}
/*
@@ -566,7 +565,7 @@ saiw_ws_json_rx_browser(struct vhd *vhd, struct pss *pss, uint8_t *buf,
saiw_websrv_queue_tx(vhd->h_ss_websrv, buf, bl);
lwsac_free(&a.ac);
- goto bail;
+ break;
case SAIM_WS_BROWSER_RX_TASKCANCEL: