Protect MQTT publishing headroom and credit replies before disconnect

This commit is contained in:
mikecarper committed 2026-10-26 23:48:23 -07:00
1 parent 2be068cafa
commit d1a2fd74ba
11 files changed
+377 -96

No files matched your search

+15 -4
View File
@@ -67,6 +67,7 @@ def mqtt_requirements(defines):
# slots are lazy and each attempt must pass the production admission guard.
startup = MQTT_STARTUP_ALLOWANCE + max(0, worker_stack - MQTT_WORKER_STACK_BYTES)
active = min(slots, 5 if psram else 2)
publish_contiguous = 16000 if psram else 8000
potential = startup + max(0, active - 2) * (MQTT_CLIENT_STACK_BYTES + MQTT_CLIENT_BUFFER_BYTES)
return {
"budget_scope": "startup minimum with runtime connection admission",
@@ -82,18 +83,28 @@ def mqtt_requirements(defines):
"maximum_slot_stack_buffer_allowance_bytes": potential,
"cold_start_allocation_allowance_bytes": 16384,
"cold_start_dma_admission_free_bytes": 32768,
"cold_start_dma_admission_contiguous_bytes": 8192,
"cold_start_dma_admission_contiguous_bytes": max(publish_contiguous, 8192),
"additional_broker_cold_start_dma_admission_contiguous_bytes": publish_contiguous + 16384,
"restart_allocation_allowance_bytes": 8192,
"restart_dma_admission_free_bytes": 24576,
"restart_dma_admission_contiguous_bytes": 8192,
"restart_dma_admission_contiguous_bytes": max(publish_contiguous, 8192),
"additional_broker_restart_dma_admission_contiguous_bytes": publish_contiguous + 8192,
"dma_admission_free_bytes": 16384,
"dma_admission_contiguous_bytes": 4096,
"dma_admission_contiguous_bytes": publish_contiguous,
"publish_contiguous_bytes": publish_contiguous,
"publish_contiguous_without_psram_bytes": 8000,
"publish_contiguous_with_psram_bytes": 16000,
"tls_internal_admission_free_bytes": 61440,
"tls_record_allocation_bytes": 17408,
"additional_broker_cold_start_tls_internal_admission_contiguous_bytes": 8000 + 16384 + 17408,
"additional_broker_restart_tls_internal_admission_contiguous_bytes": 8000 + 8192 + 17408,
"tls_internal_admission_contiguous_bytes": 17408,
"additional_broker_tls_internal_admission_contiguous_bytes": 8000 + 17408,
"maximum_runtime_load_qualified": False,
"physical_validation_performed": False,
"limitations": "Maximum TLS/WSS/outbox workload is not covered by the startup allowance; "
"runtime free DMA heap and fragmentation must satisfy connection admission.",
"runtime free DMA heap and fragmentation must satisfy connection admission; "
"additional brokers reserve publication headroom beside startup allocations.",
}