Author: Andy Green Date: Tue Dec 01 20:17:37 2020 +0000 web: fetch urlargs by iterating diff --git a/src/builder/b-artifacts.c b/src/builder/b-artifacts.c index c040ade..99613a3 100644 --- a/src/builder/b-artifacts.c +++ b/src/builder/b-artifacts.c @@ -77,6 +77,7 @@ saib_artifact_tx(void *userobj, lws_ss_tx_ordinal_t ord, uint8_t *buf, if (ap->fd == -1) { lwsl_info("%s: completion with fd = -1\n", __func__); lws_ss_start_timeout(ap->ss, 5 * LWS_US_PER_SEC); + return LWSSSSRET_OK; } n = read(ap->fd, buf, diff --git a/src/server/s-central.c b/src/server/s-central.c index b04355e..5af8b8d 100644 --- a/src/server/s-central.c +++ b/src/server/s-central.c @@ -54,7 +54,7 @@ sais_central_clean_abandoned(struct vhd *vhd) if (!sc->refcount && (now - sc->idle_since) > (60 * LWS_USEC_PER_SEC)) { - lwsl_notice("%s: delayed db pool clean %s\n", __func__, + lwsl_info("%s: delayed db pool clean %s\n", __func__, sc->uuid); lws_struct_sq3_close(&sc->pdb); lws_dll2_remove(&sc->list); diff --git a/src/web/w-comms.c b/src/web/w-comms.c index 49f6d38..21da346 100644 --- a/src/web/w-comms.c +++ b/src/web/w-comms.c @@ -1028,31 +1028,40 @@ clean_spa: pss->specific_task[0] = '\0'; pss->specific_ref[0] = '\0'; - if (lws_get_urlarg_by_name(wsi, "h", pss->specific_ref + 9, - sizeof(pss->specific_ref) - 9)) { - memcpy(pss->specific_ref, "refs/heads/", 11); - pss->specificity = SAIM_SPECIFIC_H; - } else - if (lws_get_urlarg_by_name(wsi, "id", (char *)buf, - sizeof(buf))) { - lws_strncpy(pss->specific_ref, (const char *)buf + 3, - sizeof(pss->specific_ref)); - pss->specificity = SAIM_SPECIFIC_ID; - } else { - if (lws_get_urlarg_by_name(wsi, "task", - (char *)pss->specific_task, - sizeof(pss->specific_task))) { + + { + int r = 0; + char tbuf[96]; + while (1) { + if (lws_hdr_copy_fragment(wsi, tbuf, sizeof(tbuf), WSI_TOKEN_HTTP_URI_ARGS, r++) <0) + break; + lwsl_info("%s: '%s'\n", __func__, tbuf); + if (!strncmp(tbuf, "task=", 5)) { + lws_strncpy(pss->specific_task, tbuf + 5, sizeof(pss->specific_task)); pss->specificity = SAIM_SPECIFIC_TASK; - } else { + } + if (!strncmp(tbuf, "h=", 2)) { + memcpy(pss->specific_ref, "refs/heads/", 11); + lws_strncpy(pss->specific_ref + 11, tbuf + 2, sizeof(pss->specific_ref) - 11); pss->specificity = SAIM_SPECIFIC_H; - lws_strncpy(pss->specific_ref, - "refs/heads/master", - sizeof(pss->specific_ref)); + } + if (!strncmp(tbuf, "id=", 3)) { + memcpy(pss->specific_ref, "refs/heads/", 11); + lws_strncpy(pss->specific_ref + 11, tbuf + 3, sizeof(pss->specific_ref) - 11); + pss->specificity = SAIM_SPECIFIC_ID; } } + } + + if (!pss->specificity) { + pss->specificity = SAIM_SPECIFIC_H; + lws_strncpy(pss->specific_ref, + "refs/heads/master", + sizeof(pss->specific_ref)); + } - //lwsl_notice("%s: spec %d, '%s'\n", __func__, - // pss->specificity, pss->specific_ref); + lwsl_info("%s: spec %d, ref '%s', task '%s' \n", __func__, + pss->specificity, pss->specific_ref, pss->specific_task); break; } diff --git a/src/web/w-ws-browser.c b/src/web/w-ws-browser.c index 560412a..1ec58ba 100644 --- a/src/web/w-ws-browser.c +++ b/src/web/w-ws-browser.c @@ -302,7 +302,7 @@ saiw_pss_schedule_taskinfo(struct pss *pss, const char *task_uuid, int logsub) m += lws_snprintf(qu + m, sizeof(qu) - m, " and repo_name='%s'", esc2); } - if (pss->specific_ref[0]) { + if (pss->specific_ref[0] && pss->specificity != SAIM_SPECIFIC_TASK) { lws_sql_purify(esc2, pss->specific_ref, sizeof(esc2)); if (pss->specific_ref[0] == 'r') { /* check event ref against, eg, ref/heads/xxx */ @@ -320,7 +320,7 @@ saiw_pss_schedule_taskinfo(struct pss *pss, const char *task_uuid, int logsub) lsm_schema_sq3_map_event, &o, &sch->query_ac, 0, 1); if (n < 0 || !o.head) { - lwsl_notice("%s: no result\n", __func__); + // lwsl_notice("%s: no result\n", __func__); goto bail; }