修复了WS连接稳定性问题

This commit is contained in:
CSBOOK\44744
2026-06-27 20:29:09 +08:00
parent b829cd8ebc
commit caa4a7eded
16 changed files with 2197 additions and 248 deletions
@@ -139,7 +139,7 @@ static const domain_expression_catalog_entry_t s_expression_catalog[] = {
.priority = 100,
.interrupt_current = true,
.return_to_idle = true,
.asset_dir = "server_error",
.asset_dir = "jichubiaoqing",
.frame_order = s_server_error_frame_order,
.frame_order_count = sizeof(s_server_error_frame_order) / sizeof(s_server_error_frame_order[0]),
.repeat_count = 5,
@@ -867,43 +867,51 @@ static esp_err_t load_legacy_auth_state(void *out, size_t out_len, size_t *out_l
return ESP_ERR_INVALID_SIZE;
}
domain_auth_state_legacy_blob_t state = {0};
domain_auth_state_legacy_blob_t *state = calloc(1, sizeof(*state));
if (state == NULL) {
return ESP_ERR_NO_MEM;
}
bool found_any = false;
size_t jwt_len = 0U;
esp_err_t err = platform_storage_get_string(DOMAIN_AUTH_STATE_STORE_NAMESPACE,
DOMAIN_AUTH_LEGACY_STATE_JWT_KEY,
state.jwt,
sizeof(state.jwt),
state->jwt,
sizeof(state->jwt),
&jwt_len);
if (err == ESP_OK) {
found_any = true;
state.jwt_valid = jwt_len > 1U && state.jwt[0] != '\0';
state->jwt_valid = jwt_len > 1U && state->jwt[0] != '\0';
} else if (err != ESP_ERR_NOT_FOUND) {
free(state);
return err;
}
err = storage_get_optional_u64(DOMAIN_AUTH_STATE_STORE_NAMESPACE,
DOMAIN_AUTH_LEGACY_STATE_EXP_KEY,
&state.exp_epoch_s,
&state->exp_epoch_s,
&found_any);
if (err != ESP_OK) {
free(state);
return err;
}
err = storage_get_optional_u32(DOMAIN_AUTH_STATE_STORE_NAMESPACE,
DOMAIN_AUTH_LEGACY_STATE_SCOPE_KEY,
&state.scope_mask,
&state->scope_mask,
&found_any);
if (err != ESP_OK) {
free(state);
return err;
}
err = storage_get_optional_u32(DOMAIN_AUTH_STATE_STORE_NAMESPACE,
DOMAIN_AUTH_LEGACY_STATE_KEY_VERSION_KEY,
&state.key_version,
&state->key_version,
&found_any);
if (err != ESP_OK) {
free(state);
return err;
}
@@ -913,34 +921,39 @@ static esp_err_t load_legacy_auth_state(void *out, size_t out_len, size_t *out_l
&wait_factory,
&found_any);
if (err != ESP_OK) {
free(state);
return err;
}
state.wait_factory_persisted = wait_factory != 0U;
state->wait_factory_persisted = wait_factory != 0U;
err = storage_get_optional_u32(DOMAIN_AUTH_STATE_STORE_NAMESPACE,
DOMAIN_AUTH_LEGACY_STATE_FAIL_COUNT_KEY,
&state.fail_count,
&state->fail_count,
&found_any);
if (err != ESP_OK) {
free(state);
return err;
}
err = storage_get_optional_u64(DOMAIN_AUTH_STATE_STORE_NAMESPACE,
DOMAIN_AUTH_LEGACY_STATE_NEXT_RETRY_KEY,
&state.next_retry_epoch_s,
&state->next_retry_epoch_s,
&found_any);
if (err != ESP_OK) {
free(state);
return err;
}
if (!found_any) {
free(state);
return ESP_ERR_NOT_FOUND;
}
memcpy(out, &state, sizeof(state));
memcpy(out, state, sizeof(*state));
if (out_len_actual != NULL) {
*out_len_actual = sizeof(state);
*out_len_actual = sizeof(*state);
}
free(state);
return ESP_OK;
}