mirror of
https://github.com/mikecarper/MeshCore.git
synced 2026-10-22 10:32:31 +00:00
Support atomic two-packet signed fleet commands
Automatically split longer signed envelopes into two bounded group-data packets, reserve both before queueing, and roll back exact packet copies and retries on admission failure. Collect fragments in either order with a fixed deadline and verify the complete command before durable replay reservation and dispatch. Raise whole-fleet protocol capacity to 230 bytes, preserve target-specific budgets and radio acknowledgement barriers, and reject rule-token and USB rescue-line truncation. Document existing app input limits and add real-signature, sanitizer, queue failure, timeout, replay, and compact-board regressions.
This commit is contained in:
1 parent
d74a0f8b44
commit
fdad79eaf7
18 files changed
+1649
-143
No files matched your search
@@ -1275,12 +1275,12 @@ void FloodRuleEngine::set(const char* args, char* reply,
|
||||
}
|
||||
}
|
||||
cursor = skipSpaces(cursor);
|
||||
if (strlen(cursor) >= 192) {
|
||||
char params[256];
|
||||
if (strlen(cursor) >= sizeof(params)) {
|
||||
copyString(reply, "Err - rule parameters too long", 160);
|
||||
return;
|
||||
}
|
||||
|
||||
char params[192];
|
||||
copyString(params, cursor, sizeof(params));
|
||||
char* tokens[18];
|
||||
int token_count = 0;
|
||||
@@ -1564,9 +1564,12 @@ void FloodRuleEngine::set(const char* args, char* reply,
|
||||
}
|
||||
bool compact = asciiStartsWith(tokens[i], "q=");
|
||||
char rate_text[24];
|
||||
copyString(rate_text,
|
||||
tokens[i] + (compact ? 2 : strlen("rate=")),
|
||||
sizeof(rate_text));
|
||||
const char* value = tokens[i] + (compact ? 2 : strlen("rate="));
|
||||
if (strlen(value) >= sizeof(rate_text)) {
|
||||
copyString(reply, "Err - rate value too long", 160);
|
||||
return;
|
||||
}
|
||||
copyString(rate_text, value, sizeof(rate_text));
|
||||
char* slash = strchr(rate_text, '/');
|
||||
if ((!compact && slash == NULL)
|
||||
|| (slash != NULL && !(strcmp(slash, "/min") == 0
|
||||
|
||||
Reference in new issue
Block a user