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 / assets / builder-instance.png
Author[]Andy Green <andy@warmcat.com> 2025-08-05 04:07 UTC
Committer[]Andy Green <andy@warmcat.com> 2025-08-05 04:07 UTC
Tree2d83a23f40a16fb468cf593f0d2d8df3c473e744   Raw Patch
 
server: only send initial and changes to power
server: only send initial and changes to power
diff --git a/src/server/s-comms.c b/src/server/s-comms.c index d071c44..c72ce27 100644 --- a/src/server/s-comms.c +++ b/src/server/s-comms.c @@ -810,6 +810,8 @@ callback_ws(struct lws *wsi, enum lws_callback_reasons reason, void *user, } 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); @@ -822,17 +824,30 @@ callback_ws(struct lws *wsi, enum lws_callback_reasons reason, void *user, break; memcpy(p, pl->plat, m); p += m; + *p = '\0'; n = 1; } lws_end_foreach_dll(px); - lwsl_notice("%s: detected jobs for %.*s\n", __func__, - (int)lws_ptr_diff_size_t(p, start), start); + /* + * Don't resend the same status over and over + */ - if (lws_write(pss->wsi, start, lws_ptr_diff_size_t(p, start), - LWS_WRITE_TEXT) < 0) - return -1; + 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; + + goto passthru; + } break; } diff --git a/src/server/s-private.h b/src/server/s-private.h index 9db8a61..1afe772 100644 --- a/src/server/s-private.h +++ b/src/server/s-private.h @@ -126,6 +126,7 @@ struct pss { struct lwsac *ac_alloc_task; char peer_ip[48]; + char last_power_report[8192]; int task_index; int log_cache_index;
Page fetched 0s ago, creation time: 2ms (vhost etag hits: 0%, cache hits: 0%)