Skip to content

UpdateManager: abort HTTPS OTA handle on failure - #23

Open
jamesmulcahy wants to merge 1 commit into
NSPManager:develfrom
jamesmulcahy:fix/ota-abort-on-failure
Open

jamesmulcahy wants to merge 1 commit into
NSPManager:develfrom
jamesmulcahy:fix/ota-abort-on-failure

Conversation

@jamesmulcahy

Copy link
Copy Markdown
Contributor

Summary

In _update_firmware_ota, if esp_https_ota_get_img_desc fails, or esp_https_ota_perform returns an error (e.g. the connection drops mid-download), the function returns without releasing the OTA handle. Each failed update leaks the HTTP client, its socket, the OTA write buffer and the handle itself.

This calls esp_https_ota_abort on those two paths. The esp_https_ota_finish path is unchanged: in ESP-IDF 5.5 esp_https_ota_finish frees the handle whether it succeeds or not, so aborting there would be a double free.

Retrying after a failure already worked (esp_ota_begin only refuses the running partition), so this is a leak fix rather than a functional change.

Related: #18 touches the same failure branches (it replaces FIRMWARE_UPDATE_FINISHED with a new FIRMWARE_UPDATE_FAILED event there), so whichever merges second will need a small rebase.

🤖 Generated with Claude Code

https://claude.ai/code/session_01X7aYyRjzk53Sd7gxF46E3u

When esp_https_ota_get_img_desc or esp_https_ota_perform failed the
handle was never released, leaking the HTTP client, socket and OTA buffer
on every failed firmware update. Call esp_https_ota_abort on those paths
(esp_https_ota_finish already frees the handle itself).

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01X7aYyRjzk53Sd7gxF46E3u
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant