Project homepage Mailing List  Warmcat.com  API Docs  Github Mirror 
    npro  
 Modern all-safe Rust Network Protocol library supporting h1, h2, h3, ws, wt sans-IO and with socket IO + tls
git clone https://npro.rs/repo/npro
 
root / src / virt / CMakeLists.txt
Author[]Andy Green <andy@warmcat.com> 2025-08-06 07:01 UTC
Committer[]Andy Green <andy@warmcat.com> 2025-08-06 07:03 UTC
Treea5a390c3bf71fe6f4fc2a7da95aa459b4f1e62db   Raw Patch
 
server: fix mangled continuation
server: fix mangled continuation
diff --git a/assets/sai.css b/assets/sai.css index fc433c8..05fd1d7 100644 --- a/assets/sai.css +++ b/assets/sai.css @@ -751,7 +751,7 @@ img.branch { .inst_idle { border-color: #555; - opacity: 0.5; /* Make idle instances semi-transparent */ + opacity: 0.3; /* Make idle instances semi-transparent */ transition: opacity 0.3s; /* Smoothly fade in/out */ } diff --git a/src/builder/b-private.h b/src/builder/b-private.h index fbc81f7..e1b15a2 100644 --- a/src/builder/b-private.h +++ b/src/builder/b-private.h @@ -39,7 +39,7 @@ #include <pthread.h> #include <git2.h> -#define SAI_LOAD_REPORT_US (5 * LWS_US_PER_SEC) +#define SAI_LOAD_REPORT_US (1 * LWS_US_PER_SEC) #define SAI_IDLE_GRACE_US (30 * LWS_US_PER_SEC) #define SAI_STAY_POLL_US (20 * LWS_US_PER_SEC) diff --git a/src/server/s-comms.c b/src/server/s-comms.c index 51c86fe..01e1be1 100644 --- a/src/server/s-comms.c +++ b/src/server/s-comms.c @@ -812,50 +812,6 @@ callback_ws(struct lws *wsi, enum lws_callback_reasons reason, void *user, break; } - if (pss->is_power) { - char diff = 0; - - n = 0; - lws_start_foreach_dll(struct lws_dll2 *, px, vhd->pending_plats.head) { - sais_plat_t *pl = lws_container_of(px, sais_plat_t, list); - size_t m; - - if (n) - *p++ = ','; - m = strlen(pl->plat); - if (lws_ptr_diff_size_t(end, p) < m + 2) - break; - memcpy(p, pl->plat, m); - p += m; - *p = '\0'; - n = 1; - - } lws_end_foreach_dll(px); - - /* - * Don't resend the same status over and over - */ - - if (memcmp(pss->last_power_report, start, lws_ptr_diff_size_t(p, start) + 1)) { - diff = 1; - memcpy(pss->last_power_report, start, lws_ptr_diff_size_t(p, start) + 1); - } - - if (diff && start != p) { - lwsl_notice("%s: detected jobs for %.*s\n", __func__, - (int)lws_ptr_diff_size_t(p, start), start); - - if (lws_write(pss->wsi, start, lws_ptr_diff_size_t(p, start), - LWS_WRITE_TEXT) < 0) - return -1; - - lws_callback_on_writable(pss->wsi); - - goto passthru; - } - break; - } - return sais_ws_json_tx_builder(vhd, pss, buf, sizeof(buf)); default: diff --git a/src/server/s-ws-builder.c b/src/server/s-ws-builder.c index a44f309..f88a571 100644 --- a/src/server/s-ws-builder.c +++ b/src/server/s-ws-builder.c @@ -837,7 +837,7 @@ sais_ws_json_tx_builder(struct vhd *vhd, struct pss *pss, uint8_t *buf, size_t bl) { uint8_t *start = buf + LWS_PRE, *p = start, *end = p + bl - LWS_PRE - 1; - int n, flags = LWS_WRITE_TEXT, first = 0; + int n, flags = LWS_WRITE_TEXT, first = 1; lws_struct_serialize_t *js; sai_task_t *task; size_t w; @@ -874,8 +874,6 @@ sais_ws_json_tx_builder(struct vhd *vhd, struct pss *pss, uint8_t *buf, /* And free the memory */ free(vs); - first = 1; - /* * If there are more viewer state messages, or other messages, * * request another writeable callback. @@ -930,6 +928,50 @@ sais_ws_json_tx_builder(struct vhd *vhd, struct pss *pss, uint8_t *buf, goto send_json; } + if (pss->is_power) { + char diff = 0; + + n = 0; + lws_start_foreach_dll(struct lws_dll2 *, px, vhd->pending_plats.head) { + sais_plat_t *pl = lws_container_of(px, sais_plat_t, list); + size_t m; + + if (n) + *p++ = ','; + m = strlen(pl->plat); + if (lws_ptr_diff_size_t(end, p) < m + 2) + break; + memcpy(p, pl->plat, m); + p += m; + *p = '\0'; + n = 1; + + } lws_end_foreach_dll(px); + + /* + * Don't resend the same status over and over + */ + + if (memcmp(pss->last_power_report, start, lws_ptr_diff_size_t(p, start) + 1)) { + diff = 1; + memcpy(pss->last_power_report, start, lws_ptr_diff_size_t(p, start) + 1); + } + + if (diff && start != p) { + lwsl_notice("%s: detected jobs for %.*s\n", __func__, + (int)lws_ptr_diff_size_t(p, start), start); + + if (lws_write(pss->wsi, start, lws_ptr_diff_size_t(p, start), + LWS_WRITE_TEXT) < 0) + return -1; + + lws_callback_on_writable(pss->wsi); + + return 0; + } + } + + if (!pss->issue_task_owner.count) return 0; /* nothing to send */ @@ -970,7 +1012,7 @@ send_json: return 0; } - flags = lws_write_ws_flags(LWS_WRITE_TEXT, first, !pss->walk); + flags = lws_write_ws_flags(LWS_WRITE_TEXT, first, 1); // lwsl_hexdump_notice(start, p - start);
Page fetched 0s ago, creation time: 4ms (vhost etag hits: 0%, cache hits: 0%)